这个想法是将其放在\LBL{some_label_name}
一个段落中,以便我可以参考该段落中放置的特定点\LBL
。我想定义宏\LBL.
不幸的是,必须将其\label
放置在带有计数器的环境中。我试过了幻影切片但标签会获取真正的节计数器。我正在使用 hyperref 包。
我怎样才能实现这一点,\def
for\LBL
看起来会是什么样子?
答案1
有很多方法。下面是使用\refstepcounter
隐式生成锚点。此外,\theword
如果通过 调用,则重新定义节号以获取单词,而不是节号\ref
。
\documentclass{article}
\usepackage{hyperref}
\usepackage{lipsum}
\newcounter{word}
\makeatletter
\newcommand*{\LBL}{%
\@dblarg\@LBL
}
\def\@LBL[#1]#2{%
\begingroup
\renewcommand*{\theword}{#2}%
\refstepcounter{word}%
\label{#1}%
#2%
\endgroup
}
\makeatother
\begin{document}
The \ref{word} is referenced.
\lipsum*[1] \LBL{word} \lipsum[2]
\end{document}
如果单词很复杂,不能用作标签名称,则可选参数有帮助:\LBL[labelword]{weird word}
...。\ref{labelword}