用于排版和向另一个文档添加一行的宏

用于排版和向另一个文档添加一行的宏

我正在写一份很长的文档,并将其分成几章。我想\include在我的 中使用类似 的东西main.tex,并且每章的排版都会用特定章节的main.tex来排版。我知道的最接近的解决方案是,但它不能完全满足我对于小问题(例如)的需要。有没有办法为此编写宏?\includeonlysubfileminitoc

答案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"

你可以用shell 脚本

(文件latex-selection.sh:)

#! /bin/sh
EXCERPT=$1
MAIN=$2
pdflatex "\\def\\selection{$EXCERPT} \\input $MAIN"

若要仅包含ch2,请调用为./latex-selection.sh ch2 main

相关内容