用於排版和向另一個文件添加一行的宏

用於排版和向另一個文件添加一行的宏

我正在寫一份冗長的文檔並將其分成幾個章節。我想使用類似\includemy 的內容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

相關內容