在新的命令定义中自动添加标签,以简化 hyperref 的使用

在新的命令定义中自动添加标签,以简化 hyperref 的使用

我正在尝试构建一个受控词典。我使用了一个模板,其中定义了一个插入新条目的命令。我想为每个条目分配一个标签,以便我可以将类似的术语与hyperref包链接起来。如果我每次都插入标签,它就会起作用,但这是一项相当繁琐的任务。我想直接在命令中插入与条目同名的标签,如下面我的尝试所示,但它不起作用。我研究了这个问题但我找不到解决我的问题的方法。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[a4paper, margin=20mm]{geometry}
\usepackage{hyperref}  
\newcommand{\entry}[4]{ \scriptsize{\markboth{#1}{#1}\textbf{#1}\ {(#2)}\ \textit{#3}\ $\bullet$\ {#4}}} 
%my atempt
\newcommand{\autoentry}[4]{\label{ter:{#1}}\scriptsize{\markboth{#1}{#1}\textbf{#1}\ {(#2)}\ \textit{#3}\ $\bullet$\ {#4}}} 

\begin{document}
% expected behaviour but slow
\entry{myword}{myword}{ \label{ter:myword} masdfa asldkfj asld}{test}
% my attempt  
\autoentry{myword2}{myword2}{ masdfa asldkfj asld}{test}



\hyperref[ter:myword]{myword}
\hyperref[ter:myword2]{myword2}
\end{document}

我遇到的错误是这个:

您引用了尚未标记的内容。如果您已经标记了它,请确保 \ref{...} 中写的内容与 \label{...} 中写的内容相同。

答案1

内部\label{ter:{#1}}括号是标签名称的一部分。它们存储在辅助文件中:

\newlabel{ter:{myword2}}{{}{1}{}{Doc-Start}{}}

因此,要么在定义中删除它们

\label{ter:#1}

或者在引用中添加括号:

\hyperref[ter:{myword2}]{myword2}

相关内容