как отключить/включить эффект глобальной команды etoolbox в разных местах документа?

как отключить/включить эффект глобальной команды etoolbox в разных местах документа?

Я не могу понять, как это сделать, и я посмотрел надокументация etoolbox

Проблему легко объяснить: я использую etoolbox, чтобы добавить a \clearpageперед any \sectionв большом документе, чтобы каждый раздел начинался с новой страницы. (Это документ в книжном стиле, но MWE ниже — это статья)

Есть несколько небольших разделов, и я хочу указать etoolbox не делать этого для следующего раздела, а затем указать ему начать снова после завершения раздела.

Как это сделать? Какая команда etoolbox или Latex для этого нужна?

Вот 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.

решение1

Можно создать переключатель и в зависимости от того, является ли переключатель истинным или ложным, выполнить команду \clearpage.

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

решение2

Одна из возможностей — создать команду, которая будет выполняться локально (читайв группе) relaxес \clearpage:

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

Таким образом, \clearpageон устанавливается по умолчанию для всех разделов документа, но к разделу \specialsections он не применяется.

Полный пример:

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

Связанный контент