使用 \dotfill 时如何防止行完全为空?

使用 \dotfill 时如何防止行完全为空?

在下面的代码中,我使用了multicolwith 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 \\

生产

在此处输入图片描述

相关内容