假設我們有一個如下所示的文檔。
\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_A
和Text_C
,我可以添加\includeonly{Text_A,Text_C}
到序言中。現在我的問題是,這僅適用於包含在\include
.
我正在尋找一種方法將其與\includepdf
.因此,如果我只想Text_A
,Attachment_A
和Attachment_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}