![Falsch platziertes \noalign beim Zentrieren einer tabularx-Zelle](https://rvso.com/image/390900/Falsch%20platziertes%20%5Cnoalign%20beim%20Zentrieren%20einer%20tabularx-Zelle.png)
Ich habe ein minimales LaTeX-Dokument wie dieses:
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{ X | X }
\centering A & B \\ \hline
1.0 & 2.0 \\
\end{tabularx}
\end{document}
Ich möchte die Tabellenüberschriften zentrieren, die Spalten jedoch linksbündig ausrichten. Wenn ich jedoch \centering
die Überschrift B wie folgt ergänze:
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{ X | X }
\centering A & \centering B \\ \hline
1.0 & 2.0 \\
\end{tabularx}
\end{document}
Ich erhalte diesen Fehler:
! Misplaced \noalign.
\hline ->\noalign
{\ifnum 0=`}\fi \hrule \@height \arrayrulewidth \futurelet...
l.8 \end{tabularx}
! Extra alignment tab has been changed to \cr.
<recently read> \endtemplate
l.8 \end{tabularx}
! Misplaced \noalign.
\hline ->\noalign
{\ifnum 0=`}\fi \hrule \@height \arrayrulewidth \futurelet...
l.8 \end{tabularx}
! Extra alignment tab has been changed to \cr.
<recently read> \endtemplate
l.8 \end{tabularx}
! Misplaced \noalign.
\hline ->\noalign
{\ifnum 0=`}\fi \hrule \@height \arrayrulewidth \futurelet...
l.8 \end{tabularx}
! Extra alignment tab has been changed to \cr.
<recently read> \endtemplate
l.8 \end{tabularx}
Antwort1
Auf Seite 2 der Dokumentation steht, dass Sie after (oder oder ) tabularx
verwenden müssen . Verwenden Sie es folgendermaßen:\arraybackslash
\centering
\raggedright
\ragggedleft
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{ X | X }
\centering\arraybackslash A & \centering\arraybackslash B \\ \hline
1.0 & 2.0 \\
\end{tabularx}
\end{document}
Die Textausrichtungsbefehle von LaTeX werden neu definiert \\
, sodass sie nicht mehr „eine neue Zeile in der Tabelle“ bedeuten. Der \arraybackslash
Befehl wird \let\\\tabularnewline
neu definiert, damit er wieder funktioniert.
Alternativ können Sie am Ende der ersten Zeile \tabularnewline
anstelle von verwenden.\\
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{ X | X }
\centering A & \centering B \tabularnewline \hline
1.0 & 2.0 \\
\end{tabularx}
\end{document}
Antwort2
\multicolumn{1}{c}{...}
Sie können einfach a für die Spaltenüberschriften verwenden . Oder laden makecell
und verwenden Sie dessen thead
Befehl (standardmäßig wird sein Inhalt horizontal und vertikal zentriert), der die Möglichkeit bietet, eine gemeinsame Formatierung aller thead
s-Argumente zu definieren. Hier ist ein Beispiel für beide Methoden:
\documentclass{article}
\usepackage{tabularx, makecell, xcolor}
\renewcommand{\theadfont}{\normalsize\bfseries\color{red}}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{ X | X }
\multicolumn{1}{c}{A} & \multicolumn{1}{c}{B} \\ \hline
1.0 & 2.0 \\
\end{tabularx}
\vspace{4ex}
\noindent
\begin{tabularx}{\linewidth}{ X | X }
\thead{A} & \thead{B} \\ \hline
1.0 & 2.0 \\
\end{tabularx}
\end{document}