別の文書にタイプセットして行を追加するためのマクロ

別の文書にタイプセットして行を追加するためのマクロ

長い文書を書いていて、それを章に分けようとしています。\includeで のようなものを使いmain.tex、各章の タイプセットで を特定の章main.texの でタイプセットしたいです\includeonly。私が知っている中で最も近い解決策は ですがsubfile、小さな問題 ( など) については完全には満足できませんminitoc。これをマクロでコーディングする方法はありますか?

答え1

基本的\include\includeonlyコマンドだけが必要なように思えますが、おそらく私の誤解です。

以下のファイルを作成し、行をコメントアウトmain.texして 2 回コンパイルすると\includeonly、LaTeX はドキュメント全体を処理し、正確なページ番号を含む目次を生成します。

その後、この行のコメントを解除すると、LaTeX はファイルとそのコマンドの引数 (この場合は ) のみ\includeonlyを処理します。目次には、以前にコンパイルした他の章のページ番号が引き続き反映されます。main\includech1


ファイル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

関連情報