Faça com que \section não seja afetado por \parfillskip

Faça com que \section não seja afetado por \parfillskip

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 parfillskipconfiguraçã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}

insira a descrição da imagem aqui

Responder2

Para a memoiraula, 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 \raggedrightna 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 \renewcommanddesses \raggedrightinseridos 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}}

informação relacionada