![\noalign mal colocado ao centralizar a célula tabularx](https://rvso.com/image/390900/%5Cnoalign%20mal%20colocado%20ao%20centralizar%20a%20c%C3%A9lula%20tabularx.png)
Eu tenho um documento LaTeX mínimo como este:
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{ X | X }
\centering A & B \\ \hline
1.0 & 2.0 \\
\end{tabularx}
\end{document}
Gostaria de centralizar os cabeçalhos da tabela, mas alinhar as colunas à esquerda. No entanto, quando adiciono \centering
ao cabeçalho B, assim:
\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}
Eu recebo este erro:
! 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}
Responder1
A página 2 da tabularx
documentação diz que você deve usar \arraybackslash
depois \centering
(ou \raggedright
ou \ragggedleft
). Use assim:
\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}
Os comandos de alinhamento de texto do LaTeX são redefinidos \\
para que não signifiquem mais “uma nova linha na tabela”. O \arraybackslash
comando faz \let\\\tabularnewline
isso para que funcione novamente.
Alternativamente, você pode usar \tabularnewline
em vez de \\
no final da primeira linha.
\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}
Responder2
Você pode simplesmente usar a \multicolumn{1}{c}{...}
para os cabeçalhos das colunas. Ou carregue makecell
e utilize o seu thead
comando (por padrão, seu conteúdo é centralizado, tanto horizontal quanto verticalmente), que tem a possibilidade de definir uma formatação comum de todos thead
os argumentos. Aqui está um exemplo de ambos os métodos:
\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}