我必须发布两个版本的文档:
- 原版完整版
- 必须排除已在其他地方发表的章节
我的问题与版本 2 有关。简单地删除相应的章节是行不通的,因为我有三个限制:
- 我必须保留原始的页码(即使会有编号间隙)
- 两个版本的目录必须相同
- 如果删除了章节,我必须添加一个页面,表明该章节内容不存在,因为它已在其他地方发布
举个例子,以下是“原始完整版本”:
- 内容
- 第1章…………1
- 第二章…………28
- 第三章…………86
- 第 1 章(第 1-27 页)
- 第 2 章(第 28-85 页)
- 第 3 章(第 86-110 页)
假设“第 2 章”已在其他地方出版。因此,我必须删除第 28-85 页。此外,我必须在第 28 页上显示一条注释,说明这些内容不可用,因为它们已在其他地方出版。因此,在 *.pdf 文件中,第 86 页紧跟在第 28 页之后(编号间隙)。两个版本的第 28 页示例:
第 28 页:原始完整版:
第 28 页:精简版(第 2 章已被删除):
使用\includeonly
和\nofiles
可以删除章节,同时保留页码和目录。但是,我不知道如何用缩小的页面替换原始的“章节”页面,如上所示。
一个完美的解决方案将允许我使用某种开关来编译不同的版本。
答案1
你可以这样做:
\documentclass{book}
\usepackage{etoolbox}
\usepackage{lipsum}
\newif\iffullversion
%\fullversiontrue
\newcommand{\extrainclude}[3]{%
\iffullversion\else
\expandafter\preto\csname cp@#1\endcsname{%
\chapter{#2}
The contents of this chapter has already appeared in \cite{#3}
\cleardoublepage
}
\fi
\include{#1}
}
\iffullversion\else
\includeonly{chapter1,chapter3}
\fi
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\include{chapter1}
\extrainclude{chapter2}{This will not appear}{whatever}
\include{chapter3}
\begin{thebibliography}{1}
\bibitem{whatever} I. Myself, My precious paper, 2015.
\end{thebibliography}
\end{document}
您可以修改定义以\extrainclude
使用第三个参数(而不是参考书目条目),您可以在其中插入完整数据。
如果你取消注释该\fullversiontrue
行,则会生成整个文档。当然,请在注释之前取消注释。
诀窍在于,如果chapter2.tex
从中排除\includeonly
,LaTeX 将执行宏\csname cp@chapter2\endcsname
,我们在宏中添加适当的操作;然后将遵循标准行为,即将计数器重置为其先前的值。