Frequently Asked Question List for TeX
One often needs to alter the alignment of a tabular p
(“paragraph”)
cell, but problems at the end of a table row are common. With a
p
cell that looks like:
... & \centering blah ... \\
one is liable to encounter errors that complain about a
“misplaced \noalign
” or “extra alignment tab”, or the like.
The problem is that the command \\
means different things in
different circumstances: the tabular
environment
switches the meaning to a value for use in the table, and
\centering
, \raggedright
and \raggedleft
all change the
meaning to something incompatible. Note that the problem only
arises in the last cell of a row: since each cell is set into a box,
its settings are lost at the &
(or \\
) that
terminates it.
In the old days, the actual value of \\
that the
tabular
environment uses was only available as an
internal command. Nowadays, the value is a public command, and you
can in principle use it explicitly:
... & \centering blah ... \tabularnewline
(but that’s a rather verbose way of doing things).
The array
package provides a command \arraybackslash
which restores \\
to its correct (within table) meaning;
the command may be used in array
’s “field format” preamble
specifications:
\begin{tabular}{... >{\centering\arraybackslash}p{50mm}}
...
The \tabularnewline
and \arraybackslash
commands are
(somewhat) modern additions to LaTeX and the array
package, respectively. In the unlikely event that neither is
available, the user may try the (old) solution which preserves the
meaning of \\
:
\newcommand\PBS[1]{\let\temp=\\%
#1%
\let\\=\temp
}
which one uses within a table as:
... & \PBS\centering blah ... \\
or in the preamble as:
\begin{tabular}{...>{\PBS\centering}p{5cm}}
FAQ ID: Q-tabcellalign
Tags: tables–figures