Para evitar palabras viudas en la última línea de un párrafo, ajusto parfillskip
:
\parfillskip 0pt plus 0.75\textwidth
Si bien esto proporciona párrafos más bonitos, también amplía un poco los títulos de las secciones, como puede ver a continuación. El primer título es el predeterminado parfillskip
, el segundo con 0pt plus 0.75\textwidth
:
¿Cómo puedo mantener mi parfillskip
configuración para los párrafos, pero no para los títulos?
Este código muestra el efecto para el texto y los títulos (avance):
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\section{This is a section title}
\lipsum[1]
\section{This is a section title}
% Fill the last line of paragraphs for minimum 25%
\parfillskip 0pt plus 0.75\textwidth
\section{This is a section title}
\lipsum[1]
\end{document}
Respuesta1
El título de la sección está compuesto por \@sect
, que felizmente encierra la parte relevante en un grupo. Al final agrega \@@par
, que es la primitiva \par
.
De este modo podemos parchear de forma segura \@sect
(para secciones numeradas) y \@ssect
(para secciones no numeradas):
\documentclass{article}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@sect}{\begingroup}{\begingroup\parfillskip=0pt plus 1fil\relax}{}{}
\patchcmd{\@ssect}{\begingroup}{\begingroup\parfillskip=0pt plus 1fil\relax}{}{}
\makeatother
\usepackage{lipsum}
\begin{document}
\section{This is a section title}
\lipsum[1]
% Fill the last line of paragraphs for minimum 25%
\parfillskip 0pt plus 0.75\textwidth
\section{This is a section title}
\lipsum[1]
\end{document}
Respuesta2
Para la memoir
clase basta añadir en el preámbulo:
\setsecheadstyle{\Large\parfillskip=0pt plus 1fil}
Respuesta3
Dado que los títulos de las secciones no deben tener formato con márgenes derechos en ningún caso (a pesar de que las clases de documentos predeterminadas hacen exactamente eso), debes declarar \raggedright
en la definición de la sección; y una vez que haces eso, \parfillskip
es irrelevante.
Defina la sección como desee:
- con memorias o koma u otra clase de documento agradable;
- usando un paquete como titlesec o algo así;
- con sección de las clases de documentos estándar usando
\@startsection
- o, lo más hack, parchear comandos como
\@sect
Por ejemplo, la clase básica "artículo" utiliza
\newcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\Large\bfseries}}
por lo que la configuración de un documento podría incluir algo \renewcommand
de eso \raggedright
insertado en el argumento de estilo de fuente
\makeatletter
\renewcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\raggedright\Large\bfseries}}