我有一份用 tex 编写的文档,虽然它是一份较大文档的缩短版。例如,我的短文档有 10 页,一旦我对短文档中的某些部分进行详细说明,它将变成 15 页。我想创建一个基本上有 25 页长的新文档,其中前 10 页是短文档,后 15 页是长版本(放在附录中)。15 页部分的内容将重复前 10 页的大量内容。
我有两个问题。
是否可以将短版本和长版本一起编译到一个 tex 文件中(即,整个 25 页文档的内容都位于同一个 tex 文件中)?我知道的唯一方法需要进行大量工作,包括更改标签名称/参考、方程式等。
我猜有一种方法可以将短版本和长版本合并为两个单独的 pdf 文件(一个 10 页,另一个 15 页),尽管我不喜欢这样做。pdfpages 是实现此目的的最佳方法吗?如果我想让附录部分从短文档末尾的一页中间开始(而不是从新的空白页开始),该怎么办?
这是一个例子。但这会导致警告,我想避免这种情况,并且我必须单独更改标签以修复这些警告(不仅有警告,而且现在两个方程式参考都引用附录中的第二个方程式):
\begin{document}
\section{main}
My equation:
\begin{equation}\label{eqn:addition}
1 + 1
\end{equation}
Equation~\ref{eqn:addition}
\appendix
\section{main}
My equation with some elaboration:
\begin{equation}\label{eqn:addition}
1 + 1
\end{equation}
Equation~\ref{eqn:addition} with more elaboration
\end{document}
答案1
如果我理解了这个问题,您担心的是有关标签的警告/错误。
LaTeX 警告:标签“eqn:addition”已多次定义。
避免这种情况的一种方法是重新定义\label
and ,\ref
就在新内容之前,使用类似的方法:
\let\OrigLabel\label
\let\OrigRef\ref
\renewcommand{\label}[1]{\OrigLabel{NEW##1}}%
\renewcommand{\ref}[1]{\OrigRef{NEW:##1}}%
它会自动更改和的任何新用途\label
以\ref
引用新内容。也就是说任何使用\label{foo}
和\ref{foo}
后s\renewcommand
被视为就像您输入了\label{foo-new}
and一样\ref{foo-new}
。
此外,amsmath
我们还需要重新定义\label@in@display
如何在对齐环境中重新定义 \label 命令。
代码:
\documentclass{article}
\usepackage{amsmath}
\usepackage[colorlinks=true]{hyperref}
\makeatletter
\newcommand*{\StartNewContent}{%
\let\OrigLabel\label%
\let\OrigRef\ref%
\renewcommand{\label}[1]{\OrigLabel{NEW##1}}%
\renewcommand{\ref}[1]{\OrigRef{NEW:##1}}%
\renewcommand{\label@in@display}[1]{%
\ifx\df@label\@empty\else
\@amsmath@err{Multiple \string\label's:
label '\df@label' will be lost}\@eha
\fi
\gdef\df@label{NEW:##1}%
}%
}
\makeatother
\begin{document}
\section{main}
My equation:
\begin{equation}\label{eqn:addition}
1 + 1
\end{equation}
Equation~\ref{eqn:addition}
\appendix
\section{main}
\StartNewContent
My equation with some elaboration:
\begin{equation}\label{eqn:addition}
1 + 1
\end{equation}
Equation~\ref{eqn:addition} with more elaboration
\end{document}