`chapterbib`を`subfile`と同時に使う
chapterbib
をsubfile
と同時に使う
LaTeXでsubfile
を使う
subfile
は長いLaTeXファイルを分割して、それぞれコンパイルできる。 例えば、今博士論文を書いていて、章ごとにファイルを作り、コンパイルしたいである。
main.tex
に:
1
2
3
4
5
6
% main.tex
\usepackage{subfiles}
\begin{document}
\subfile{chapter1} % 第一章
\subfile{chapter2} % 第二章
\end{document}
また、chapter1.tex
には:
1
2
3
4
5
6
7
% chapter1.tex
\documentclass[main.tex]{subfiles}
\begin{document}
\chapter{A Good Chapter}
Hello world.
\bibliography{references}
\end{document}
LaTeXでchapterbib
を使う
chapterbib
は章ごとに引用を作るのに使われる。しかし、chapterbib
を使うと、include
で各章の内容のmainのファイルに入れる:
main.tex
では:
1
2
3
4
5
6
% main.tex
\usepackage{subfiles}
\begin{document}
\include{chapter1}
\include{chapter2}
\end{document}
さらに、全ての章のファイルは文章のbody部分のみが許され、\begin{document}
と\end{document}
さえ書けない:
各章のファイルchapter1.tex
:
1
2
3
4
% chapter1.tex
\chapter{A Good Chapter}
Hello world.
\bibliography{references}
よって、章ごとのファイルはコンパイルできない。手動で切り替えするのは大変手間がかかる。
ここで、LaTeXのmacroの強さが出てくる:
LaTeXでchapterbib
をsubfile
と同時に使う
まず、main.tex
のbodyにmacroを作り、mainファイルからコンパイルしているフラグとして使う。そして、subfile
をinclude
に変える:
1
2
3
4
5
6
7
% main.tex
\usepackage{subfiles}
\begin{document}
\newcommand*{\BuildingFromMainFile}{} % mainファイルからコンパイルしているフラグ
\subfile{chapter1}
\subfile{chapter2}
\end{document}
次に、各章の最初に、フラグが定義されているかどうかをチェックする。 定義されていない場合は、preambleを追加する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
% beginning of chapter1.tex
\ifdefined\BuildingFromMainFile
\else
\documentclass[main.tex]{subfiles}
\begin{document}
\fi
\chapter{A Good Chapter}
Hello world.
\bibliography{references}
\ifdefined\BuildingFromMainFile
\else
\end{document}
\fi
これで完了です!