Tabelle gibt Fehler aus nach Nutzung von \multicolumn

Tabellen und Grafiken erstellen und anordnen


GiFi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Sa 15. Jun 2019, 20:13

Tabelle gibt Fehler aus nach Nutzung von \multicolumn

Beitrag von GiFi »

Hallo zusammen!

Ich habe doch mal eine Frage, die ich bislang noch nicht gelöst habe.

Versuche ich die sechste Zeile einzufügen, kommt folgender Fehler:
! Extra alignment tab has been changed to \cr.
<template> ...rayrulewidth \endgroup \endtemplate

Versuche ich alternativ die siebte Zeile einzufügen (\hline), kommt folgender Fehler:
! Misplaced \omit. \multispan ->\omit \@multispan


Mein exemplarischer, reduzierter Code lautet wie folgt:

Code: Alles auswählen

\documentclass{scrartcl} 
\usepackage{array} 

\begin{document} 
\begin{tabular}{|p{2.5cm}|p{2.5cm}|p{5cm}|p{5cm}|}
\hline
\multicolumn{2}{|l|}{\textbf{Kategorie 1:}} & \multicolumn{2}{c|}{Anzahl} \\
\hline
\centering{Nr. \newline (Verfahren 1)} & \centering{Nr. (Verfahren 2)} & \centering{Verfahren 1} & \centering{Verfahren 2} \\
%\centering{Nr. \newline (Verfahren 3)} & \centering{Nr. (Verfahren 4)} & \centering{Verfahren 3} & \centering{Verfahren 4} \\ % Zeile 6
%\hline % Zeile 7 
\end{tabular}

\end{document}

Vielen Dank für Hilfe!
Zuletzt geändert von GiFi am Do 20. Jun 2019, 21:01, insgesamt 3-mal geändert.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2480
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Kannst Du bitte Deinen Code so ändern, dass er lauffähig ist: siehe Minimalbeispiel
Dann haben wir eine Chance Dein Problem zu reproduzieren.

\centering ist übrigens ein Schalter und erwartet kein Argument.

Eventuell hilft Dir auch schon:

Code: Alles auswählen

\documentclass{scrartcl}
\usepackage{array}
\begin{document}

\begin{tabular}{|*{2}{>{\centering}p{2.5cm}|}*{2}{>{\centering}p{5cm}|}} 
\hline 
\multicolumn{2}{|l|}{\textbf{Kategorie 1:}} & \multicolumn{2}{c|}{Anzahl} \\ 
\hline 
Nr. \\ (Verfahren 1) & Nr. (Verfahren 2) & Verfahren 1 & Verfahren 2 \tabularnewline
Nr. \\ (Verfahren 3) & Nr. (Verfahren 4) & Verfahren 3 & Verfahren 4 \tabularnewline
\hline
\end{tabular} 
\end{document}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2118
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

@GiFi

\centering ändert das Verhalten des Makros \\, d. h. falls der Schalter in der letzten Spalte benutzt wird, ist außerdem noch der Befehl \arraybackslash des Pakets array zu ergänzen.

GiFi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Sa 15. Jun 2019, 20:13

Beitrag von GiFi »

Ja, natürlich, ich bin neu hier im Forum und war mir nicht ganz sicher, wie ich Alles richtig mache, also bitte Nachsicht, ich gebe mir alle Mühe, zumal ich allen mathematischen Teil, Grafiken etc. schon eingepflegt habe, das Layout macht mir echt Mühe.


Ich würde es gerne ganz verstehen, daher frage ich nochmal nach: \centering kann ich also bereits oben verwenden und muss nicht jeweils vor das Argument gesetzt werden? Ansonsten könnte man, soweit ich weiß, auch noch:
\begin{center} Text \end{center} nutzen, oder?
Dazu bereits eine Frage: Wie bekomme ich noch die Texte: "Verfahren 1",..., "Verfahren 4" auch vertikal zentriert? Dazu haben meine Versuche leider auch noch nichts ergeben, was das gewünschte Ergebnis erzielt.

Das Beispiel hilft mir auf jeden Fall weiter, da es lauffähig ist, ich möchte gern dennoch ein paar Rückfragen stellen, um es vollständig zu verstehen, denn die Tabelle wird recht groß und verschachtelt, damit ich dann gut weiter komme - ich bedanke mich schon einmal für die rasche, gute Hilfe.

Mir ist noch nicht klar, wieso es bei mir die Probleme gab.
Wann genau verwende ich: \tabularnewline und wann: \\ ? Ich habe bislang immer mit Letzterem gearbeitet.


