私はメモの大きな文書(ほぼ本)を書いているので、文書を整理するためにサブファイルを使用しています。ほとんどの場合、作業中のセクションをコンパイルすることができず、全体私が取り組んでいるサブセクションではなく、ドキュメント全体です。
私のファイルの構成は以下のとおりです: (名前は引用符で囲んでいます)
私のフォルダはこんな感じです...
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
)。