類似於 \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_A,Attachment_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}

相關內容