LaTeX - правильный вертикальный интервал на многолинейных парбоксах с мультиколами - PullRequest
2 голосов
/ 13 июля 2010

Я пытаюсь заставить работать набор из двух столбцов со списком элементов.Однако в этом списке есть элементы, состоящие из одной или двух строк, т.е.

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

. Я бы хотел, чтобы этот список располагался в двух столбцах, однако я не хочу, чтобы список заканчивался разделениемдвухстрочный элемент (т.е. «Альтернатива: 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. , если это \parbox решение может быть изменено так, чтобы не было несовместимого интервала между строками.1024 *

    Спасибо за чтение.

    Брайан

1 Ответ

3 голосов
/ 13 июля 2010

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} 
...