Согласно документации memoir, глава 8.4.1, команда \linenottooshort должна гарантировать, что последняя строка абзаца не будет короче необязательной длины (по умолчанию 2em). Поэтому я ожидаю, что команда поможет мне сократить количество абзацев с короткими последними строками.
Однако первый MWE (без \linenottooshort) дает результат, показанный слева на рисунке ниже, тогда как второй MWE (с \linenottooshort) дает результат, показанный справа, который явно хуже в отношении коротких последних строк.
Я предполагаю, что текст в последней строке примера справа может быть не короче 2em. Но ведь \linenottooshort не должен делать абзацы хуже, чем они были бы без него? Что здесь происходит?
Левый:
\documentclass[11pt]{memoir}
\setlength{\textwidth}{120mm}
\setlength{\parindent}{0mm}
\usepackage{blindtext}
\begin{document}
\blindtext
\end{document}
Верно:
\documentclass[11pt]{memoir}
\setlength{\textwidth}{120mm}
\setlength{\parindent}{0mm}
\usepackage{blindtext}
\linenottooshort
\begin{document}
\blindtext
\end{document}
решение1
Расположение \linenottooshort
неверное: он должен идти после \begin{document}
, так как до него memoir
еще не были актуализированы размеры страницы.
В любом случае, команда обязательно выдаст другие странные результаты, поскольку она неправильно устанавливает \@tempdima
, значение которого может измениться без уведомления, поскольку он является регистром длины царапины.
Если посмотреть на значение \@tempdima
после doing \linenottooshort
в преамбуле, то получится 325,19989pt; done в document
среде значение будет 297,63295pt.
Правильным определением было бы
\documentclass[11pt]{memoir}
\setlength{\textwidth}{120mm}
\setlength{\parindent}{0mm}
\usepackage{blindtext}
\makeatletter
\renewcommand*{\linenottooshort}[1][4em]{%
\@tempdima=\hsize
\advance\@tempdima -#1\relax
%\leftskip\z@skip % ???
%\rightskip\leftskip % ???
\begingroup\edef\x{\endgroup
\parfillskip=\the\@tempdima \@minus \the\@tempdima\relax
}\x
}
\makeatother
\AtBeginDocument{\linenottooshort}
\begin{document}
\blindtext
\end{document}
Остерегайтесь, что это может дать странные результаты в minipage
, \parbox
или списках. Я не совсем уверен в его полезности.