在单个文档中包含完整的文件

在单个文档中包含完整的文件

可能重复:
创建一个 .tex 文件,将子目录中的完整 .tex 文档合并在一起

我有几个文件,最初打算将它们作为独立文档。但现在我希望将它们编译成一个文档。问题是每个文件都有自己特定的包、标题等,\include对于这样的文档来说,方法并不那么简单。(我必须在主文件中包含相同的包列表,并在子文档中将它们全部注释掉,这是一个漫长的手动过程。)

除了外部合并 PDF 之外,将它们全部编译在一起的最佳方法是什么?

答案1

我一直将此{standalone}包用于此目的。主要文件应使用:

\documentclass[preview=false]{standalone}

或者在前言的开头附近加载standalone包。子文件所需的完整前言应由主文档加载。

在下面的示例中,我使用了filecontents包只是为了能够将子文件包装成一个代码示例。因此,subfile.tex这里的文件是一个子文件,在本例中它由一个图形组成tikz。此文件可以单独编译。主文件正在加载:

\usepackage{standalone}
\usepackage{tikz}

然后只需用来\input{subfile}导入子文件即可。

代码:

\documentclass{article}
\usepackage{standalone}
\usepackage{tikz}

\usepackage{filecontents}
\begin{filecontents}{subfile.tex}
    \documentclass{article}
    \usepackage{tikz}
    
    \begin{document}
    \begin{tikzpicture}
    
    \coordinate (EllipseOrigin) at (0,0);
    \newcommand*{\XRadius}{4.0}
    \newcommand*{\YRadius}{3.0}
    
    \draw [blue, thin, ->] (-5,0) -- (5,0) node [right] {$x$};
    \draw [blue, thin, ->] (0,-4) -- (0,4) node [above] {$y$};
    
    \draw [red, ultra thick]% Graph Ellipse
        (EllipseOrigin) ellipse [x radius=\XRadius,y radius=\YRadius];
    
    \end{tikzpicture}
    \end{document}
\end{filecontents}

\begin{document}
    \input{subfile}
\end{document}

独立类还有subpreambles包选项,允许您使用子文件的前言。因此,如果您无法在主文件中为所有子文件设置一个前言,那么这可能是一个有用的选项。


还有包裹combine,它还允许您将多个单独的文档合并为一个文档。

答案2

除了相关问题之外,subfiles包裹提供了类似的功能。从软件包 README 中:

使用subfiles用户可以更舒适地处理多文件项目,从而既可以单独处理附属文件,也可以处理包含它们的主文件,而无需对任何一个进行任何更改。

相关内容