同时使用子文件包和输入

同时使用子文件包和输入

我想调用文件夹中的某些文件。因此我有 3 个文件: 1. main.tex (在根目录中) 2. command.tex (在 ./chapters 中) 3. control1.tex (在 ./chapters 中) 这些文件包含以下代码:主要:

\documentclass{report}
\usepackage{subfiles}
\input{chapters/commands}

\begin{document}

\subfile{./chapters/control1.tex}

\end{document}

命令:

\usepackage{graphicx}

控制1:

\documentclass[../main.tex]{subfiles}
\begin{document}
\chapter{Control }
\section{intro}
some text
\end{document}

当我运行 main.tex 时,一切看起来都很好,没有错误。但如果我运行 control1.tex,我会得到这个错误:

在此处输入图片描述

需要指出的是,没有命令它也能完美运行。我该怎么办?我的目标是将命令行放在单独的文件中。

答案1

我只是将我的评论变成答案,因为它解决了 OP 的问题。

问题是,当./chapters编译文件夹中的文件时,它找不到文件夹中的文件./chapters/commands.tex,因为这是相对于文件的路径main.tex。我在组织论文文件时遇到了同样的问题:最简单的解决方案是将所有subfilesmain文件保存在同一个目录中 - 这样每个文件的相对路径都是相同的,并且\input应该可以正常工作。

如果这不可能的话,您可能需要尝试 Heiko Oberdiek 在此答案中给出的解决方案:https://tex.stackexchange.com/a/79060/74960

答案2

如果使用 \subfile必须将子文件设置为

\documentclass[../main.tex]{introduction}
\begin{document}
  % content The first line is needed, for the compiler
  % This way it knows where the main.tex lays.
  % The subfile does not require any header.
  % introduction.tex uses the main.tex header
\end{document}

main.tex其包括为\subfile{Subfiles/01_introduction/introduction}

+这样就可以从子文件内部进行编译,因为依赖关系是明确的。我建议这样做,因为这样可以实现清晰度。

每个章节可以使用一个文件夹,其中包含与该章节相关的所有附加信息,例如照片或图表。

答案3

一种可能的解决方案是不继承main.tex中的文档类和设置./chapters/control1.tex。相反,您可以在其自身中定义文档类和序言control1.tex
在文件中chapter/control1.tex而不是继承(第一行):

\documentclass[../main.tex]{subfiles}

\begin{document}
\chapter{Control }
\section{intro}
some text
\end{document}

更改为:

\documentclass{report}
\usepackage{subfiles}

%rest is same
\begin{document}
\chapter{Control }
\section{intro}
some text
\end{document}

相关内容