将单独的文档章节编纂成没有重复参考的书籍?

将单独的文档章节编纂成没有重复参考的书籍?

我正在尝试收集一组独立的文档,每个文档都有自己的序言和 begin{document}行文,将它们整理\end{document}成一本书。我查看了软件包subfiles并尝试过\include,但所有这些都要求我将一个共同的序言整理成一个文件main.tex,然后\include分别整理每个文件。这样做的问题是,我失去了独立编译每个单独的章节,因为每个章节的序言都必须在合并到时删除main.tex。因此,如果我以后想单独编译每个章节,我必须替换序言,然后编译。我想避免手动执行此操作,因为有很多章节。

另一个问题是,每个单独的章节都有标签,例如fig:figure1。单独编写每个章节时不会产生歧义,但是将它们合并成一本书时,它们就会变得含糊不清。

有办法解决这些问题吗?

答案1

首先,我认为合并相似的前言是一种好的做法。例如,如果子文件在其前言中为特殊符号定义了宏,那么将所有此类定义外包到例如中是一个好主意,mysybols.sty然后所有子文件都可以加载它,并轻松合并到主前言中。

除此之外,您可能正在寻找standalone包。此包可以执行子文件的前言,请参阅下面的示例。但请注意,子前言中的冲突定义或包选项无法解决。这留下了多重定义标签的问题。我建议一种通过在前面添加章节号来使这些标签唯一的方法。为此,\label和的定义\ref被更改。如果您使用其他不属于和来自包的交叉引用宏,\label则必须以相同的方式处理它们。请注意,和的重新定义在这里之后,即使在更改它们之后,这些重新定义仍然有效。\ref\crefcleveref\label\ref\begin{document}hyperref

这里有两个小的子文件,都定义了一个宏,并且都使用了标签fig:1

subfile1.tex

\documentclass{article}
\usepackage[colorlinks]{hyperref}
\newcommand{\foo}{first subfile}

\begin{document}
\section{First section of \foo}
\begin{figure}
  \caption{A figure of \foo}\label{fig:1}
\end{figure}
See Figure~\ref{fig:1}.
\end{document}

subfile2.tex

\documentclass{article}
\usepackage[colorlinks]{hyperref}
\newcommand{\baz}{second subfile}

\begin{document}
\section{First section of \baz}
\begin{figure}
  \caption{A figure of \baz}\label{fig:1}
\end{figure}
See Figure~\ref{fig:1}.
\end{document}

现在是主要文件:

\documentclass{report}
\usepackage[colorlinks]{hyperref}
\usepackage[subpreambles=true]{standalone}

\begin{document}
\let\oldlabel\label
\renewcommand{\label}[1]{\oldlabel{\thechapter:#1}}
\let\oldref\ref
\renewcommand{\ref}[1]{\oldref{\thechapter:#1}}
\tableofcontents
\chapter{First chapter including first subfile}
\input{subfile1}

\chapter{Second chapter including second subfile}
\input{subfile2}
\end{document}

如果子序言有冲突,而您又不想整理,最好的选择可能是使用软件包合并 pdf 文件pdfpages,或者甚至使用 之类的工具将 pdf 文件粘贴在一起pdfjoin。但请注意,pdfpages您将丢失子 pdf 中的所有超链接。

相关内容