Работа с вдовами в многоцветной среде - PullRequest
4 голосов
/ 05 марта 2010

У меня проблемы с работой с вдовами в многоцветной среде, то есть мне не удалось дать LaTeX команду удалить их.

В этом документе PDF показан примерпроблема.В верхней части второй страницы я получаю вдову из последнего абзаца первой страницы.Я попробовал пару подходов, но безуспешно:

  • , установив для \widowpenalty и \clubpenalty высокие значения
  • переключение между \raggedcolumns и \flushcolumns
  • настройка счетчиков collectmore и unbalance

Я также прочитал документацию для multicol , но не нашел ничего полезного.

Могу ли я попробовать еще что-нибудь?

( Полный документ LaTeX для приведенного выше примера )

Ответы [ 2 ]

1 голос
/ 05 марта 2010

Похоже, что пункт часто задаваемых вопросов TeX Управление вдовами и сиротами имеет некоторые опции, которые вы еще не пробовали.

Избавиться от вдовы может быть сложнее. Варианты

  • Если на предыдущей странице содержится длинный абзац с короткой последней строкой, возможно, можно установить его «плотно»: write \looseness=-1 сразу после последнего слова абзаца.
  • Если это не сработает, настройте размер страницы, используя \enlargethispage{\baselineskip}, чтобы «добавить строку» на страницу, которая может привести к получению целого абзаца на одной странице.
  • Уменьшение размера страницы на \enlargethispage{-\baselineskip} может привести к (более или менее) приемлемой "двухстрочной вдове".
1 голос
/ 05 марта 2010
{\obeyspaces\gdef\nomorebreak{\beginnomorebreak\let \nobreakspace}}
\def\beginnomorebreak{\begingroup
   \def\par{\endgraf\endgroup\par\penalty 9999 }\obeyspaces
   \brokenpenalty 10000 \widowpenalty 10000 \clubpenalty 10000 }
\def\nobreakspace{\vadjust{\nobreak} \removespaces}
\def\removespaces{\futurelet\next\checkspace}
\def\checkspace{\ifx\next\nobreakspace\expandafter\removesinglespace\fi}
\def\removesinglespace#1{\removespaces}

Вставьте \nomorebreak в любом месте вашего абзаца. Разрывы страниц после этого макроса будут запрещены до конца абзаца.

...