![tabularx セルを中央揃えにするときに \noalign の位置がずれる](https://rvso.com/image/390900/tabularx%20%E3%82%BB%E3%83%AB%E3%82%92%E4%B8%AD%E5%A4%AE%E6%8F%83%E3%81%88%E3%81%AB%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%20%5Cnoalign%20%E3%81%AE%E4%BD%8D%E7%BD%AE%E3%81%8C%E3%81%9A%E3%82%8C%E3%82%8B.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 ページ目には、after (またはまたは)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
\multicolumn{1}{c}{...}
列見出しには を使用するだけです。またはmakecell
、そのthead
コマンドを読み込んで使用します (デフォルトでは、その内容は水平方向と垂直方向の両方で中央揃えになります)。これにより、すべての s 引数の共通の書式設定を定義できますthead
。両方の方法の例を次に示します。
\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}