关于 \includeonly 的一个问题

关于 \includeonly 的一个问题

我翻译的新书由 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)。即使我得到了正确的结果,我注意到:

  1. 每卷的目录包含全部八个章节,而不仅仅是本卷相应的四个章节。
  2. 生成的主题索引是整本书的索引,而不是相关卷的索引。
  3. 两卷的页码是连续的,在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另一卷中的内容。

相关内容