Me gustaría agregar un espacio vertical adicional entre dos encabezados de sección si se suceden, es decir, no hay otro texto ni nada más entre ellos. ¿Existe algún comando if condicional que tal vez use 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}
Respuesta1
En general, debe adaptarse a todas las posibles combinaciones de argumentos ofrecidas pormemoir
's \section
. Específicamente, se necesitan dos argumentos opcionales (para el ToC y el encabezado en ejecución). Aparte de eso, se puede escanear para ver si el siguiente 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}
Aquí hay otra opción:
Defina una macro \ifnextcommandis{<this>}{<true>}{<next>}
que tome tres argumentos. Usted especifica <this>
y <true>
y se supone que lo que sigue a su macro será la <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}}%
}