缺少的词汇表条目会产生警告而不是错误吗?

缺少的词汇表条目会产生警告而不是错误吗?

hyperref 包在尝试链接到尚不存在的标签时会发出警告,但会继续执行而不进行链接。是否可以对 glossaries 包进行类似的设置?例如,如果我使用 \gls{boat},是否可以将其配置为仅打印“boat”,而不链接到不存在的词汇表条目?

我希望在项目进行过程中加入 \gls{} 命令,然后再编写所有的词汇表条目。

答案1

随着额外词汇表扩展包中,您可以使用包选项undefaction=warn,如果任何条目未定义,它将生成警告而不是错误消息。与 和 一样\cite\ref它将显示??在文档文本中。

例子:

\documentclass{article}

\usepackage[undefaction=warn]{glossaries-extra}

\begin{document}

A \gls{boat}.

\end{document}

这将生成警告

Package glossaries-extra Warning: Glossary entry `boat' has not been defined on
 input line 7.

结果就是

A ??。

如果您希望标签出现而不是??您可以重新定义\glsdoifexists以本地更改\glsxtrundeftag标签:

\documentclass{article}

\usepackage[undefaction=warn]{glossaries-extra}

\renewcommand{\glsdoifexists}[2]{%
  \ifglsentryexists{#1}{#2}%
  {%
    \edef\glslabel{\glsdetoklabel{#1}}%
    {% scope
       \let\glsxtrundeftag\glslabel
       \glsxtrundefaction{Glossary entry `\glslabel'
       has not been defined}{You need to define a glossary entry before
       you can reference it.}%
    }%
  }%
}

\begin{document}

A \gls{boat}.

\end{document}

这可能会产生一些不良副作用。最好添加一些标记,以在校对时突出显示该条目未定义。例如:

\renewcommand{\glsdoifexists}[2]{%
  \ifglsentryexists{#1}{#2}%
  {%
    \edef\glslabel{\glsdetoklabel{#1}}%
    {% scope
       \def\glsxtrundeftag{[?\glslabel?]}%
       \glsxtrundefaction{Glossary entry `\glslabel'
       has not been defined}{You need to define a glossary entry before
       you can reference it.}%
    }%
  }%
}

相关内容