Wie kann ich den globalen Befehlseffekt von Etoolbox an verschiedenen Stellen in einem Dokument deaktivieren/aktivieren?

Wie kann ich den globalen Befehlseffekt von Etoolbox an verschiedenen Stellen in einem Dokument deaktivieren/aktivieren?

Ich bin nicht in der Lage herauszufinden, wie das geht, und ich habe mir dieetoolbox Dokumentation

\clearpageDas Problem ist einfach zu erklären: Ich verwende etoolbox, um in einem großen Dokument vor „any“ ein „anzufügen“, \sectionsodass jeder Abschnitt auf einer neuen Seite beginnt. (Es handelt sich um ein Dokument im Buchstil, aber das MWE unten ist ein Artikel.)

Es gibt einige Abschnitte, die klein sind, und ich möchte etoolbox anweisen, dies für den folgenden Abschnitt nicht zu tun und es dann anzuweisen, nach Abschluss des Abschnitts erneut zu beginnen.

Wie geht das? Was ist der Etoolbox- oder Latex-Befehl hierfür?

Hier ist ein MWE

\documentclass[12pt]{article}%        
\usepackage{etoolbox}\preto\section{\clearpage}
\usepackage{lipsum}
\begin{document}
\section{A}
\lipsum[75]

\section{B}
\lipsum[75]

%do not add \clearpage here, how? 
\section{C}
\lipsum[75]

%now start adding \clearpage, it is ok
\section{D}
\lipsum[75]
\end{document}

Texlive 2013, Linux Mint.

Antwort1

Eine Möglichkeit besteht darin, einen Schalter zu erstellen und den \clearpageBefehl abhängig davon auszuführen, ob der Schalter „true“ oder „false“ ist.

\documentclass[12pt]{article}%        
\usepackage{etoolbox}
\usepackage{lipsum}

\newtoggle{clearpagebeforesection}

\preto{\section}{\iftoggle{clearpagebeforesection}{\clearpage}{}}

\begin{document}
\toggletrue{clearpagebeforesection}
\section{A}
\lipsum[75]

\section{B}
\lipsum[75]

%do not add \clearpage here, how? 
\togglefalse{clearpagebeforesection}
\section{C}
\lipsum[75]

%now start adding \clearpage, it is ok
\toggletrue{clearpagebeforesection}
\section{D}
\lipsum[75]

\section{E}
\lipsum[75]
\end{document}

Antwort2

Eine Möglichkeit besteht darin, einen Befehl zu erstellen, der lokal (lesenin einer Gruppe) relaxes \clearpage:

% locally disable clearpage
\newcommand{\specialsection}[1]{
\begingroup
\let\clearpage\relax
\section{#1}
\endgroup
}

Diese Methode \clearpageist standardmäßig auf alle Abschnitte im Dokument eingestellt, auf die \specialsectiones jedoch nicht zutrifft.

Das vollständige Beispiel:

\documentclass[12pt]{article}%
\usepackage{etoolbox}

\preto\section{\clearpage}

% locally disable clearpage
\newcommand{\specialsection}[1]{
\begingroup
\let\clearpage\relax
\section{#1}
\endgroup
}

\usepackage{lipsum}
\begin{document}
\section{A}
\lipsum[75]

\section{B}
\lipsum[75]

% we use the new command
\specialsection{C}
\lipsum[75]

\section{D}
\lipsum[75]
\end{document}

verwandte Informationen