所以我一直在尝试学习如何使用 Latex 将多个文件编译成一个 pdf。我在 Windows 10 上使用 TexMaker。
我按照以下方式组织:
Dropbox
-主要的
--Main.tex
-文件1
--文件1.tex
-文件2
--文件2.tex
希望这很容易理解。不确定是否有标准的方式来表示文件嵌套。
我开始尝试只用一个 Latex 文件来整合所有其他文件,但无法成功。据我所知,我认为这是因为我的文件没有被写入更大的主文件。
因此,我决定使用 \includepdf 来获取我的各个文件的输出(每个文件都会产生自己的输出)并将它们放在一起。这或多或少是可行的,但我的问题是我无法让编译器查找主文件所在目录以外的目录。所以我想知道我是否可以让我的 File1.tex 在 File1 和 Main 中都放置一个 pdf?这样我就不必一直复制粘贴了。
如果您能说得具体一点,我将不胜感激,因为我对像这样操作 Latex 还很陌生。我也愿意听取您的任何其他建议。
谢谢。
答案1
正如 Christian Hupfer 所说他的评论,通常无法单独编译\input
完整的.tex
文件。但是,您可以使用docmute
包。下面是摘录自手册;
它 [docmute 包]
\documentclass
以这样的方式重新定义命令,即\begin{document}
跳过此命令和 之间的所有内容,以及 之后的所有内容\end{document}
。
模仿你展示的目录,让目录结构为
cd/
├─parent/
| └parent.tex
├─child1/
| └child1.tex
└─child2/
└child2.tex
您所要做的就是加载docmute
包parent.tex
。
% parent.tex
\documentclass{article}
\usepackage{docmute}
\newcommand*\child[1]{This is \texttt{child#1.tex}.}
\makeatletter
\def\input@path{{../}}
\makeatother
\begin{document}
\input{child1/child1}\par
\input{child2/child2}
\end{document}
% child1.tex
\documentclass{article}
\begin{document}
This is \texttt{child1.tex}.
\end{document}
% child2.tex
\documentclass{article}
\begin{document}
\child{2}
\end{document}
然后,您可以分别编译parent.tex
和child1.tex
。
但是,这里出现了一个问题;考虑编译child2.tex
。由于\child
仅在父文件中定义,因此运行pdflatex child2.tex
会抛出! Undefined control sequence.
您需要小心应该定义哪些用户定义的宏以及应该在子文件中加载哪些包。作者说
不会尝试分析序言的实际内容 — 只是将其丢弃。用户需要确保主文档加载子文档所需的所有包。若要在文档之间轻松共享(部分)序言,只需将其放在单独的文件中,然后放在
\input
每个文档中即可。
虽然这个技巧有上面提到的限制,但我希望它能对你有所帮助。