如何在文档的不同位置禁用/启用 etoolbox 全局命令效果?

如何在文档的不同位置禁用/启用 etoolbox 全局命令效果?

我不知道该怎么做,我确实看了etoolbox 文档

\clearpage这个问题很容易解释:我使用 etoolbox 在一个大文档中的任何内容之前附加一个,\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默认情况下会为文档中的所有部分设置,但\specialsection不适用于 s。

完整示例:

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

相关内容