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文件内容的任何建议?
我在这看到两种方法.要么仔细构建你的文档,要么使用一些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)
把它放在一些常见的包含文件中,由你的个人文件使用:
\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它们。