![\noalign mal colocado al centrar la celda tabularx](https://rvso.com/image/390900/%5Cnoalign%20mal%20colocado%20al%20centrar%20la%20celda%20tabularx.png)
Tengo un 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}
Me gustaría centrar los encabezados de la tabla pero alinear las columnas a la izquierda. Sin embargo, cuando agrego \centering
al encabezado B, así:
\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}
Recibo este error:
! 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}
Respuesta1
La página 2 de la tabularx
documentación dice que debe usar \arraybackslash
después \centering
(o \raggedright
o \ragggedleft
). Úselo así:
\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}
Los comandos de alineación de texto de LaTeX se redefinen \\
para que ya no signifiquen "una nueva línea en la tabla". El \arraybackslash
comando lo hace \let\\\tabularnewline
para que vuelva a funcionar.
Alternativamente, puedes usar \tabularnewline
en lugar de \\
al final de la primera fila.
\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}
Respuesta2
Simplemente puede usar a \multicolumn{1}{c}{...}
para los encabezados de las columnas. O cargar makecell
y usar su thead
comando (por defecto, su contenido está centrado, tanto horizontal como verticalmente), que tiene la posibilidad de definir un formato común para todos thead
los argumentos. A continuación se muestra un ejemplo de ambos 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}