2 つのセクション間の条件付き vspace ですか?

2 つのセクション間の条件付き vspace ですか?

2 つのセクション見出しが連続している場合、つまり、間に他のテキストや何かがない場合は、セクション見出しの間に垂直方向のスペースを追加したいと思います。if@aftersection などを使用する条件付き if コマンドはありますか?

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

答え1

一般的には、memoirです\section。具体的には、2 つのオプション引数 (ToC と実行ヘッダー用) を取ります。それ以外にも、次のトークンが を\section使用しているかどうかを確認するためにスキャンすることができます\@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}

別のオプションは次のとおりです。

\ifnextcommandis{<this>}{<true>}{<next>}3 つの引数を取得するマクロを定義します。<this>と を指定する<true>と、マクロに続くものはすべてマクロであると想定されます<next>

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

関連情報