代码之家  ›  专栏  ›  技术社区  ›  Brian M. Hunt

乳胶-具有多个线条的多行Parbox上的适当垂直间距

  •  2
  • Brian M. Hunt  · 技术社区  · 16 年前

    我正在努力使两栏排版工作,有一个项目清单。但是,该列表中的元素要么是一行,要么是两行,即

    Alpha
    Beta
    Zeta
       Alternative: Upsilon      <– (second line of the Zeta)
    Gamma
       Alternative: Lambda
    Epsilon
    Omega
    Omicron
       Alternative: Upsilon
    ...
    

    我希望将此列表放在两列上,但是我不希望列表以两行项目的拆分结尾(即,“alternative:xyz”永远不应开始第二列)。

    我的第一个想法是把两行元素放到 parbox ,像这样:

    \documentclass[12pt]{memoir}
    \usepackage{multicol,ragged2e}
    \begin{document}
    
    \begin{multicols}{2}
    \RaggedRight
    Alpha\\
    Beta\\
    \parbox{\columnwidth}{ Zeta\\ \hspace{1em} \textit{Alternative:} Upsilon }
    \parbox{\columnwidth}{ Gamma\\ \hspace{1em} \textit{Alternative:} Lambda }
    Epsilon\\
    Omega\\
    \parbox{\columnwidth}{ Omicron\\ \hspace{1em} \textit{Alternative:} Upsilon }
    Kappa\\
    \parbox{\columnwidth}{ Zeta\\ \hspace{1em} \textit{Alternative:} Upsilon }
    \parbox{\columnwidth}{ Zeta\\ \hspace{1em} \textit{Alternative:} Upsilon }
    Alpha\\
    Beta\\
    \parbox{\columnwidth}{ Zeta\\ \hspace{1em} \textit{Alternative:} Upsilon }
    \parbox{\columnwidth}{ Gamma\\ \hspace{1em} \textit{Alternative:} Lambda }
    Epsilon\\
    Omega\\
    \parbox{\columnwidth}{ Omicron\\ \hspace{1em} \textit{Alternative:} Upsilon }
    Kappa\\
    \parbox{\columnwidth}{ Zeta\\ \hspace{1em} \textit{Alternative:} Upsilon }
    \parbox{\columnwidth}{ Zeta\\ \hspace{1em} \textit{Alternative:} Upsilon }
    Sigma\\
    Delta\\
    \end{multicols}
    \end{document}
    

    为了强调这个尝试解决方案的缺陷,我已经把这个例子做得比需要的时间长了。如果你输入这个,元素之间的间距是不均匀的,看起来很糟糕。

    我在想,那么:

    1. 如果有其他方法可以使用 \parbox 不会出现这种排版不一致的情况。

    2. 如果这样 “邮箱” 可以修改解决方案,以避免行距不一致。

    谢谢你的阅读。

    布瑞恩

    1 回复  |  直到 16 年前
        1
  •  3
  •   Alexey Malistov    16 年前

    1)定义宏,例如, \colparbox \Alt .

    2)查看以下代码。

    \def\colparbox#1{\strut \par \vskip -\baselineskip \nointerlineskip
       \parbox{\columnwidth}{\strut\ignorespaces#1\unskip\strut}\par}
    
    \def\Alt{\hspace{1em} \textit{Alternative:} }
    
    \begin{multicols}{2} 
    \RaggedRight 
    Alpha\\ 
    Beta\\ 
    \colparbox{ Zeta\\ \Alt Upsilon } 
    \colparbox{ Gamma\\ \Alt Lambda } 
    Epsilon\\ 
    Omega\\ 
    \colparbox{ Omicron\\ \Alt Upsilon } 
    Kappa\\ 
    \colparbox{ Zeta\\ \Alt Upsilon } 
    \colparbox{ Zeta\\ \Alt Upsilon } 
    Alpha\\ 
    Beta\\ 
    \colparbox{ Zeta\\ \Alt Upsilon } 
    \colparbox{ Gamma\\ \Alt Lambda } 
    Epsilon\\ 
    Omega\\ 
    \colparbox{ Omicron\\ \Alt Upsilon } 
    Kappa\\ 
    \colparbox{ Zeta\\ \Alt Upsilon } 
    \colparbox{ Zeta\\ \Alt Upsilon } 
    Sigma\\ 
    Delta\\ 
    \end{multicols} 
    
    推荐文章