![关于 \includeonly 的一个问题](https://linux22.com/image/450339/%E5%85%B3%E4%BA%8E%20%5Cincludeonly%20%E7%9A%84%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98.png)
我翻译的新书由 A 卷和 B 卷组成。每卷必须有自己的索引和目录,页码从 1 开始,但当然两卷之间的交叉引用必须有效。假设整本书(作为示例)有 8 章,每卷包括 4 章(A 卷包括第 1、2、3 和 4 章,B 卷包括第 5、6、7 和 8 章)。我有两个文件 VolumeA.tex 和 VolumeB.tex,内容如下(最少):
VolumeA.tex
\includeonly {Chapter01,Chapter02,Chapter03,Chapter04}
\begin{document}
\include{Chapter01}
\include{Chapter02}
\include{Chapter03}
\include{Chapter04}
\include{Chapter05}
\include{Chapter06}
\include{Chapter07}
\include{Chapter08}
\end{document}
卷B.tex
\includeonly {Chapter05,Chapter06,Chapter07,Chapter08}
\begin{document}
\include{Chapter01}
\include{Chapter02}
\include{Chapter03}
\include{Chapter04}
\include{Chapter05}
\include{Chapter06}
\include{Chapter07}
\include{Chapter08}
\end{document}
为了获得有效的交叉引用,我在注释中使用相应的 \includeonly 来编译每一卷,例如
%\includeonly {Chapter01,Chapter02,Chapter03,Chapter04}
为了创建相关的辅助文件,然后启用此行(即不带注释)以便使用相应的四个文件创建 pdf(我在 MikTEX / Windows 10 下使用 xelatex)。即使我得到了正确的结果,我注意到:
- 每卷的目录包含全部八个章节,而不仅仅是本卷相应的四个章节。
- 生成的主题索引是整本书的索引,而不是相关卷的索引。
- 两卷的页码是连续的,在B卷的第一个文件里用 \setcounter{page}{1} 命令可以解决这个问题,但是会影响目录(当然如果解决了第一个问题就没问题了,毕竟B卷从头开始编号是我们希望的),而且索引也是连续编号的。
是否有可能消除上述问题并获得问题开头描述的情况,或者这只是 LaTEX 的工作方式,我必须采用这种方式并进行适当的更正?
答案1
你需要停止几乎所有\include
设计用来做的事情。所以在这里我不会用它\includeonly
来制作卷(你仍然可以在编辑时使用它来快速制作一章的草稿)
使用两个单独的文档使用xr
包来管理\label
和\ref
体积.tex
\documentclass{book}
\usepackage{xr}
\externaldocument{volumeb}
\begin{document}
\include{Chapter01}
\include{Chapter02}
\include{Chapter03}
\include{Chapter04}
\end{document}
体积b.tex
\documentclass{book}
\usepackage{xr}
\externaldocument{volumea}
\begin{document}
\include{Chapter05}
\include{Chapter06}
\include{Chapter07}
\include{Chapter08}
\end{document}
您仍然可以将\ref
一卷中的内容转换为\label
另一卷中的内容。