在下面的代码中,我使用了multicol
with longtable
,效果很好。有一件事我不喜欢:当一列的溢出量很小但溢出量没有问题时,比如图中编号为 15 的列,行会中断并添加一条完全空的行。我尝试添加\penalty
不同的值,但没有效果。我想告诉代码:如果溢出量小于 X 毫米,则不要添加新行。
\documentclass[a5paper,12pt,twopage]{article}
\usepackage[
left=1.5cm,
right=1.5cm,
top=1.5cm,
]{geometry}
\usepackage{multicol}
\usepackage{longtable}
\newsavebox\ltmcbox
\newenvironment{fakelongtable}
{\setbox\ltmcbox\vbox\bgroup
\csname @twocolumnfalse\endcsname
\csname col@number\endcsname\csname @ne\endcsname}
{\unskip\unpenalty\unpenalty\egroup\unvbox\ltmcbox}
\begin{document}
\clearpage
\begin{multicols}{2}
\renewcommand*{\arraystretch}{0.85}
\begin{fakelongtable}
\begin{longtable}{p{4.4cm}r}
\hangindent=1em X\dotfill & 1 \\
\hangindent=1em XX\dotfill & 2 \\
\hangindent=1em XXX\dotfill & 3 \\
\hangindent=1em XXXX\dotfill & 4 \\
\hangindent=1em XXXXX\dotfill & 5 \\
\hangindent=1em XXXXXX\dotfill & 6 \\
\hangindent=1em XXXXXXXXXXXXXXX\dotfill & 15 \\
\hangindent=1em XXX XXX XX XXX XXX XX\dotfill & 16 \\
\end{longtable}
\end{fakelongtable}
\end{multicols}
\end{document}
答案1
longtable
据我所知,这与 并无关联,它主要是 的产物\dotfill
。我很想知道您是否在任何没有填充文本的“真实”文档中看到过这种情况。
比较这两个例子,有和没有\dotfill
第 15 行
\documentclass[a5paper,12pt,twopage]{article}
\usepackage[
left=1.5cm,
right=1.5cm,
top=1.5cm,
]{geometry}
\usepackage{longtable}
\begin{document}
\begin{longtable}{p{4.4cm}r}
\hangindent=1em X\dotfill & 1 \\
\hangindent=1em XX\dotfill & 2 \\
\hangindent=1em XXX\dotfill & 3 \\
\hangindent=1em XXXX\dotfill & 4 \\
\hangindent=1em XXXXX\dotfill & 5 \\
\hangindent=1em XXXXXX\dotfill & 6 \\
\hangindent=1em XXXXXXXXXXXXXXX & 15 \\
\hangindent=1em XXX XXX XX XXX XXX XX\dotfill & 16 \\
\end{longtable}
\begin{longtable}{p{4.4cm}r}
\hangindent=1em X\dotfill & 1 \\
\hangindent=1em XX\dotfill & 2 \\
\hangindent=1em XXX\dotfill & 3 \\
\hangindent=1em XXXX\dotfill & 4 \\
\hangindent=1em XXXXX\dotfill & 5 \\
\hangindent=1em XXXXXX\dotfill & 6 \\
\hangindent=1em XXXXXXXXXXXXXXX\dotfill & 15 \\
\hangindent=1em XXX XXX XX XXX XXX XX\dotfill & 16 \\
\end{longtable}
\end{document}
举一个更简单的例子,根本没有表格:
\documentclass[12pt]{article}
\begin{document}
\parbox[t]{4.4cm}{
\hangindent=1em XXXXXXXXXXXXXXX
Y}\quad
\parbox[t]{4.4cm}{
\hangindent=1em XXXXXXXXXXXXXXX\dotfill
Y}
\end{document}
您可以使用以下命令防止在尾随之前换行\dotfill
:\nolinebreak
\hangindent=1em XXXXXXXXXXXXXXX\nolinebreak\dotfill & 15 \\
生产