在单元格处进行不同的垂直对齐

在单元格处进行不同的垂直对齐

我有 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
}

相关内容