我想调用文件夹中的某些文件。因此我有 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
。我在组织论文文件时遇到了同样的问题:最简单的解决方案是将所有subfiles
和main
文件保存在同一个目录中 - 这样每个文件的相对路径都是相同的,并且\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}