LaTeX - правильный вертикальный интервал на многолинейных парбоксах с мультиколами

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

Альфа
Бета
Zeta
   Альтернатива: Упсилон <- (вторая линия Зетов)
Гамма
   Альтернатива: лямбда
Эпсилон
Омега
Омикрон
   Альтернатива: Упсилон...

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

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

Брайан

1 ответ

Решение

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} 
Другие вопросы по тегам