在 tabularx 中更改单元格文本的水平对齐方式

在 tabularx 中更改单元格文本的水平对齐方式

我有一个使用 -coloum 类型适合页面宽度的表格X

\documentclass[11]{article}
\usepackage{tabularx}
\usepackage{lipsum}

\begin{document}

\lipsum[1]

\begin{table}
\begin{tabularx}{\textwidth}{| X | X | X |} 
    \hline
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  Ut purus elit,vestibulum ut, placerat ac, adipiscing vitae, felis & Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  Ut purus elit,vestibulum ut, placerat ac, adipiscing vitae, felis & Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  Ut purus elit,vestibulum ut, placerat ac, adipiscing vitae, felis \\
    \hline
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  Ut purus elit,vestibulum ut, placerat ac, adipiscing vitae, felis & Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  Ut purus elit,vestibulum ut, placerat ac, adipiscing vitae, felis & Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  Ut purus elit,vestibulum ut, placerat ac, adipiscing vitae, felis \\
    \hline
\end{tabularx}
\end{table}

\end{document}

单元格按块排列:

单元格按块对齐

有没有办法以不同的方式对齐它们,而不用\raggedright在每个单元格前输入例如?l-coloumn 类型会弄乱表格的宽度:

柱子溢出

答案1

一个选择是创建一个新类型的列tabularx,说Z

\newcolumntype{Z}{>{\raggedright\arraybackslash}X} 

但最简单的方法是使用tabulary而不是tabularxLR或列CJ

姆韦

\documentclass[11]{article}
\usepackage{tabulary,booktabs}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{table}
\begin{tabulary}{\textwidth}{LRCJ}\toprule 
\lipsum[1][1-2] & \lipsum[1][1-2] & 
\lipsum[1][1-2] & \lipsum[1][1-2]  \\\midrule   
\lipsum[1][1-2] & \lipsum[1][1-2] & 
\lipsum[1][1-2] & \lipsum[1][1-2]  \\\bottomrule   
\end{tabulary}
\end{table}
\end{document}

但请注意,这并不是两个包之间的唯一区别:

无论内容是什么,tabularx都会使用所有的\textwitdh来使所有X列的宽度相同,而tabulary会尝试根据内容优化每列的宽度,仅在需要时占用可用的水平空间。例如,如果您只在一列中输入“Foo”,tabulary则会缩小一列,同时为其他列留出更多空间,但如果其他列的内容不够,表格也会比 更窄\textwidth。还值得一提的是,如果列非常不均匀,文本较少的列可能会太窄,换行过多,以便将表格放在最小的垂直空间中,但您可以使用\tymin\tymax来控制这一点,如手册中所述。

如果这对您来说不是一个优点而是一个缺点,请使用第一个解决方案。

相关内容