PDFページの図をLaTeXのラベルに従って表示

PDFページの図をLaTeXのラベルに従って表示

私の LaTeX には、すべて異なる名前が付けられた数十の図があります。それらを 1 つの PDF ファイルにまとめて、\includegraphics[page="label3"]{foo}の代わりに のようなものを介してそこから各\includegraphics[page=3]{foo}図を呼び出したいと考えています。言い換えると、適切なラベル (すべての図を含むこの単一の PDF ファイルの作成時に割り当てられた) に従って PDF から図を呼び出したいということです。

答え1

ページ番号に展開するマクロにラベルを定義することで、これを実行できます。カスタム マクロを使用して最初に複数ページの PDF を作成し、次に別の定義を使用してラベル リストを作成します。

理解しにくいので、ここにコードをいくつか示します。

.tex以下の内容のみを含むファイルを作成します。

% filelist.tex
\myimagelist{some label}{some path/pdffile1}
\myimagelist{some other label}{some path/pdffile2}
% ....

複数ページのドキュメントを作成するには、次のドキュメントを使用します。

% allpdfs.tex
\documentclass{article}
\usepackage{pdfpages}
\newcommand{\myimagelist}[2]{\includepdf[fitpaper=true]{#2}}

\begin{document}
\input{filelist}
\end{document}

これにより、すべての(単一ページの)PDF が結果の PDF のページとして配置されますが、各ページは元のサイズのままです。

実際のドキュメントでは次のようになります。

\documentclass{book}
\usepackage{graphicx}
\newcommand{\mylabel}[1]{\csname mylabel #1\endcsname}
\newcounter{mycounter}
\newcommand{\myimagelist}[2]{%
  \stepcounter{mycounter}%
  \expandafter\edef\csname mylabel #1\endcsname{\arabic{mycounter}}%
}
\input{filelist}

\begin{document}

\includegraphics[page=\mylabel{some label}]{allpdfs}

or use:

\newcommand{\imagebylabel}[2][]{\includegraphics[page=\mylabel{#2},#1]{allpdfs}}

\imagebylabel{some other label}

\end{document}

現在、LaTeX がインストールされていない家庭用 PC を使用しているため、コードをテストすることはできませんでしたが、基本的な考え方は理解できるはずです。

関連情報