同じ番号の付いた図を別の文書に複製する

同じ番号の付いた図を別の文書に複製する

複数の画像を含む大きな文書があり、これらの画像の一部を個別の PDF 文書に複製し、表示方法、図の番号、引用や表などの参照番号を維持したいと考えています。たとえば、メイン文書の図番号が 1.3 の場合、図 1.1 と 1.2 が他の文書に存在しないにもかかわらず、他の文書でも 1.3 のままになります。キャプション内の参照についても同様です。

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

後者の文書には表1.1や引用1~14が存在しないにもかかわらず、両方の文書で「図1.3: 表1.2を参照し[15]を引用しているもの」と表示されます。

これを実現する非常に手動的な方法は、新しい tex ドキュメントで私の序文を複製し、関連する図のみをコピーし、\cite{Example}などのインスタンスを実際の番号に置き換えて番号付けを維持し、これを使用して目的の pdf を生成することです。これは機能しますが、ひどい解決策です。

これについて最善の方法を知りたいです。私は、これに対して MWE を作成する方法がわからないため、完全にコード化された実用的な例ではなく、試してみるアイデアを求めています。

答え1

試してみたいと思いますxr。これは、次のような回路図の「長い」ファイルです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}

「短い」バージョンは次のようになります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}

のすべての相互参照ulysseslong.texが解決された場合、処理の出力は次のようになりますulyssesshort.tex

ここに画像の説明を入力してください

答え2

私の理解が正しければ、次のようなことができます:

メイン文書

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

これにより、外部ファイルに情報が書き込まれます。mainfilename.img 新しいファイル

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

設定するだけです\newcommand*{\myfile}{example-image-c}

\mtfigureinsertedカウンターをfigure正しい値に設定します。

関連情報