是否可以检索标签的引用数量?
\ref
例如,我可以将引用次数超过 5 次的定理涂成红色吗?
我在互联网上和本网站的其他地方没有找到有关此类机制的信息。
例子:
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\begin{theorem} \label{tm:1}
Some theorem
\end{theorem}
\begin{theorem} \label{tm:2}
Some other theorem
\end{theorem}
\ref{tm:1}\ref{tm:1}\ref{tm:1}\ref{tm:1}\ref{tm:1}\ref{tm:1}
\ref{tm:2}\ref{tm:2}\ref{tm:2}
\end{document}
在这种情况下,第一个定理应该是红色的,第二个定理应该保持不变(黑色)。
编辑:抱歉,我没有把问题说清楚。应该用颜色标出定理的名称,而不是参考文献。
答案1
这会使用包装器命令跟踪对定理标签的引用次数\theoref
并相应地显示颜色。但是,前 4 个引用将保留为蓝色(例如),而接下来的引用将保留为红色(例如),即跟踪不知道从文档开始总共对同一标签进行了多少次引用。这将是下一步的改进。
标签存储在expl3
\prop
-列表中。
\documentclass{article}
\usepackage{amsthm}
\usepackage{xcolor}
\usepackage{xparse}
\usepackage{hyperref}
\newtheorem{theorem}{Theorem}
\newcommand{\specialrefdisplaycolor}{red}
\newcommand{\usualrefdisplaycolor}{blue}
\makeatletter
\let\latex@@ref\ref
\ExplSyntaxOn
\cs_generate_variant:Nn \int_set:Nn {Nx}
\prop_new:N \l_henry_label_prop
\NewDocumentCommand{\theoref}{O{5}m}{%
\prop_if_in:NnTF \l_henry_label_prop {#2} {
\int_set:Nx \l_tmpa_int {\prop_item:Nn \l_henry_label_prop {#2}}
\int_incr:N \l_tmpa_int
\prop_put:NnV \l_henry_label_prop {#2} \l_tmpa_int
}{% End of T - Branch
\prop_put:NnV \l_henry_label_prop {#2} {\c_one}
\int_set:Nx \l_tmpa_int {\prop_item:Nn \l_henry_label_prop {#2}}
}
\int_compare:nNnTF {\l_tmpa_int} < {#1} {%
\group_begin:
\color{\usualrefdisplaycolor}\latex@@ref{#2}%
\group_end:
}{
\group_begin:
\color{\specialrefdisplaycolor}\latex@@ref{#2}
\group_end:
}
}
\makeatother
\ExplSyntaxOff
\begin{document}
\begin{theorem} \label{tm:1}
Some theorem
\end{theorem}
\begin{theorem} \label{tm:2}
Some other theorem
\end{theorem}
In Theorem \theoref{tm:1}
\theoref{tm:1}
\theoref{tm:1}
\theoref{tm:1}
\theoref{tm:1}
\theoref{tm:1}
\theoref{tm:1}
\theoref{tm:2}
\theoref{tm:2}
\theoref{tm:2}
\end{document}
答案2
另一种显示定理和其他所有带标签事物的重要性的方法是尝试我的测试版trackRefs.sty
:它执行以下操作:在每个 处,打印通过、或\label
引用标签的页面。一个选项“禁用”省略了包,但定义了可能仍在辅助文件中的命令从下载 LaTeX 样式文件,测试版\ref
\eqref
\autoref
http://www.maths.adelaide.edu.au/anthony.roberts/LaTeX/trackRefs.sty
但是,还不能与诸如 之类的复杂软件包一起使用(目前还不能?)cleveref
。