我有一个带有长标题的表格,我想指定列的宽度,但也希望能够保持它的居中位置。
就像是|c{0.30\textwidth}|
。
可以吗?如何实现这个效果?
答案1
您可以使用数组包。它提供了一种\centering
向 p 列添加命令的方法。这是一个小例子:
\documentclass{article}
\usepackage{array}
\begin{document}
\begin{tabular}{>{\centering\arraybackslash}p{1cm}}
first row \\
second row
\end{tabular}
\end{document}
一般语法>{command}
位于实际列说明符之前。\centering
改变了 的含义\\
,因此\arraybackslash
已用于恢复该含义。 请查看array
文档了解更多。
答案2
除了Stefans的回答之外:如果您经常使用具有固定宽度的居中列,则可以定义一种新的列类型:
\usepackage{array}
\newcolumntype{x}[1]{>{\centering\arraybackslash\hspace{0pt}}p{#1}}
“x”列将其宽度作为参数。在您的文档中,您可以这样写:
\begin{tabular}{cx{3cm}c}
编辑:感谢德语论坛上 Ulrike Fischer 的回答mrunix.de,我了解到仍有改进的空间:有人可能想手动在“居中”p 列的单元格内换行,但\newline
在这种情况下无法正常工作。解决方案:将\\
(由 ! 定义\centering
)的含义分配给\newline
单元格内:
\usepackage{array}
\newcolumntype{x}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}