Replicando figura em outro documento com mesma numeração

Replicando figura em outro documento com mesma numeração

Eu tenho um documento grande com várias imagens e gostaria de duplicar algumas dessas imagens em documentos PDF individuais por conta própria, preservando a forma como elas são exibidas, a numeração das figuras e a numeração de referência de citações, tabelas, etc. por exemplo, se o número da figura for 1,3 no documento principal, ainda seria 1,3 no outro documento, apesar de as figuras 1.1 e 1.2 não existirem no outro documento. Da mesma forma para qualquer referência na legenda, ou seja:

\caption{Something referencing Table \ref{tab:example} and citing \cite{examplecite}.}

seria exibido como "Figura 1.3: Algo referenciando a Tabela 1.2 e citando [15]." em ambos os documentos, apesar da ausência da Tabela 1.1, ou das citações 1-14 neste último documento.

Uma maneira muito manual de conseguir isso seria duplicar meu preâmbulo em um novo documento tex, copiar apenas a figura relevante e, em seguida, substituir as instâncias de \cite{Example}, etc., pelo seu número real, de modo a preservar a numeração, e usar isso para gerar o pdf que estou procurando. Isso funcionaria, mas é uma solução terrível.

Eu gostaria de saber a melhor forma de fazer isso. Estou apenas atrás de ideias de coisas para tentar, não de um exemplo funcional totalmente codificado, pois não sei como fazer um MWE para isso.

Responder1

Você quer tentar xr. Este é um arquivo esquemático “longo”, digamos ulysseslong.tex:

\documentclass{article}

\begin{document}

\section{Test}\label{sec:test}

\begin{figure}[htp]
\centering
\fbox{\rule{0pt}{3cm}\rule{3cm}{0pt}}
\caption{A caption\label{fig:A}}
\end{figure}

\begin{figure}[htp]
\centering
\fbox{\rule{0pt}{3cm}\rule{3cm}{0pt}}
\caption{B caption\label{fig:B}}
\end{figure}

\begin{figure}[htp]
\centering
\fbox{\rule{0pt}{3cm}\rule{3cm}{0pt}}
\caption{C caption with a reference to Section~\ref{sec:test}\label{fig:C}}
\end{figure}

\begin{figure}[htp]
\centering
\fbox{\rule{0pt}{3cm}\rule{3cm}{0pt}}
\caption{D caption\label{fig:D}}
\end{figure}

\begin{table}[htp]
\centering
\caption{A table caption\label{tab:A}}
\medskip
\begin{tabular}{cc}
a & b \\
c & d
\end{tabular}
\end{table}

\begin{table}[htp]
\centering
\caption{B table caption\label{tab:B}}
\medskip
\begin{tabular}{cc}
a & b \\
c & d
\end{tabular}
\end{table}

\end{document}

Aqui está a versão “curta”, digamos ulyssesshort.tex:

\documentclass{article}

\usepackage{xr}
\externaldocument{ulysseslong}

\makeatletter
\newcommand{\extref}[1]{%
  \@namedef{the\@captype}{\ref{#1}}%
}
\makeatother

\begin{document}

\begin{figure}[htp]
\centering\extref{fig:C}
\fbox{\rule{0pt}{3cm}\rule{3cm}{0pt}}
\caption{C caption with a reference to Section~\ref{sec:test}}
\end{figure}

\begin{figure}[htp]
\centering\extref{fig:D}
\fbox{\rule{0pt}{3cm}\rule{3cm}{0pt}}
\caption{D caption}
\end{figure}

\begin{table}[htp]
\centering\extref{tab:B}
\caption{B table caption}
\medskip
\begin{tabular}{cc}
a & b \\
c & d
\end{tabular}
\end{table}

\end{document}

Desde que todas as referências cruzadas ulysseslong.texsejam resolvidas, esta é a saída do processamento ulyssesshort.tex:

insira a descrição da imagem aqui

Responder2

Se bem entendi, pode-se fazer algo assim:

Documento principal

\documentclass{article}
\usepackage{mwe} % just for the example


\let\mtincludegraphics\includegraphics
\renewcommand{\includegraphics}[2][]{%
\mtincludegraphics[#1]{#2}%
\immediate\write\mt{\string\mtfigureinserted{#2}{\thefigure}}}

\newwrite\mt
\AtBeginDocument{\immediate\openout\mt=\jobname.img}
\AtEndDocument{\immediate\closeout\mt}

\begin{document}
\lipsum[1-2]
\begin{figure}
\includegraphics{example-image-a}
\caption{example-image-caption}
\label{imga}
\end{figure}
\lipsum[1-2]
\begin{figure}
\includegraphics{example-image-b}
\caption{example-image-caption}
\label{imgb}
\end{figure}
\lipsum[1-2]
\begin{figure}
\includegraphics{example-image-c}
\caption{example-image-caption}
\label{imgc}
\end{figure}
\end{document}

Isto irágravar informações em um arquivo externo mainfilename.img Novos arquivos

\documentclass{article}
\usepackage{mwe}

\newcommand*{\myimage}{}
\newcommand*{\myfile}{example-image-c}
\newcommand*{\mtfigureinserted}[2]{%
\renewcommand*\myimage{#1}%
\ifx\myimage\myfile
\setcounter{figure}{#2}%
\fi}
\input{newtest.img}

\begin{document}
\lipsum[1-2]
\begin{figure}
\includegraphics{\myfile}
\caption{example-image-caption}
\label{imga}
\end{figure}
\end{document}

Basta definir \newcommand*{\myfile}{example-image-c}.

\mtfigureinserteddefinirá o contador figurepara o valor correto.

informação relacionada