是否有可能解决这个要求(在这个问题中简要解释一下)?

是否有可能解决这个要求(在这个问题中简要解释一下)?

我的代码如下:

\documentclass{book}
\usepackage{lipsum}

\begin{document}
blah blah blah blah blah blah

\lipsum[1-2]

\begin{figure}
\includegraphics{...eps}
\caption{caption text}
\end{figure}

\lipsum[3-4]

\begin{figure}
\includegraphics{...eps}
\caption{caption text}
\end{figure}

\end{document}

我的要求是,我需要将图号及其对应的输出页码以及文件名提取到外部 Word/Excel 文件中,例如,

Figure 1              Page 1             test.eps

是否有可能LaTeX通过任何外部可能性实现?请提供意见...

答案1

如果我理解正确的话,应该这样做:

\documentclass{book}
\usepackage{lipsum}
\usepackage{graphicx}

\newwrite\imgdetail
\immediate\openout\imgdetail\jobname.imd

\let\LTXincludegraphics\includegraphics
\renewcommand\includegraphics[2][]{%
  \write\imgdetail{\figurename\space\thefigure, Page \thepage, #2}%
  \LTXincludegraphics[#1]{#2}%
}

\begin{document}
blah blah blah blah blah blah

\lipsum[1-2]

\begin{figure}
\includegraphics{example-image-a}
\caption{caption text}
\end{figure}

\lipsum[3-4]

\begin{figure}
\includegraphics{example-image-b}
\caption{caption text}
\end{figure}

\end{document}

我们分配一个带有的写入流\newwrite\imgdetail并打开一个名为\jobname.imd带有的文件\immediate\openout\imgdetail\jobname.imd

假设您想要记录所有出现的次数\includegraphics(请记住,它们可能会出现或不会出现在环境中),我们保存infigure的定义并重新定义它以将信息写入文件:\includegraphics\LTXincludegraphics.imd

\let\LTXincludegraphics\includegraphics
\renewcommand\includegraphics[2][]{%
  \write\imgdetail{\figurename\space\thefigure, Page \thepage, #2}%
  \LTXincludegraphics[#1]{#2}%
}

使用 MWE 生成的结果文件包含以下内容:

Figure 1, Page 1, example-image-a
Figure 2, Page 2, example-image-b

根据您的使用情况,您可能希望专门针对figure环境内的图形执行此操作,然后您可能会执行以下操作:

\makeatletter
\renewcommand\includegraphics[2][]{%
  \def\@tempa{figure}%
  \ifx\@currenvir\@tempa
    \write\imgdetail{\figurename\space\thefigure, Page \thepage, #2}%
  \fi
  \LTXincludegraphics[#1]{#2}%
}
\makeatother

subfigure但如果你在一个环境中使用它,它仍然不起作用。

相关内容