@celenius - 如果你真的想摆脱那个分页符,这是一个非常肮脏的技巧......
\makeatletter
\let\O@@input@\@input@
\def\@noclearpage{\@ifnextchar\clearpage\@gobble\relax}
\def\@input@#1{\O@@input@{#1}\@noclearpage}
\let\O@@include\@include
\def\@include{\expandafter\@noclearpage\O@@include}
\让\O@包括\包括
\def\include{\expandafter\@noclearpage\O@include}
\makeatother
基本上我们对\include
宏执行手术以摆脱所有\clearpage
实例,但是如您所见,最干净的方法仍然很脏。这非常脆弱,可能只适用于article
班级,所以如果你使用不同的\documentclass
,你就不走运了。我基本上是通过启用\tracingcommands=1
和\tracingmacros=1
grep.log
文件来得出这一点的,\clearpage
这样我就可以破解在它之前被调用的任何内容以插入\@noclearpage
.
我不推荐这个解决方案 - 最好研究一下如何chapterbib
工作并以正确的方式修复它,而不依赖于它生成\include
的单独.aux
文件......但我很肯定这将是一项非常艰巨的任务。我想另一种解决方法是编写一个命令来模拟文件\include
的分解.aux
,而不实际执行包含...
编辑:好的,这是一个快速的
\makeatletter
\新环境{辅助文件}[1]{\放松
\ifnum\@auxout=\@partaux
\@latex@error{auxfile 环境不能嵌套或\string\include d}
\@eha
\else\@changeaux{#1}\fi
}{\立即\closeout\@partaux\let\@auxout\@mainaux}
\def\@changeaux#1{%
\立即\写入\@mainaux{\string\@input{#1.aux}}%
\let\@auxout\@partaux
\立即\开放\@partaux#1.aux%
\立即\写\@partaux{\放松}}
\makeatother
然后你可以插入\begin{auxfile}{foo}...\end{auxfile}
,它将使用foo.aux
而不是普通.aux
文件。这是完全兼容的chapterbib
。我不认为 CTAN 有这样的东西,所以也许我会把它作为一个迷你包提交。