我不知道该怎么做,我确实看了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}