![tabularx 中的对齐文本和多列大小](https://linux22.com/image/292005/tabularx%20%E4%B8%AD%E7%9A%84%E5%AF%B9%E9%BD%90%E6%96%87%E6%9C%AC%E5%92%8C%E5%A4%9A%E5%88%97%E5%A4%A7%E5%B0%8F.png)
我想创建包含(大量)对齐文本和一些多列的表格。我的示例如下。它或多或少可行……但是
我收到很多未满的 \hbox 通知,我认为这是因为文本没有向左刷新...我该如何摆脱它们?(我不希望我的文本向左刷新}
我不太清楚如何实现多列,我只想让它跨越两列。有没有更好的方法?
我看到了这个使用 tabularx 时计算 \multicolumn 大小的正确方法是什么?但对我来说,多列看起来不太正确。
谢谢!
\documentclass[a4paper,11pt,fleqn]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tabularx,calc}
\usepackage{adjustbox}
\usepackage{array}
\usepackage{multicol}%,tocbibind, ,fullpage,lastpage,framed}
\usepackage{multirow,booktabs}
\def\tabularxcolumn#1{m{#1}} %defines the X column to use m (\parbox[c]) instead of p (`parbox[t]`).
\begin{document}
\begin{table}
\setlength{\extrarowheight}{5 pt}
\begin{center}
\begin{tabularx}{\linewidth}{ X X X }
\toprule
\multicolumn{1}{c}{A} & \multicolumn{1}{c}{B} & \multicolumn{1}{c}{C} \\
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus
&
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus
&
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus\\
\multicolumn{2}{m{0.66\linewidth-2\tabcolsep}}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus} &
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus\\
\bottomrule
\end{tabularx}
\end{center}
\end{table}
\end{document}
答案1
您可以使用
\begin{tabularx}{\linewidth}{*3{>{\sloppy\arraybackslash} X }}
和
\multicolumn{2}{m{0.66\linewidth-2\tabcolsep}}{\sloppy Lorem...
在窄列中使用不规则设置来避免出现警告,例如 而\raggedright
不是。或者修改表格中\sloppy
的 的值( ...)\hbadness
\hbadness=
多列宽度设置还算可以,因为您事先知道宽度,但这XXX
意味着您可以(也许应该)在顶层执行相同的操作而tabularx
根本不使用,只使用m
固定宽度的列。
如果需要跨越两列X
宽度未知的列,可以使用
\multicolumn{2}{>{\sloppy\setlength\hsize{\dimexpr 2\hsize+2\tabcolsep\relax}}X}{Lorem..}