tabularx セルを中央揃えにするときに \noalign の位置がずれる

tabularx セルを中央揃えにするときに \noalign の位置がずれる

次のような最小限の 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}

AB1.0 2.0

表のヘッダーを中央揃えにし、列を左揃えにしたいのですが、\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} 

ここに画像の説明を入力してください

関連情報