我正在尝试构建一个受控词典。我使用了一个模板,其中定义了一个插入新条目的命令。我想为每个条目分配一个标签,以便我可以将类似的术语与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}