Abbildung in einem anderen Dokument mit gleicher Nummerierung replizieren

Abbildung in einem anderen Dokument mit gleicher Nummerierung replizieren

Ich habe ein großes Dokument mit mehreren Bildern und möchte einige dieser Bilder in einzelnen PDF-Dokumenten duplizieren, dabei aber die Darstellungsweise, die Bildnummerierung und die Referenznummerierung von Zitaten, Tabellen usw. beibehalten. Wenn also beispielsweise die Bildnummer im Hauptdokument 1.3 lautet, wäre sie im anderen Dokument immer noch 1.3, obwohl die Bilder 1.1 und 1.2 im anderen Dokument nicht vorhanden sind. Gleiches gilt für alle Referenzen in der Bildunterschrift, d. h.:

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

würde in beiden Dokumenten als „Abbildung 1.3: Etwas, das auf Tabelle 1.2 verweist und [15] zitiert.“ angezeigt werden, trotz des Fehlens von Tabelle 1.1 oder der Zitate 1-14 im letzteren Dokument.

Eine sehr manuelle Möglichkeit, dies zu erreichen, wäre, meine Präambel in einem neuen Tex-Dokument zu duplizieren, nur die relevante Abbildung zu kopieren, dann Vorkommen von \cite{Example}usw. durch die tatsächliche Nummer zu ersetzen, um die Nummerierung beizubehalten, und dies dann zu verwenden, um das gewünschte PDF zu generieren. Das würde funktionieren, ist aber eine schreckliche Lösung.

Ich würde gerne wissen, wie ich das am besten angehen soll. Ich suche nur nach Ideen, was ich ausprobieren könnte, nicht nach einem vollständig codierten funktionierenden Beispiel, da ich nicht weiß, wie man dafür ein MWE erstellt.

Antwort1

Sie möchten es versuchen xr. Dies ist eine schematische „lange“ Datei, sagen wir 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}

Hier ist die „Kurzversion“, sagen wir 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}

Vorausgesetzt, alle Querverweise in ulysseslong.texsind gelöst, ist dies die Ausgabe der Verarbeitung ulyssesshort.tex:

Bildbeschreibung hier eingeben

Antwort2

Wenn ich das richtig verstehe, kann man so etwas machen:

Hauptdokument

\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}

Dadurch werden die Informationen in eine externe Datei geschrieben mainfilename.img Neue Dateien

\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}

Man muss nur einstellen \newcommand*{\myfile}{example-image-c}.

\mtfigureinsertedsetzt den Zähler figureauf den richtigen Wert.

verwandte Informationen