Zu guter Letzt bedarf es mir noch einer Erläuterung, was genau Alles in folgender Anweisung steckt:

Code: Alles auswählen

\begin{tabular}{|*{2}{>{\centering}p{2.5cm}|}*{2}{>{\centering}p{5cm}|}} 
Ich versuche mich mal: Die erste Spalte ist linksbündig, "*{2}" kann ich noch nicht deuten, genauso wenig wie ">", die zweite Spalte ist dann zentriert mit Breite 2.5 (und automatischen Umbrüchen).

@Bartman: D.h. ansonsten kann ich das "\\" nicht nutzen bzw. die Bedeutung ändert sich?

Danke für den Hinweis: ich hätte lediglich das "\\" durch "tabularnewline" ersetzen müssen, dann läuft Alles.

Mein Code sieht also so aus:

Code: Alles auswählen

\documentclass{scrartcl} 
\usepackage{array} 

\begin{document} 
\begin{tabular}{|p{2.5cm}|p{2.5cm}|p{5cm}|p{5cm}|} 
\hline 
\multicolumn{2}{|l|}{\textbf{Kategorie 1:}} & \multicolumn{2}{c|}{Anzahl} \\ 
\hline 
\centering{Nr. \newline (Verfahren 1)} & \centering{Nr. (Verfahren 2)} & \centering{Verfahren 1} & \centering{Verfahren 2} \tabularnewline 
\hline
\centering{Nr. \newline (Verfahren 3)} & \centering{Nr. (Verfahren 4)} & \centering{Verfahren 3} & \centering{Verfahren 4} \\ % Zeile 6 
\end{tabular} 
\end{document} 
Danke!

esdd
Forum-Meister
Forum-Meister
Beiträge: 2480
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Code: Alles auswählen

\begin{tabular}{|*{2}{>{\centering}p{2.5cm}|}*{2}{>{\centering}p{5cm}|}} 
Die Spaltendefinition beginnt mit der vertikalen Linie |. Mit

Code: Alles auswählen

*{2}{p{2.5cm}|}
werden 2 aufeinanderfolgende p-Spalten der Breite 2.5cm definiert, die jeweils von einer vertikalen Linie gefolgt werden. Das ist also eine Abkürzung für

Code: Alles auswählen

p{2.5cm}|p{2.5cm}|
Analog definiert

Code: Alles auswählen

*{2}{p{5cm}|}
dann noch 2 aufeinanderfolgende p-Spalten der Breite 5cm, die ebenfalls jeweils von einer vertikalen Linie gefolgt werden.

Mit

Code: Alles auswählen

>{\centering}{p{2.5cm}}
wird zu Beginn jeder Zelle in der Spalte die Anweisung \centering eingefügt. Dafür wird das Paket array benötigt.

In der letzten Zelle einer Zeile musst Du nach \centering noch \arraybackslash einfügen oder Du beendest die Zeilen einfach immer mit \tabularnewline statt \\.

Wenn die Zellen vertikal zentriert werden sollen, dann ersetze alle p-Spalten durch m-Spalten:

Code: Alles auswählen

\documentclass{scrartcl}
\usepackage{array}
\begin{document}

\begin{tabular}{|*{2}{>{\centering}m{2.5cm}|}*{2}{>{\centering}m{5cm}|}} 
\hline 
\multicolumn{2}{|l|}{\textbf{Kategorie 1:}} & \multicolumn{2}{c|}{Anzahl} \\ 
\hline 
Nr. \\ (Verfahren 1) & Nr. (Verfahren 2) & Verfahren 1 & Verfahren 2 \tabularnewline
Nr. \\ (Verfahren 3) & Nr. (Verfahren 4) & Verfahren 3 & Verfahren 4 \tabularnewline
\hline
\end{tabular} 
\end{document}

GiFi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Sa 15. Jun 2019, 20:13

Beitrag von GiFi »

Vielen Dank für die ausführlichen Erläuterungen, jetzt ist mir Alles soweit klar und es läuft Alles.
Aus irgendeinem Grund haben die m- Spalten bei mir nicht funktioniert, jetzt tun sie dies aber.

Damit die Überschriften alle gleich hoch skaliert werden, habe ich "\newline" verwendet, statt dem Umbruch "\\", denn ansonsten waren die Überschriften versetzt, aber auch das funktioniert jetzt super mit "\newline". Es lag tatsächlich an dem Schalter, der das Verhalten von "\\" ändert.


Danke für die rasche, gelungene Hilfe!

Antworten