Falsch platziertes \noalign beim Zentrieren einer tabularx-Zelle

Falsch platziertes \noalign beim Zentrieren einer tabularx-Zelle

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}

AB 1.0 2.0

Ich möchte die Tabellenüberschriften zentrieren, die Spalten jedoch linksbündig ausrichten. Wenn ich jedoch \centeringdie Ü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 ) tabularxverwenden 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 \arraybackslashBefehl wird \let\\\tabularnewlineneu definiert, damit er wieder funktioniert.

Alternativ können Sie am Ende der ersten Zeile \tabularnewlineanstelle 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 makecellund verwenden Sie dessen theadBefehl (standardmäßig wird sein Inhalt horizontal und vertikal zentriert), der die Möglichkeit bietet, eine gemeinsame Formatierung aller theads-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} 

Bildbeschreibung hier eingeben

verwandte Informationen