我真的很喜欢这个\input
命令,但我更喜欢的是这个\includeonly
命令。有没有办法兼具这两个优点?(即有分页符\inputonly
还是\include
没有分页符?)
答案1
你不会得到\include
给出的行为,它保存缺少的页码、章节/脚注/方程式/定理/等计数器、书目引用等,但如果你想要的只是有条件地选择要编译的文档部分的能力,那么有几个选项,如常见问题解答中讨论. comment
、version
、optional
、versions
包允许这样做。
答案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}