\dotfill 换行问题

\dotfill 换行问题

我正在 XeTeX 中生成通讯录,但发现了一个无法解决的问题。通讯录是按列拆分的姓名、地址和号码列表。理想情况下,一个条目应如下所示(下划线代表空格):

姓名.........号码

地址______号码2

我没有遇到任何问题来实现这种布局,只有当名称太长并分成多行时才会出现一个小问题,然后它应该看起来像这样:

长名字

更多名称......编号

或者

长名字

...............数字

第一个也没什么问题,但是第二个就让我头疼了,结果是这样的:

长名字

数字

没有点...

这是我的代码的简化版本(但足以重现问题):

\documentclass[a4paper,11pt]{book}

\usepackage[b4paper, left=2cm, right=1.5cm, bottom=4cm, top=2cm]{geometry}
\usepackage[croatian]{babel}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage{xcolor}
\usepackage{multicol}

% Font
\setmainfont{Calibri}

\begin{document}
\begin{multicols}{5}
  % Case 1
  \noindent
  \vbox {\vfil
    \hbox to \columnwidth {
      \parbox{0.97\columnwidth}{
        \scriptsize
        \raggedright{\textbf{Name}}\dotfill~(XX)~XXX~XXX\\
        \emph{Address}\hfill~(XX)~XXX~XXX}
    }
    \vfil
  }

  % Case 2
  \noindent
  \vbox {\vfil
    \hbox to \columnwidth {
      \parbox{0.97\columnwidth}{
        \scriptsize
        \raggedright{\textbf{Name Lorem Ipsum Lorem Ipsum Lorem Ipsum}}\dotfill~(XX)~XXX~XXX\\
        \emph{Address}\hfill~(XX)~XXX~XXX}
    }
    \vfil
  }

  % Case 3
  \noindent
  \vbox {\vfil
    \hbox to \columnwidth {
      \parbox{0.97\columnwidth}{
        \scriptsize
        \raggedright{\textbf{Name Lorem Ipsum Lorem}}\dotfill~(XX)~XXX~XXX\\
        \emph{Address}\hfill~(XX)~XXX~XXX}
    }
    \vfil
  }

\vspace*{\fill}
\end{multicols}
\end{document}

(实际上我定义了类并且每个地址簿条目都是一个命令。)

那么,您能帮我诊断一下这个问题吗?为什么\dotfill在第三种情况下数字没有向右推?

答案1

引线就像胶水一样,在行首被丢弃。因此,您需要更像\hspace*在行\hspace首放置一些不可见的东西来阻止它被丢弃的东西,将其替换\dotfill

\penalty0\hbox{}\nobreak\dotfill

这使得可以在箱子前休息,但不允许在箱子后休息,以便领导者受到箱子的保护并且不会被丢弃。

在此处输入图片描述

相关内容