¿Vspace condicional entre dos secciones?

¿Vspace condicional entre dos secciones?

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á \sectionusando \@ifnextchar:

ingrese la descripción de la imagen aquí

\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}}%
}

información relacionada