我正在写一个很大的文档(几乎是一本书)的笔记,所以为了组织文档,我一直在使用子文件。大多数时候,我无法编译我正在处理的部分,而必须编译全部的文档而不是我正在处理的子部分。
以下是我的文件的组织方式:(我已将名称放在引号中)
我的文件夹就像这样......
FOLDER: "Main"
FILE: "ChapterA.tex"
FILE: "ChapterB.tex"
FILE: "ChapterC.tex"
FOLDER: "Sections"
FOLDER: "TopicA"
FILE: "SubsectionA1.tex"
FILE: "SubsectionA2.tex"
FILE: "SubsectionA3.tex"
FOLDER: "TopicB"
FILE: "SubsectionB1.tex"
FILE: "SubsectionB2.tex"
FILE: "SubsectionB3.tex"
FOLDER: "TopicC"
FILE: "SubsectionC1.tex"
FILE: "SubsectionC2.tex"
FILE: "SubsectionC3.tex"
FILE: "Main.tex"
FILE: "Preamble.sty"
FILE: "style.ist"
文件“Preamble.sty”看起来像......
\ProvidesPackage{Preamble}
\usepackage{--} %multiple packages for symbols and colors
\usepackage{morewrites}
\geometry{letterpaper,portrait, margin=1in}
[general formatting content for title and table of contents]
[creating some shortcuts and new commands that's used throughout the document using \DeclareMathOperator \newcommand and \catcode]
文件“Main.tex”看起来像这样......
\documentclass{article}
\usepackage{Preamble}
\usepackage{subfiles}
\makeindex[name=aa, title={TITLE},columns=1, intoc, options= -s style.ist]
\begin{document}
\subfile{Main/ChapterA} \NewPage
\subfile{Main/ChapterB} \NewPage
\subfile{Main/ChapterC} \NewPage
\printindex[aa]
\end{document}
文件 ChapterA、ChapterB、ChapterC 如下所示:
\documentclass[../Main.tex]{subfiles}
\begin{document}
\Section{Chapter A}
\subfile{Sections/TopicA/SubsectionA1}
\subfile{Sections/TopicA/SubsectionA2}
\subfile{Sections/TopicA/SubsectionA3}
\end{document}
所有子部分文件都采用类似的格式,如下所示......
\documentclass[../Main.tex]{subfiles}
\begin{document}
\subsubsection{topic}
\begin{itemize}
\item TEXT...
\end{itemize}
\subsubsection{topic}
Some basic description
\begin{itemize}
\item MORE INFO
\end{itemize}
\end{document}
当我在“ChapterA.tex”中编译文件时,整个章节都会编译,而没有之前或之后的内容。只有一个黄色错误(“包 auxhook 警告:无法修补 \document,而是使用 \AtBeginDocument。”)
但是当我在“SubsectionA1.tex”中编译时,该子节无法编译,并且出现重大错误('/usr/local/texlive/2017/texmf-dist/tex/latex/subfiles/subfiles.cls,第 40 行 LaTeX 错误:未找到文件“../Main.tex”。')
我尝试编辑 \documentclass[..],但无法像章节那样编译子节。为什么一个可以,而另一个不行?
答案1
我不得不修改一些路径并加载其他包以使您的文件可编译,但这样您的示例就可以正常工作。作为基本规则,
\subfile
路径信息是相对于包含或命令的文件的目录的\documentclass
。
% folder structure
% ----------------
% Main.tex
% Preamble.sty
% Main/ChapterA.tex
% Main/ChapterB.tex
% Sections/TopicA/SubsectionA1.tex
% Sections/TopicA/SubsectionA2.tex
% Sections/TopicB/SubsectionB1.tex
% Sections/TopicB/SubsectionB2.tex
% Main.tex
\documentclass{article}
\usepackage{Preamble}
\makeindex[name=aa, title={TITLE},columns=1, intoc, options= -s style.ist]
\usepackage{subfiles}
\begin{document}
\subfile{Main/ChapterA}
\subfile{Main/ChapterB}
\printindex[aa]
\end{document}
% Preamble.sty
\usepackage{imakeidx}
\usepackage{geometry}
\geometry{letterpaper,portrait, margin=1in}
% Main/ChapterA.tex
\documentclass[../Main.tex]{subfiles}
\begin{document}
\section{Chapter A}
\subfile{../Sections/TopicA/SubsectionA1}
\subfile{../Sections/TopicA/SubsectionA2}
\end{document}
% Main/ChapterB.tex
\documentclass[../Main.tex]{subfiles}
\begin{document}
\section{Chapter B}
\subfile{../Sections/TopicB/SubsectionB1}
\subfile{../Sections/TopicB/SubsectionB2}
\end{document}
% Sections/TopicA/SubsectionA1.tex
% Sections/TopicA/SubsectionA2.tex
% Sections/TopicB/SubsectionB1.tex
% Sections/TopicB/SubsectionB2.tex
\documentclass[../../Main.tex]{subfiles}
\begin{document}
\subsubsection{topic}
\begin{itemize}
\item TEXT...
\end{itemize}
\end{document}
然后分别编译文件就可以了(除了makeindex
未命中style.ist
)。