Latex 编译出 \begin{document} 等

Latex 编译出 \begin{document} 等

我正在用 latex 写一篇论文,每一章都在自己的 TeX 文件中,并包含在命令中\input{Chapters/Chapter1}。我的其中一章是用 Sweave(R 代码)生成的,并在顶部包含\documentclass{article}\begin{document}\end{document}- 这会干扰编译完整文档 - 所以我每次编译时都会手动删除它们。我正在寻找一种方法来在编译完整文档时删除这些行。谢谢。

答案1

通常你不能这样做,因为像 这样的宏\usepackage只能在序言中设置。但是,如果自动生成的章节的序言足够简单,而且似乎是因为你说你只编辑了\documentclass\begin{document}和,那么你可以通过重新定义和完整论文文件中的环境来\end{document}自动化该过程,除了吞噬他们的论点之外什么都不做。环境基本上会创建一个组并在开头和结尾扩展。棘手的是,你仍然需要扩展完成整个文档的最后一个。你可以定义为因为一旦组关闭就会恢复。这样做的问题是章节将位于不同的组中,因此你所做的任何更改都不会是全局的。所以最好关闭该组并让其重新定义自身。以下 MWE 提供了一种解决方案\documentclassdocumentdocument\document\enddocument\enddocument\document\def\document{\def\enddocument{}}\enddocument\document\endocument

\RequirePackage{filecontents}

\begin{filecontents*}{\jobname-A.tex}
\documentclass{article}
\begin{document}
This is file A
\end{document}
\end{filecontents*}

\begin{filecontents*}{\jobname-B.tex}
\documentclass{article}
\begin{document}
This is file B
\end{document}
\end{filecontents*}

\documentclass{article}
\begin{document}
\renewcommand{\documentclass}[2][]{}
\let\enddocumentOrig\enddocument
\def\document{\endgroup\def\enddocument{\def\enddocument{\enddocumentOrig}\begingroup}}

This is the main file

\input{\jobname-A}

\input{\jobname-B}

\end{document}

答案2

只需添加docmute包裹你的序言:

在此处输入图片描述

\RequirePackage{filecontents}

\begin{filecontents*}{\jobname-A.tex}
\documentclass{article}
\usepackage{mwe}
\begin{document}
This is file A
\end{document}
\end{filecontents*}

\begin{filecontents*}{\jobname-B.tex}
\documentclass{article}
\usepackage{lipsum}
\begin{document}
This is file B
\end{document}
\end{filecontents*}

\documentclass{article}
\usepackage{docmute}
\begin{document}

This is the main file

\input{\jobname-A}

\input{\jobname-B}

\end{document}

docmute重新定义\input\include排除\begin{document}...之外的任何内容\end{document}


includex(与 MiKTeX 一起分发)通过提供类似的界面\includedoc(还有一个带星号的版本)。

相关内容