在 LaTeX 中强制使用缩写词

在 LaTeX 中强制使用缩写词

我正在编写一个文档,希望通过glossaries包强制使用首字母缩略词。我的目的是确保每个首字母缩略词都与命令正确使用,\gls{}以便我可以在整个文档中保持拼写一致。如果在不使用命令的情况下使用首字母缩略词,我希望 LaTeX (Overleaf) 发出警告或错误。\gls下面是一个最小工作示例 (MWE) 来说明我的目标:

\documentclass{article}

\usepackage[%
  acronym,         % Enable acronym functionality
  nomain,          % No main glossary
]{glossaries}

\newacronym{HTML}{HTML}{Hypertext Markup Language}
\makeglossaries

\begin{document}

\gls{HTML} should be valid whereas the pure usage of ``Hypertext Markup Language'' or ``HTML'' should throw warnings/errors as they are not used with \texttt{\gls\{HTML\}}

\end{document}

在此示例中, 的使用是正确的,并且应该可以编译,不会出现任何问题。但是,我希望 LaTeX 将和(不带)\gls{HTML}的实例标记为不正确,并发出警告或错误以提醒我误用。Hypertext Markup LanguageHTML\gls

有没有办法强制执行此规则,可能是通过glossaries-extra或自定义命令?任何有关如何实现此目的的指导都将不胜感激。提前感谢您的帮助!

答案1

https://www.overleaf.com/read/pdnvqtykcmcs#ede4b2

您可以在这里 grep(搜索)首字母缩略词及其扩展,grep.log您可以在 overleaf 的other logs and files菜单中看到它,它显示行号和找到的文本。

checking HTML
21:`HTML
21:`Hypertext Markup Language

\documentclass{article}

\usepackage[%
  acronym,         % Enable acronym functionality
  nomain,          % No main glossary
]{glossaries}
\NewCommandCopy\xnewaconym\newacronym
\makeatletter
\def\newacronym#1#2#3{%
\xnewaconym{#1}{#2}{#3}%
\immediate\write18{echo checking #1 >>grep.log}%
\immediate\write18{grep -on "[^{}]#2" *.tex >>grep.log}%
\immediate\write18{grep -on "[^{}]#3" *.tex >> grep.log}%
}
\makeatother
\newacronym{HTML}{HTML}{Hypertext Markup Language}
\makeglossaries

\begin{document}

\gls{HTML} should be valid whereas the pure usage of ``Hypertext Markup Language'' or ``HTML'' should throw warnings/errors as they are not used with \texttt{\gls{HTML}}

\end{document}

目前,上述项目有一个有效的 overleaf 链接,但我不能保证它会永远存在。

相关内容