como desabilitar/habilitar o efeito de comando global do etoolbox em diferentes locais de um documento?

como desabilitar/habilitar o efeito de comando global do etoolbox em diferentes locais de um documento?

Não consigo descobrir como fazer isso e olhei para odocumentação do etoolbox

O problema é simples de explicar: eu uso o etoolbox para acrescentar um \clearpageantes de qualquer um \sectionem um documento grande para que cada seção comece em uma nova página. (é um documento estilo livro, mas o MWE abaixo é um artigo)

Existem algumas seções que são pequenas, e quero dizer ao etoolbox para não fazer isso na seção seguinte e, em seguida, solicitar que ele comece novamente após a conclusão da seção.

Como fazer isso? qual é o comando etoolbox ou Latex para isso?

Aqui está um 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.

Responder1

Uma possibilidade é criar uma opção e dependendo se a opção é verdadeira ou falsa executar o \clearpagecomando.

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

Responder2

Uma possibilidade é criar um comando que localmente (leiaem grupo) relaxé \clearpage:

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

Desta forma, \clearpageestá definido por padrão para todas as seções do documento, mas para \specialsections não se aplica.

O exemplo completo:

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

informação relacionada