Figuras de páginas PDF de acordo com sua rotulagem em látex

Figuras de páginas PDF de acordo com sua rotulagem em látex

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 .texarquivo 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.

informação relacionada