![强调对图表或表格的第一次引用](https://linux22.com/image/247147/%E5%BC%BA%E8%B0%83%E5%AF%B9%E5%9B%BE%E8%A1%A8%E6%88%96%E8%A1%A8%E6%A0%BC%E7%9A%84%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%BC%95%E7%94%A8.png)
我正在写一份科学报告,要求文中第一次引用任何图形或表格(而不是方程式或章节)时要加粗,如下所示:
是否有用于此类任务的包?
首字母缩略词包做了类似的事情,在第一次使用时给出了首字母缩略词的完整描述,所以我想这不是一个太特殊的问题。
答案1
以下工作:
\documentclass{article}
\makeatletter
\def\@setref#1#2#3{%
\ifx#1\relax
\protect\G@refundefinedtrue
\nfss@text{\reset@font\bfseries ??}%
\@latex@warning{Reference `#3' on page \thepage \space
undefined}%
\else
\expandafter\ifx\csname used@#1\endcsname\relax
\expandafter\global\expandafter\def\csname used@#1\endcsname{used}%
{\bfseries\expandafter#2#1\null}% Formatting of first reference
\else
\expandafter#2#1\null%
\fi
\fi%
}
\makeatother
\begin{document}
\begin{figure}
\centering\rule{150pt}{20pt}
\caption{A figure}\label{fig:figure}
\end{figure}
See Figure~\ref{fig:figure}. The same reference to Figure~\ref{fig:figure}.
\end{document}
\@setref
它修改被调用的宏\ref
来决定是否存在引用。格式化基于条件来检查新定义的宏是否used@<label>
存在。
第一个参考的格式是使用设置的\bfseries
,并且可以进行修改以适应。