Tengo un documento grande con varias imágenes y me gustaría duplicar algunas de estas imágenes en documentos pdf individuales, preservando al mismo tiempo la forma en que se muestran, la numeración de figuras y la numeración de referencias de citas, tablas, etc. Por ejemplo, si el número de figura es 1.3 en el documento principal, seguirá siendo 1.3 en el otro documento, a pesar de que las figuras 1.1 y 1.2 no existen en el otro documento. Lo mismo ocurre con cualquier referencia en el título, es decir:
\caption{Something referencing Table \ref{tab:example} and citing \cite{examplecite}.}
se mostraría como "Figura 1.3: Algo que hace referencia a la Tabla 1.2 y cita [15]". en ambos documentos, a pesar de la ausencia de la Tabla 1.1, o de las citas 1 a 14 en el último documento.
Una forma muy manual de lograr esto sería duplicar mi preámbulo en un nuevo documento tex, copiar solo la figura relevante, luego reemplazar las instancias de \cite{Example}
, etc., con su número real para preservar la numeración, luego usar esto para generar el pdf que estoy buscando. Esto funcionaría, pero es una solución terrible.
Me gustaría saber cuál es la mejor manera de abordar esto. Solo busco ideas de cosas para probar, no un ejemplo funcional completamente codificado, ya que no sé cómo hacer un MWE para esto.
Respuesta1
Tu quieres intentar xr
. Este es un archivo "largo" esquemático, por ejemplo 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}
Aquí está la versión "corta", 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}
Siempre que se resuelvan todas las referencias cruzadas ulysseslong.tex
, este es el resultado del procesamiento ulyssesshort.tex
:
Respuesta2
Si entiendo correctamente, se puede hacer algo como esto:
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}
Esto escribirá información en un archivo externo. mainfilename.img
Archivos nuevos.
\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}
Sólo hay que configurar \newcommand*{\myfile}{example-image-c}
.
\mtfigureinserted
pondrá el contador figure
al valor correcto.