我正在寫一份冗長的文檔並將其分成幾個章節。我想使用類似\include
my 的內容main.tex
,並且每個章節的排版都會使用特定章節的main.tex
進行排版。\includeonly
我所知道的最接近的解決方案是subfile
,它對於小問題(例如minitoc
)並不能完全滿足我的要求。有什麼方法可以為此編寫巨集嗎?
答案1
似乎基本\include
和\includeonly
命令就足夠了,但也許我誤解了。
如果您建立以下檔案並編譯main.tex
兩次並註解掉該\includeonly
行,LaTeX 將處理整個文件並產生具有準確頁碼的目錄。
如果您取消註解該\includeonly
行,LaTeX 將處理該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
編輯:編譯時在命令列上指定包含的文件
另一種選擇是定義要包含在命令列上的檔案。我們定義一個命令,\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
,請呼叫 as ./latex-selection.sh ch2 main
。