我有 3 列的长表。我需要:
- 第一列 - 短词。垂直对齐 = 顶部
- 第二列 - 长文本。垂直对齐 = 顶部
- 3d 列 - 短数字。垂直对齐 = 底部。
我使用这个代码:
\documentclass[twoside]{scrbook}
\usepackage{xtab}
\usepackage{array}
\begin{document}
\begin{xtabular}{r p{10em} b{5em}}
11 may &
Long multiline text. Long multiline text. Long multiline text.
Long multiline text. Long multiline text. &
10 \\
\end{xtabular}
\end{document}
但在三维列中我有对齐方式顶部。
我该如何处理我的问题?
谢谢。
答案1
\documentclass[twoside]{scrbook}
\usepackage{xtab}
\usepackage{array}
\newcommand\z[1]{\hspace*{\fill}{\rlap{\hspace{2\tabcolsep}#1}}}
\begin{document}
\begin{xtabular}{r p{10em} b{5em}}
11 may &
Long multiline text. Long multiline text. Long multiline text.
Long multiline text. Long multiline text.\z{10}&\mbox{}
\\
\end{xtabular}
\end{document}
答案2
如果我很清楚你需要什么,那么情况是这样的:
首先,您必须确定主要的宏设计。您需要一个表格(或\halign
在我的示例中),因为第一列可以包含不同宽度的文本。第二列可以包含页码,不需要第三列。第二列只是带有给定\hsize
和负数的特殊格式的段落\parfillskip
。负数\parfillskip
导致最后一行中的最后一个元素向右移动。
最后,使用\dotfill
生成不对齐的点。我建议使用\leaders
原始(在\x
宏中定义)。因此,上面的文本可以通过以下宏生成:
\def\parset{\parindent=0pt \hsize=10em \emergencystretch=2em
\parfillskip=-4em \relax}
\def\x{\unskip \leaders\hbox{\kern2pt.\kern2pt}\hfill}
\halign{\hfil#\strut\ &\vtop{\parset#\unskip\strut}\cr
May 10 & Long multiline text. Long multiline text. Long multiline text.
Long multiline text. Long multiline text. \x 10 \cr
July 13 & Long multiline text. Long multiline text. Long multiline text.
Long multiline text. Long multiline text. \x 14 \cr
December 21 & Short line \x 42 \cr
}