![是否有可能解决这个要求(在这个问题中简要解释一下)?](https://linux22.com/image/384024/%E6%98%AF%E5%90%A6%E6%9C%89%E5%8F%AF%E8%83%BD%E8%A7%A3%E5%86%B3%E8%BF%99%E4%B8%AA%E8%A6%81%E6%B1%82%EF%BC%88%E5%9C%A8%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E4%B8%AD%E7%AE%80%E8%A6%81%E8%A7%A3%E9%87%8A%E4%B8%80%E4%B8%8B%EF%BC%89%EF%BC%9F.png)
我的代码如下:
\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
但如果你在一个环境中使用它,它仍然不起作用。