Para evitar palavras viúvas na última linha de um parágrafo, eu ajusto parfillskip
:
\parfillskip 0pt plus 0.75\textwidth
Embora isso forneça parágrafos mais bonitos, também amplia um pouco os títulos das seções, como você pode ver abaixo. O primeiro título está com o padrão parfillskip
, o segundo com 0pt plus 0.75\textwidth
:
Como posso manter minha parfillskip
configuração para parágrafos, mas não para títulos?
Este código mostra o efeito para texto e títulos (visualização):
\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}
Responder1
O título da seção é composto por \@sect
, que inclui a parte relevante em um grupo. No final acrescenta \@@par
, que é o primitivo \par
.
Assim, podemos corrigir com segurança \@sect
(para seções numeradas) e \@ssect
(para seções não 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}
Responder2
Para a memoir
aula, basta acrescentar ao preâmbulo:
\setsecheadstyle{\Large\parfillskip=0pt plus 1fil}
Responder3
Como os títulos das seções não devem ser formatados com margens à direita em qualquer caso - apesar das classes de documentos padrão fazerem exatamente isso - você deve declarar \raggedright
na definição do seccionamento; e depois de fazer isso, o \parfillskip
é irrelevante.
Defina o seccionamento como desejar:
- com livro de memórias ou koma ou outra classe de documento interessante;
- usando um pacote como o titlesec ou algo parecido;
- com seccionamento das classes de documentos padrão usando
\@startsection
- ou, o mais hackeado, comandos de patch como
\@sect
Por exemplo, a classe básica "artigo" usa
\newcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\Large\bfseries}}
portanto, uma configuração de documento pode incluir um \renewcommand
desses \raggedright
inseridos no argumento de estilo de fonte
\makeatletter
\renewcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\raggedright\Large\bfseries}}