在下面的示例代码中,我们有两个单行表(实际上会有更多的行和颜色以及其他格式),我们希望对齐它们,以便第一个表中第二列后的垂直线与第二个表中第一列后的垂直线对齐。
在另一篇文章中,有人建议p
在尝试对齐不同表中的列时使用,但我发现这种方法非常耗时,因为这意味着摆弄规范中的数字p
。
它几乎按照我们下面的方式工作,如果我们摆弄一下规范中的数字,p
我们可能会得到更精确的结果,但我希望有一个解决方案可以为我完成定位。此外,第一个表格的第 3、4 和 5 列的宽度看起来并不是很好。我更希望将这三列的所有额外空间都放在第 5 列的末尾。
如果可能的话,我愿意坚持使用tabu
。
\documentclass{article}
\usepackage[top=1in,bottom=1in,left=0.5in,textwidth=7.5in]{geometry}
\usepackage[linegoal]{tabu}\tracingtabu=2
\begin{document}
\begin{center}\small
\begin{tabu} to\textwidth{*{2}{ p{.15\textwidth} | } p{.2\textwidth} | p{.1\textwidth} | X }
\rowfont\bfseries aaaaaaaaaaaaaa & bbbbbbbbbbb & ccccccccccccccccc & dddddddd & eeeeeeeeeeeeeeee \\
\end{tabu}
\end{center}
Various text.
\begin{center}\small
\begin{tabu} to\textwidth{>{\bfseries}p{.32\textwidth} | X[l,m]}
\everyrow{\tabucline-}
ffffffffffffffffffffffffff & ggggggggggggggggg \\
\end{tabu}
\end{center}
\end{document}
答案1
如果考虑到列之间的间隔,则可以使列精确对齐。不要使用.30\textwidth
(因为前两列各为p{.15\textwidth}
),而要使用:
\dimexpr.30\textwidth+2\tabcolsep\relax
得出的结果是:
代码:
\documentclass{article}
\usepackage[top=1in,bottom=1in,left=0.5in,textwidth=7.5in]{geometry}
\usepackage[linegoal]{tabu}\tracingtabu=2
\begin{document}
\begin{center}\small
\begin{tabu} to\textwidth{*{2}{ p{.15\textwidth} | } p{.2\textwidth} | p{.1\textwidth} | X }
\rowfont\bfseries aaaaaaaaaaaaaa & bbbbbbbbbbb & ccccccccccccccccc & dddddddd & eeeeeeeeeeeeeeee \\
\end{tabu}
\end{center}
Various text.
\begin{center}\small
\begin{tabu} to\textwidth{>{\bfseries}p{\dimexpr.30\textwidth+2\tabcolsep\relax} | X[l,m]}
\everyrow{\tabucline-}
ffffffffffffffffffffffffff & ggggggggggggggggg \\
\end{tabu}
\end{center}
\end{document}