LaTeX中的条件导入?

Bra*_*ers 4 import conditional latex

我将接受大量的讲义,然后将它们编译成LaTeX,这样我就可以获得优秀的文档,以便将来我可以查看.我正在尝试组织一些事情,这样我就可以得到一些包含讲座笔记的小文档,然后在学期结束时将它们编译成一个包含所有文档的大文档.我过去成功使用了import/include等,但是在编译主文档之前我必须删除子文档的头部和脚部的内容.例如,我必须删除:

\begin{document}
Run Code Online (Sandbox Code Playgroud)

\end{document}
Run Code Online (Sandbox Code Playgroud)

在编译主文档之前从每个子文档.这对于包含5个左右的部分的报告来说很好,但对于100多个部分的东西来说,这很麻烦.使用import命令时以编程方式忽略LaTeX文件内容的任何建议?

Jac*_*lly 5

我在这看到两种方法.要么仔细构建你的文档,要么使用一些hacky TeX魔法:

聪明的方式

将较小的文档分成标题部分,页脚部分和内容部分.

header.tex:

\documentclass{article}
...
\begin{document}
Run Code Online (Sandbox Code Playgroud)

footer.tex:

\end{document}
Run Code Online (Sandbox Code Playgroud)

FOO-content.tex:

In this paper, we discuss an new approach to metasyntactic variables...
Run Code Online (Sandbox Code Playgroud)

foo.tex(小纸版):

\include{header}
\include{foo-content}
\include{footer}
Run Code Online (Sandbox Code Playgroud)

在.tex中收集的文章文档:

\include{foo-content}
Run Code Online (Sandbox Code Playgroud)

hacky TeX方式

把它放在一些常见的包含文件中,由你的个人文件使用:

\ifx\ismaindoc\undefined
\newcommand{\inbpdocument}{\begin{document}}
\newcommand{\outbpdocument}{\end{document}}
\else
\newcommand{\inbpdocument}{}
\newcommand{\outbpdocument}{}
\fi
Run Code Online (Sandbox Code Playgroud)

使用\inbpdocument\outbpdocument在您的个人文件中,代替\begin{document}\end{document}.在您的主文件中,放入\def \ismaindoc {}包含或导入任何内容之前.


小智 2

这是另一种可能的方法:如果您将魔术字符串(即% % BEGIN LECTURE % %... % % END LECTURE % %)放入各个文件中,您可以 awk 取出各个文件的内容,使用 make/sh 组装它们,然后再组装\include它们。

  • 为什么不让这些神奇的字符串成为“\begin{document}”和“\end{document}”呢? (2认同)