我想再进一步扩展一下我的扩展图标题,以便也解释表格。先前的问题是
该宏的作用是定义一个命令\extcaption{Some extended information about the current figure}
放入一个图形浮点数中,将其内容写入.efc 文件,然后通过命令打印在文档末尾的某处\printextcaption
。
为了将其扩展到表格,我认为我不需要回忆所有的代码,因为本质上,我需要一个函数(\checkwhichfloat
在 MWE 中调用),它能够检测在哪个浮点数中调用它,并返回适当的计数器和字符串。
以下是代码:
\documentclass[10pt]{report}
\newcommand\efccounter{}
\newcommand\efctext{}
% \newcommand\checkwhichfloat{
% If figure
\renewcommand\efccounter{\thefigure}
\renewcommand\efctext{Figure}
% else if table
\renewcommand\efccounter{\thetable}
\renewcommand\efctext{Table}
%
\begin{document}
\begin{figure}
%\checkwhichfloat
\caption{This is \efctext~\efccounter}
\end{figure}
\begin{table}
%\checkwhichfloat
\caption{This is \efctext~\efccounter}
\end{table}
\end{document}
答案1
感谢@Axel Sommerfeldt 的评论,我通过该pdftexcmds
软件包找到了解决方案(并浏览了此网站):
\documentclass[10pt]{report}
\usepackage{pdftexcmds}
\newcommand\efccounter{} % Contains counter
\newcommand\efctext{} % Contains float env. string
% -------------------------------
\makeatletter
\newcommand\checkwhichfloat{
% If figure
\ifnum\pdf@strcmp{\@captype}{figure}=0
\renewcommand\efccounter{\thefigure}
\renewcommand\efctext{Figure}
% If table
\else\ifnum\pdf@strcmp{\@captype}{table}=0
\renewcommand\efccounter{\thetable}
\renewcommand\efctext{Table}
\fi\fi}
\makeatother
\begin{document}
\begin{figure}
\checkwhichfloat
\caption{This is \efctext~\efccounter}
\end{figure}
\begin{table}
\checkwhichfloat
\caption{This is \efctext~\efccounter}
\end{table}
\end{document}