macro para componer y agregar una línea a otro documento

macro para componer y agregar una línea a otro documento

Estoy escribiendo un documento extenso y dividiéndolo en capítulos. Me gustaría usar algo como \includeen mi main.tex, y esa composición tipográfica de cada capítulo se combinaría main.texcon la \includeonlydel 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 \includey \includeonlylos comandos son todo lo que necesitas, pero tal vez no lo entiendo bien.

Si crea los siguientes archivos y los compila main.texdos veces con la \includeonlylínea comentada, LaTeX procesará todo el documento y producirá la tabla de contenido con números de página precisos.

Si luego descomentas la \includeonlylínea, LaTeX procesará el mainarchivo y \includesolo 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, \selectionen 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.

información relacionada