不包含分页符

不包含分页符

我真的很喜欢这个\input命令,但我更喜欢的是这个\includeonly命令。有没有办法兼具这两个优点?(即有分页符\inputonly还是\include没有分页符?)

答案1

你不会得到\include给出的行为,它保存缺少的页码、章节/脚注/方程式/定理/等计数器、书目引用等,但如果你想要的只是有条件地选择要编译的文档部分的能力,那么有几个选项,如常见问题解答中讨论. commentversionoptionalversions包允许这样做。

答案2

\clearpage如果您确实想要抑制由末尾的引起的分页符\include,那么您可以暂时重新定义该宏。

filehook包可用于以下用途:

\usepackage{filehook}
\AtEndOfIncludes{%
  \global\let\savedclearpage\clearpage
  \global\let\clearpage\relax
}
\AfterIncludes{%
  \global\let\clearpage\savedclearpage
}

我现在不确定\global这里是否需要但它不会造成损害。

正如前面提到的不保证不再能\includeonly提供正确的结果,例如页码,因为最后一页没有被刷新。


如果您只想抑制某些输入文件,那么您需要一个\inputonly宏:

% You can put this into a `.sty` file and load it with `\usepackage{ }`
\makeatletter
\newcommand*{\inputonly}[1]{\gdef\@inputonly{,#1,}}
\@onlypreamble\inputonly % Make it only valid in the preamble 
\newcommand*{\oinput}[1]{%
   \begingroup
   \edef\@tempa{{,#1,}{\@inputonly}}%
   \expandafter\in@\@tempa
   \ifin@
     \endgroup
     \input{#1}%
     % Dump counter values here
   \else
     \endgroup
     % maybe add a \message{ } here
     % Load counter values here
     \expandafter\ignorespaces
   \fi
}

用法:

\documentclass{article}
% Insert or load above code

% Use `\oinput` instead of `\input`:
\inputonly{aa,bb,cc}
\begin{document}
\oinput{aa}
\oinput{bb}
\oinput{ccc}% will not be `\input`ed
\oinput{cc}
\end{document}

软件包还使用此\input宏读取大量其他文件,因此无法安全地覆盖它。\oinput必须改用其他名称,例如 。

如果您想要保留计数器值,则必须自行转储和加载它们。请参阅代码以了解\include如何完成。

答案3

\documentclass{article}
\makeatletter
\def\inputonly#1{\inputonly@i#1,,\@nil}
\def\inputonly@i#1,#2,#3\@nil{%
  \global\@namedef{#1input}{#1}
  \ifx\relax#2\relax\else\inputonly@i#2,#3\@nil\fi}
\def\Input#1{\expandafter\ifx\csname#1input\endcsname\relax\else\input{#1}\fi}
\makeatother
\inputonly{aa,bb,cc}

\begin{document}
\Input{aa}
\Input{bb}
\Input{ccc}% will not be read
\Input{cc}
\end{document}

答案4

我想我已经明白你需要什么了。如果你不喜欢章节末尾烦人的分页符,你应该使用“openany”,如下所示:

‎\documentclass[openany]{book}‎

相关内容