类似于 \includeonly 但是用于 \includepdf?

类似于 \includeonly 但是用于 \includepdf?

假设我们有一个如下的文档。

\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}

我可以使用\includeonly命令仅编译某些部分。因此,如果我只想要Text_AText_C,我可以将其添加\includeonly{Text_A,Text_C}到序言中。现在我的问题是,这仅适用于包含在中的部分\include

我正在寻找一种方法来将其与 中包含的部分结合起来\includepdf。因此,如果我只想要Text_AAttachment_AAttachment_C,我必须逐行注释掉这些行。如果通过 包含了很多文件\includepdf,并且命令包含多行选项,那么这会相当不愉快。

我可以进行一些重构并将\includepdf命令放入单个文件中,以便我能够\include在主文档中专门使用。但我想知道是否有更优雅的解决方案?

答案1

您可以借用\includeonly所用的测试\include

这仅包括 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}

相关内容