Tenho dezenas de figuras em meu látex com nomes diferentes. Quero colocá-los em um único arquivo PDF e chamar cada figura a partir daí por meio de algo como \includegraphics[page="label3"]{foo}
em vez de \includegraphics[page=3]{foo}
. Em outras palavras, quero chamar as figuras de um PDF de acordo com sua rotulagem adequada [atribuída na criação deste único arquivo PDF contendo todas as figuras].
Responder1
Você poderia fazer isso definindo os rótulos para macros que se expandem para o número da página. Eu usaria uma macro personalizada para primeiro criar o PDF de várias páginas e depois, com uma definição diferente, criar a lista de rótulos.
Porque isso é difícil de entender aqui algum código:
Crie um .tex
arquivo que contenha apenas o seguinte:
% filelist.tex
\myimagelist{some label}{some path/pdffile1}
\myimagelist{some other label}{some path/pdffile2}
% ....
Para criar o documento de várias páginas, use o seguinte documento:
% allpdfs.tex
\documentclass{article}
\usepackage{pdfpages}
\newcommand{\myimagelist}[2]{\includepdf[fitpaper=true]{#2}}
\begin{document}
\input{filelist}
\end{document}
Isso colocará cada PDF (página única) como uma página do PDF resultante, onde cada página ainda terá o tamanho original.
No seu documento real poderia ficar assim:
\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}
Não pude testar o código porque estou atualmente em um PC de família sem o LaTeX instalado, mas você deve entender a ideia principal.