我会简短地说。我有这张表:
\documentclass[]{article}
\usepackage{array,rotating}
\begin{document}
\begin{sidewaystable}
\raggedright
\caption{This is my caption.}
\scalebox{.85}[.85]{
\begin{tabular}[width=\textwidth]{>{\raggedright}p{4cm}>{\raggedright}p{3cm}ccccc>{\centering}p{3cm}p{3cm}}
\hline
Column 1 & Column 2 & Column 3 & Column 4 & Column 5 & Column 6 & Column 7 & Column 8 with long title & Column 9 \\
\hline
Lorem & ipsum & dolor & sit & amet, & consectetuer & adipiscing & elit & Duis tellus. Donec ante dolor, iaculis nec... \\
\hline
\end{tabular}}
\end{sidewaystable}
\end{document}
我希望最后一列左对齐,但将tabular
规范更改为{>{\raggedright}p{4cm}>{\raggedright}p{3cm}ccccc>{\centering}p{3cm}>{\raggedright}p{3cm}}
导致混乱:
到底发生了什么事?我该如何解决?提前致谢。
答案1
您对左对齐单元格的定义是错误的。相反,它尝试将新列类型定义为:
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
而不是>{\raggedright}p{3cm}
使用P{3cm}
。如您所见,错误在于缺少\arraybackslash
。
代码基本部分的片段:
\documentclass[]{article}
\usepackage{array,rotating}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
\begin{document}
\begin{sidewaystable}
\raggedright
\caption{This is my caption.}
\scalebox{.85}[.85]{
\begin{tabular}{P{4cm}P{3cm}ccccc>{\centering}p{3cm}P{3cm}}
...
附录:
来自 TeX FAQ:问题是该命令\\
在不同情况下有不同的含义:tabular
环境将含义切换为表格中使用的值,而\centering
和\raggedright
都\raggedleft
将含义更改为不兼容的内容。请注意,问题只出现在行的最后一个单元格中。...\tabularnewline
和\arraybackslash
命令分别是 LaTeX 和数组包的(某种程度上)现代附加功能。
因此,将\arraybackslash
的定义重置为 的命令实际上只在最后一列中才需要。因此,在这种情况下,在倒数第二列中使用不会导致错误,而在前两列中使用则表明,在其他列中使用不会造成任何损害。当然,为了保持一致性,在这种情况下最好这样写:\\
\tabularnewline
>{\centering}p{3cm}
P{...}
\begin{tabular}{P{4cm}P{3cm}cccP{3cm}P{3cm}}