Algo como \includeonly mas para \includepdf?

Algo como \includeonly mas para \includepdf?

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 \includeonlycomando para compilar apenas algumas partes. Então, se eu quiser apenas Text_Ae 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_Ae Attachment_C, tenho que comentar as linhas uma por uma. Isso é bastante desagradável se houver muitos arquivos incluídos \includepdfe se o comando contiver várias linhas de opções.

Eu poderia fazer algumas refatorações e colocar os \includepdfcomandos em arquivos únicos para poder usar \includeexclusivamente no documento principal. Mas me pergunto se poderia haver uma solução mais elegante?

Responder1

Você pode pegar emprestado o \includeonlyteste 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}

informação relacionada