Estou escrevendo um documento extenso e dividindo-o em capítulos. Eu gostaria de usar algo como \include
no meu main.tex
, e que a composição de cada capítulo seria a tipografia main.tex
do \includeonly
capítulo específico. A solução mais próxima que conheço é subfile
, o que não me satisfaz inteiramente para questões menores (por exemplo, com minitoc
). Existe alguma maneira de codificar uma macro para isso?
Responder1
Parece que o básico \include
e \includeonly
os comandos são tudo que você precisa, mas talvez eu tenha entendido mal.
Se você criar os arquivos a seguir e compilar main.tex
duas vezes com a \includeonly
linha comentada, o LaTeX processará todo o documento e produzirá o índice com números de página precisos.
Se você descomentar a \includeonly
linha, o LaTeX processará o main
arquivo e \include
apenas o argumento desse comando (neste caso ch1
). O índice ainda refletirá os números das páginas dos outros capítulos que você compilou anteriormente.
Arquivomain.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}
Arquivoch1.tex
\chapter{First}
\lipsum
Arquivoch2.tex
\chapter{Second}
\lipsum
Arquivoch3.tex
\chapter{Third}
\lipsum
EDIT: Especifique os arquivos incluídos na linha de comando no momento da compilação
Outra opção é definir os arquivos a serem incluídos na linha de comando. Definimos um comando, \selection
na linha 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}
Em seguida, compile com este comando:
pdflatex "\def\selection{ch1} \input main"
Você poderia automatizar isso com umscript de shell:
(arquivo latex-selection.sh
:)
#! /bin/sh
EXCERPT=$1
MAIN=$2
pdflatex "\\def\\selection{$EXCERPT} \\input $MAIN"
Para incluir apenas ch2
, invoque as ./latex-selection.sh ch2 main
.