如何使用子文件和独立文件来生成几代 LaTeX 文件?

如何使用子文件和独立文件来生成几代 LaTeX 文件?

我正在用 LaTeX 写论文,我的文献综述现在包含一些 TikZ 图表。我可以编辑个别图表,也可以编辑整篇论文,但我无法编辑文献综述本身。

我能够构建一个最小工作示例来演示我的问题。这是我第一次编写 MWE,也是我第一次使用,filecontents所以请随时提出建议,让我可以改进我在这里所做的工作。

% "pdflatex thesis.tex" works correctly
% "pdflatex varieties.tex" works correctly
% "pdflatex litreview.tex" does not work correctly, and generates the following output:
% ! LaTeX Error: Can be used only in preamble.
% 
% See the LaTeX manual or LaTeX Companion for explanation.
% Type  H <return>  for immediate help.
%  ...
% 
% l.5 \documentclass
%                   {standalone}
\begin{filecontents}{thesis.tex}
\documentclass{book}
\usepackage[english]{babel} % just for the MWE
\usepackage{blindtext} % just for the MWE
\usepackage{standalone}
\usepackage{subfiles}
\input{preamble}
\begin{document}
    \chapter{Lit Review}
    \subfile{litreview}
\end{document}
\end{filecontents}
\begin{filecontents}{preamble.tex}
\usepackage{tikz}
\usetikzlibrary{mindmap}
\end{filecontents}
\begin{filecontents}{litreview.tex}
\documentclass[thesis.tex]{subfiles}
\begin{document}
    \blindtext
    \begin{figure}
        \input{varieties}%
        \caption{Caption}
    \end{figure}
    \blindtext
\end{document}
\end{filecontents}
\begin{filecontents}{varieties.tex}
\documentclass{standalone}
\ifstandalone
    \input{preamble}%
\fi
\begin{document}
    \tikz[mindmap,concept color=red,text=black,grow cyclic]
        \node[concept] {Traditional}; % [clockwise from=0]
\end{document}
\end{filecontents}

我四处询问并在论坛中搜索答案,但尚未找到可以让我正确构建所有三个文档的解决方案。请帮忙!

编辑:请注意,我没有绝对的理由同时使用standalonesubfiles。我之所以从使用开始,subfiles是因为这种模式对我有用,而且standalone对这个人物也很有效。如果同时使用两者不被认为是最佳实践,那么我很乐意看到一个 MWE 可以完成我的 MWE 所做的事情,但只使用standalonesubfiles而不同时使用两者。

答案1

经过相当多的修改后,我能够仅按照standalone@PeterGrill 的建议重写我的示例。

以下是我的回答:

\documentclass{minimal}
\usepackage{filecontents}
\begin{filecontents}{thesis.tex}
\documentclass{book}
\input{preamble}
\begin{document}

    \chapter{Lit Review}
    \input{litreview}%

\end{document}
\end{filecontents}
\begin{filecontents}{preamble.tex}
\usepackage[english]{babel} % just for the MWE
\usepackage{blindtext} % just for the MWE
\usepackage{standalone}
\usepackage{tikz}
\usetikzlibrary{mindmap}
\end{filecontents}
\begin{filecontents}{litreview.tex}
\documentclass[preview]{standalone}
\input{preamble}
\begin{document}

    \blindtext

    \begin{figure}
        \input{varieties}%
        \caption{Caption}
    \end{figure}

    \blindtext

\end{document}
\end{filecontents}
\begin{filecontents}{varieties.tex}
\documentclass[tikz]{standalone}
\input{preamble}
\begin{document}

    \tikz[mindmap,concept color=red,text=black,grow cyclic]
        \node[concept] {Traditional}; % [clockwise from=0]

\end{document}
\end{filecontents}
\begin{document}
Placeholder content.
\end{document}

这个 MWE 还有一些其他的改进:包装文件现在编译时没有错误,并且有一些额外的空格,使得输出更干净一些。

preview此解决方案的关键是将和tikz作为选项添加到standalone文档类声明中。这些添加使各个文件能够正确编译。该tikz选项可能不是必需的,但它也提醒我这是一个图片文件,所以我保留了它。

相关内容