Suponhamos que temos um documento como o abaixo.
\documentclass{scrartcl}
\usepackage{pdfpages}
\begin{document}
\include{Text_A}
\include{Text_B}
\include{Text_C}
\include{Text_D}
\includepdf{Attachment_A}
\includepdf{Attachment_B}
\includepdf{Attachment_C}
\end{document}
Posso usar o \includeonly
comando para compilar apenas algumas partes. Então, se eu quiser apenas Text_A
e Text_C
, posso adicionar \includeonly{Text_A,Text_C}
ao preâmbulo. Agora, meu problema é que isso só funciona para peças incluídas no \include
.
Estou procurando uma maneira de combinar isso com peças incluídas no \includepdf
. Então, se eu quiser apenas Text_A
, Attachment_A
e Attachment_C
, tenho que comentar as linhas uma por uma. Isso é bastante desagradável se houver muitos arquivos incluídos \includepdf
e se o comando contiver várias linhas de opções.
Eu poderia fazer algumas refatorações e colocar os \includepdf
comandos em arquivos únicos para poder usar \include
exclusivamente no documento principal. Mas me pergunto se poderia haver uma solução mais elegante?
Responder1
Você pode pegar emprestado o \includeonly
teste usado por \include
.
Isso inclui apenas o texto e o anexo de B
\documentclass{scrartcl}
\usepackage{pdfpages}
\makeatletter
\let\oldincludepdf\includepdf
\newcommand\zzincludepdf[2][]{%
\@tempswatrue
\if@partsw
\@tempswafalse
\edef\reserved@b{#2}%
\@for\reserved@a:=\@partlist\do
{\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
\fi
\if@tempswa
\IfFileExists{#2.pdf}{\oldincludepdf[#1]{#2}}{\typeout{no file #2.pdf}}%
\fi}
\let\includepdf\zzincludepdf
\makeatother
\includeonly{Text_B,Attachment_B}
\begin{document}
\include{Text_A}
\include{Text_B}
\include{Text_C}
\include{Text_D}
\includepdf{Attachment_A}
\includepdf[pages=-]{Attachment_B}
\includepdf{Attachment_C}
\end{document}