我经常在处理动态文档时混淆图形的顺序,例如,我讨论的第一个图形实际上是图 3。我不想每次都浏览冗长的 pdf 文件来检查图形的顺序,因此当我讨论图形时,我想在 LaTeX 源文件中实现类似以下的操作:
..in Figure~\ref{figure:someplot} it is shown that..
\typeout{reference to figure [number of figure {figure:someplot}]}
这样我就可以使用grep
日志文件来检查数字是否按照正确的顺序引用。
简而言之,我的问题是:如何在 typeout 命令中包含某个数字的数字?
我天真地尝试了类似的方法\the\ref{figure:someplot}
,但当然没有用......
答案1
最简单的方法是使用refcount
包裹访问与引用关联的数字。下面是一个显示此操作的最小示例:
\documentclass{article}
\usepackage{refcount}% http://ctan.org/pkg/refcount
\begin{document}
\newcommand{\printfig}[1]{%
\typeout{reference to figure \getrefnumber{#1}}% Print information to .log file
}
\begin{figure}
\centering test 1
\caption{This is a test figure} \label{first-fig}
\end{figure}
\begin{figure}
\centering test 2
\caption{This is another test figure} \label{second-fig}
\end{figure}
See Figure~\ref{first-fig} \printfig{first-fig} and~\ref{second-fig} \printfig{second-fig}.
\end{document}
这将在您的日志文件中输出以下内容:
...
reference to figure 1
reference to figure 2
...
\printfig
当然,这需要在每次使用时使用。但是,\ref
如果需要,这也可以包含在传统命令的使用中。
答案2
我为你编写了一个小宏,但与此同时,Werner 发布了一个很好的基于包的解决方案,可能更好。无论如何,这里是代码:
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\newcommand*\theref[1]{%
\expandafter\expandafter
\expandafter\theref@\csname r@#1\endcsname\@@nil
}
\def\theref@#1#2\@@nil{#1}%
\makeatother
\usepackage{lipsum}
\begin{document}
\lipsum
\begin{figure}
\rule{5cm}{5cm}%
\caption{Test}\label{A}
\end{figure}
\typeout{figure \theref{A}}
\lipsum
\begin{figure}
\rule{5cm}{5cm}%
\caption{Test}\label{B}
\end{figure}
\typeout{figure \theref{B}}
\lipsum
\begin{figure}
\rule{5cm}{5cm}%
\caption{Test}\label{C}
\end{figure}
\lipsum
\typeout{figure \theref{C}}
\end{document}