Según la documentación de las memorias, capítulo 8.4.1, se supone que el comando \linenottooshort garantiza que la última línea de un párrafo no sea más corta que una longitud opcional (2em por defecto). Entonces espero que el comando me ayude a reducir la cantidad de párrafos que tienen últimas líneas cortas.
Sin embargo, el primer MWE (sin \linenottooshort) da el resultado a la izquierda en la figura siguiente, mientras que el segundo MWE (con \linenottooshort) da el resultado a la derecha, lo que es claramente peor en el caso de las últimas líneas cortas.
Supongo que el texto de la última línea del ejemplo de la derecha no puede tener menos de 2 em. Pero seguramente \linenottooshort no debería hacer que los párrafos sean peores de lo que serían sin él. ¿Que está pasando aqui?
Izquierda:
\documentclass[11pt]{memoir}
\setlength{\textwidth}{120mm}
\setlength{\parindent}{0mm}
\usepackage{blindtext}
\begin{document}
\blindtext
\end{document}
Bien:
\documentclass[11pt]{memoir}
\setlength{\textwidth}{120mm}
\setlength{\parindent}{0mm}
\usepackage{blindtext}
\linenottooshort
\begin{document}
\blindtext
\end{document}
Respuesta1
La ubicación de \linenottooshort
es incorrecta: debería ir después \begin{document}
, porque antes memoir
aún no ha actualizado las dimensiones de la página.
De todos modos, el comando seguramente dará otros resultados extraños, porque establece incorrectamente \@tempdima
, lo que podría cambiar el valor sin previo aviso, siendo un registro de longitud temporal.
Si observa el valor de \@tempdima
después de hacerlo \linenottooshort
en el preámbulo, obtiene 325,19989 pt; hecho en el document
entorno, el valor será 297.63295pt.
Una definición correcta sería
\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}
Tenga en cuenta que esto podría dar resultados extraños en minipage
listas \parbox
o. No estoy muy seguro de su utilidad.