Seite 1 von 1

Tabelle gibt Fehler aus nach Nutzung von \multicolumn

Verfasst: Sa 15. Jun 2019, 21:20
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:
\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!

Verfasst: Sa 15. Jun 2019, 21:57
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:
\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}

Verfasst: Sa 15. Jun 2019, 22:18
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.

Verfasst: Sa 15. Jun 2019, 22:22
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:
\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:
\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!

Verfasst: So 16. Jun 2019, 01:32
von esdd
\begin{tabular}{|*{2}{>{\centering}p{2.5cm}|}*{2}{>{\centering}p{5cm}|}} 
Die Spaltendefinition beginnt mit der vertikalen Linie |. Mit
*{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
p{2.5cm}|p{2.5cm}|
Analog definiert
*{2}{p{5cm}|}
dann noch 2 aufeinanderfolgende p-Spalten der Breite 5cm, die ebenfalls jeweils von einer vertikalen Linie gefolgt werden.

Mit
>{\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:
\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}

Verfasst: So 16. Jun 2019, 12:16
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!