Ich schreibe ein langes Dokument und teile es in Kapitel auf. Ich möchte \include
in meinem etwas wie verwenden main.tex
, und dieser Satz jedes Kapitels würde das main.tex
mit einem \includeonly
des jeweiligen Kapitels setzen. Die mir am nächsten kommende Lösung ist subfile
, die mich bei kleineren Problemen (z. B. bei ) nicht ganz zufriedenstellt minitoc
. Gibt es eine Möglichkeit, dafür ein Makro zu codieren?
Antwort1
Es scheint, als ob die Grundlagen \include
und \includeonly
Befehle alles sind, was Sie brauchen, aber vielleicht verstehe ich das falsch.
Wenn Sie die folgenden Dateien erstellen und main.tex
zweimal mit \includeonly
auskommentierter Zeile kompilieren, verarbeitet LaTeX das gesamte Dokument und erstellt das Inhaltsverzeichnis mit genauen Seitenzahlen.
Wenn Sie die \includeonly
Zeile dann auskommentieren, verarbeitet LaTeX die main
Datei und \include
nur das Argument dieses Befehls (in diesem Fall ch1
). Das Inhaltsverzeichnis enthält weiterhin die Seitenzahlen der anderen Kapitel, die Sie zuvor zusammengestellt haben.
Dateimain.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}
Dateich1.tex
\chapter{First}
\lipsum
Dateich2.tex
\chapter{Second}
\lipsum
Dateich3.tex
\chapter{Third}
\lipsum
BEARBEITEN: Geben Sie die enthaltenen Dateien während der Kompilierung in der Befehlszeile an
Eine weitere Möglichkeit besteht darin, die einzubindenden Dateien in der Kommandozeile zu definieren. Wir definieren einen Befehl \selection
in der Kommandozeile:
\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}
Dann kompilieren Sie mit diesem Befehl:
pdflatex "\def\selection{ch1} \input main"
Sie können dies automatisieren mit einemShell-Skript:
(Datei latex-selection.sh
:)
#! /bin/sh
EXCERPT=$1
MAIN=$2
pdflatex "\\def\\selection{$EXCERPT} \\input $MAIN"
Um nur einzuschließen ch2
, rufen Sie als auf ./latex-selection.sh ch2 main
.