Estoy escribiendo un documento extenso y dividiéndolo en capítulos. Me gustaría usar algo como \include
en mi main.tex
, y esa composición tipográfica de cada capítulo se combinaría main.tex
con la \includeonly
del capítulo específico. La solución más cercana que conozco es subfile
, que no me satisface del todo para problemas menores (por ejemplo, con minitoc
). ¿Existe alguna forma de codificar una macro para esto?
Respuesta1
Parece que lo básico \include
y \includeonly
los comandos son todo lo que necesitas, pero tal vez no lo entiendo bien.
Si crea los siguientes archivos y los compila main.tex
dos veces con la \includeonly
línea comentada, LaTeX procesará todo el documento y producirá la tabla de contenido con números de página precisos.
Si luego descomentas la \includeonly
línea, LaTeX procesará el main
archivo y \include
solo el argumento de ese comando (en este caso ch1
). La tabla de contenido seguirá reflejando los números de página de los otros capítulos que compiló anteriormente.
Archivomain.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}
Archivoch1.tex
\chapter{First}
\lipsum
Archivoch2.tex
\chapter{Second}
\lipsum
Archivoch3.tex
\chapter{Third}
\lipsum
EDITAR: especifique los archivos incluidos en la línea de comando en el momento de la compilación
Otra opción es definir los archivos que se incluirán en la línea de comando. Definimos un comando, \selection
en la línea de comando:
\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}
Luego compila con este comando:
pdflatex "\def\selection{ch1} \input main"
Podrías automatizar esto con unscript de shell:
(archivo latex-selection.sh
:)
#! /bin/sh
EXCERPT=$1
MAIN=$2
pdflatex "\\def\\selection{$EXCERPT} \\input $MAIN"
Para incluir únicamente ch2
, invoque como ./latex-selection.sh ch2 main
.