두 섹션 사이의 조건부 vspace?

두 섹션 사이의 조건부 vspace?

두 섹션 제목이 서로 이어지는 경우, 즉 섹션 제목 사이에 다른 텍스트나 다른 내용이 없는 경우 두 섹션 제목 사이에 수직 공백을 추가하고 싶습니다. 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. 특히 두 개의 선택적 인수(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>}. <this>and 를 지정하면 <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}}%
}

관련 정보