如何导入单独的独立乳胶文档并组装成一个文档

如何导入单独的独立乳胶文档并组装成一个文档

我不是在这里问\include\input。这些我都知道。

这是设置。我希望能够将我的一份 HW 报告构建为独立的文件,放在自己的文件夹中。然后,我还想将此 latex 文件和其他文件包含在某个父文件夹中的主 latex 文件中,以便我的整个课程将所有内容组合成一个文档。

问题是,要单独构建一个 HW,我需要将其作为完整的独立 Latex 文档。因此,当要将其导入主文档时,我必须注释掉每个 HW 文档中的所有前言,否则会出现错误。

请注意,我必须import为此使用包,而不是\include,因为import包可以正确处理相对路径。因此,我不能使用诸如 之类的东西,\includeonly{A/a}因为其中包含使用相对路径的图像,如果我仅使用或a.tex,我会收到有关找不到图像的错误。\input\include

我必须使用\subimport

最好给出一个简单的例子,而不是这么冗长。鉴于这种布局

 main.tex
     +
     |
     A/
   a.tex
   a.png

a.tex 是

 \documentclass{article}
 \usepackage{graphicx}    
 \begin{document}    
 \includegraphics{a.png}
 \end{document}

并且 main.tex 是

\documentclass{article}
\usepackage{graphicx}
\usepackage{import}
\begin{document}    
\subimport{A/}{a}  %notice that images included by a.tex are OK now
\end{document}

我可以a.tex正常构建。但要构建 main.tex,我必须对 a.tex 进行如下注释

 %\documentclass{article}
 %\usepackage{graphicx}    
 %\begin{document}    
 \includegraphics{a.png}
 %\end{document}

要再次单独使用 a.tex,请返回并取消注释这些行。这很累人。

如果在导入过程中有一个选项可以告诉它在导入文件时删除所有的乳胶前言,那就太好了!

有没有建议如何在没有这个手动步骤的情况下做到这一点?

我真的不想为了这个目的而将整个课程树折叠到一个文件夹中。我喜欢将每个项目和作业放在自己的文件夹中,这样我就可以将它们构建为单独的文档,但我也希望能够将整个树文档构建到一个文档中。

答案1

standalone包就是为此而编写的,即从子文件中删除前导码。为此,它重新定义了\documentclass(after \begin{document}) 以删除所有内容,直到\begin{document}并忽略任何其他document环境。该包在没有附带类的情况下运行良好standalone。但是,我还没有明确地用该import包测试它,但它应该可以工作。

答案2

去年我花了一些时间探索做这种事情的各种方法,最终得出结论:所有用于执行此类操作的软件包从根本上来说都是错误的方法,最好根本不要使用它们。

相反,创建与“框架”文件完全不同的“内容”文件,这样就不会有文件同时包含您想要在文档和序言中出现的文本。因此,在最简单的情况下,您可以执行以下操作:

框架.tex

\documentclass{article}
\begin{document}
  \input{content.tex}
\end{document}

内容.tex

Ipsus wotsisus thingyus \emph{bimble}

因此,内容文件只有在包含在框架文件中时才会起作用,并且所有显示选项都从框架文件中设置。如果您将序言分离到一个新文件中,则可以将其包含在不同的框架文件中,收集特定章节等,没有任何困难。这种方法有几个优点:

  1. 它并不需要处理任何特殊的包。
  2. 它将您的内容与显示选项完全分开;将您的内容放入新设置就像创建新的框架文件一样简单。
  3. 您不必在每个子文件的开头重复自己。

而且,就你的情况而言,你可以\import根据需要使用。缺点是总体上你拥有更多文件。我不能说我看到了太多问题,YMMV。

答案3

只需从子 latex 文件中删除 documentclass{} 等元素即可。如果您正在处理 latex 上的嵌套文件,则不需要在子 latex 文件中使用这些文件,而是需要将它们放在主 latex 文件中。

相关内容