長い文書を書いていて、それを章に分けようとしています。\include
で のようなものを使いmain.tex
、各章の タイプセットで を特定の章main.tex
の でタイプセットしたいです\includeonly
。私が知っている中で最も近い解決策は ですがsubfile
、小さな問題 ( など) については完全には満足できませんminitoc
。これをマクロでコーディングする方法はありますか?
答え1
基本的\include
な\includeonly
コマンドだけが必要なように思えますが、おそらく私の誤解です。
以下のファイルを作成し、行をコメントアウトmain.tex
して 2 回コンパイルすると\includeonly
、LaTeX はドキュメント全体を処理し、正確なページ番号を含む目次を生成します。
その後、この行のコメントを解除すると、LaTeX はファイルとそのコマンドの引数 (この場合は ) のみ\includeonly
を処理します。目次には、以前にコンパイルした他の章のページ番号が引き続き反映されます。main
\include
ch1
ファイルmain.tex
\documentclass{book}
\usepackage{lipsum} % for dummy text
%\includeonly{ch1} % Uncomment after first compilation
\begin{document}
\title{Your Book}
\author{Your Name}
\maketitle
\tableofcontents
\include{ch1}
\include{ch2}
\include{ch3}
\end{document}
ファイルch1.tex
\chapter{First}
\lipsum
ファイルch2.tex
\chapter{Second}
\lipsum
ファイルch3.tex
\chapter{Third}
\lipsum
編集: コンパイル時にコマンドラインでインクルードファイルを指定する
もう 1 つのオプションは、コマンド ラインで含めるファイルを定義することです。\selection
コマンド ラインでコマンドを定義します。
\documentclass{book}
\usepackage{lipsum} % for dummy text
% Include files specified on the command line;
% if no files specified, include everything
\ifx\selection\undefined\relax
\else
\includeonly{\selection}
\fi
\begin{document}
\title{Your Book}
\author{Your Name}
\maketitle
\tableofcontents
\include{ch1}
\include{ch2}
\include{ch3}
\end{document}
次に、次のコマンドでコンパイルします。
pdflatex "\def\selection{ch1} \input main"
これを自動化するにはシェルスクリプト:
(ファイルlatex-selection.sh
:)
#! /bin/sh
EXCERPT=$1
MAIN=$2
pdflatex "\\def\\selection{$EXCERPT} \\input $MAIN"
のみを含めるにはch2
、 として呼び出します./latex-selection.sh ch2 main
。