Eu gostaria de adicionar um espaço vertical adicional entre dois títulos de seção se eles seguirem um ao outro, ou seja, não houver outro texto ou qualquer outra coisa entre eles. Existe algum comando if condicional, talvez usando algo como if@aftersection...?
\documentclass[12pt, a4paper]{memoir}
\usepackage[utf8]{inputenc}
\begin{document}
\chapter{Chapter title}
\section{A first section title}
\section{A second section title}
Just some text. There should be a conditional vspace between the first
section and the second section if there is nothing else between them.
\section{A third section}
Some more text here.
\section{A fourth section}
Some more text.
\end{document}
Responder1
Em geral, você deve acomodar todas as combinações possíveis de argumentos oferecidas pormemoir
é \section
. Especificamente, são necessários dois argumentos opcionais (para o ToC e o cabeçalho em execução). Além disso, pode-se verificar se o próximo token está \section
usando \@ifnextchar
:
\documentclass{memoir}
\usepackage{xparse}
\let\oldsection\section
\makeatletter
\RenewDocumentCommand{\section}{s o o m}{%
\IfBooleanTF{#1}
{\oldsection*{#4}}
{\IfValueTF{#2}
{\IfValueTF{#3}
{\oldsection[#2][#3]{#4}}
{\oldsection[#2]{#4}}}
{\oldsection{#4}}}%
\@ifnextchar\section{\vspace{5\baselineskip}}{}%
}
\makeatother
\begin{document}
\tableofcontents
\chapter{Chapter title}
\section{A first section title}
\section{A second section title}
Just some text. There should be a conditional \verb|\vspace| between the first
section and the second section if there is nothing else between them.
\section{A third section}
Some more text here.
\section{A fourth section}
Some more text.
\end{document}
Aqui está outra opção:
Defina uma macro \ifnextcommandis{<this>}{<true>}{<next>}
que capture três argumentos. Você especifica <this>
and <true>
, e presume-se que tudo o que segue sua macro será a <next>
macro:
\newcommand{\ifnextcommandis}[3]{%
\def\thiscommand{#1}% Store this command
\def\nextcommand{#3}% Store next command
\ifx\nextcommand\thiscommand\relax
#2%
\fi
\nextcommand}% Re-insert next command
\let\oldsection\section
\RenewDocumentCommand{\section}{s o o m}{%
\IfBooleanTF{#1}
{\oldsection*{#4}}
{\IfValueTF{#2}
{\IfValueTF{#3}
{\oldsection[#2][#3]{#4}}
{\oldsection[#2]{#4}}}
{\oldsection{#4}}}%
\ifnextcommandis{\section}{\vspace{5\baselineskip}}%
}