![將 tabularx 單元格居中時錯位 \noalign](https://rvso.com/image/390900/%E5%B0%87%20tabularx%20%E5%96%AE%E5%85%83%E6%A0%BC%E5%B1%85%E4%B8%AD%E6%99%82%E9%8C%AF%E4%BD%8D%20%5Cnoalign.png)
我有一個最小的 LaTeX 文檔,如下所示:
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{ X | X }
\centering A & B \\ \hline
1.0 & 2.0 \\
\end{tabularx}
\end{document}
我想將表標題居中,但將列左對齊。但是,當我添加\centering
到 B 標頭時,如下所示:
\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}
我收到此錯誤:
! 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}
答案1
文件的第 2 頁tabularx
說您必須在(或或)\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}
LaTeX 的文字對齊命令重新定義,\\
因此它們不再意味著「表格中的新行」。該\arraybackslash
命令執行\let\\\tabularnewline
後它將再次工作。
或者,您可以在第一行末尾使用\tabularnewline
代替。\\
\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}
答案2
您可以簡單地使用 a\multicolumn{1}{c}{...}
作為列標題。或者載入makecell
並使用它的thead
命令(預設情況下,它的內容水平和垂直居中),它可以定義所有thead
s 參數的通用格式。以下是這兩種方法的範例:
\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}