\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を 1 つずつコメント アウトする必要があります。 および を介してインクルードされるファイルが多数ある場合や\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}

関連情報