如何在typeout命令中包含某个数字的数字?

如何在typeout命令中包含某个数字的数字?

我经常在处理动态文档时混淆图形的顺序,例如,我讨论的第一个图形实际上是图 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}

相关内容