我正在写一篇论文,其中有很多缩写词。有些缩写词经常被提及,而其他的缩写词则很少被提及。我读到,可以创建一个新的词汇表,并将所有我不想显示的缩写词放在该列表中。
不过,我想知道是否有一种方法可以根据缩写词的使用频率自动将缩写词添加到显示的列表中或从列表中排除。例如,假设我定义
\newacronym{am}{AM}{Additive Manufacturing}
\newacronym{osrx}{OSIRIS-REx}{Origins, Spectral Interpretation, Resource Identification, Security, Regolith Explorer}
和两个列表,shown_acronyms
和hidden_acronyms
。在我的文本中我使用了\gls{am}
10 次,而\gls{osrx}
只使用了两次。有没有办法让 Latex 在编译文档时检查每个列表使用了多少次并将它们添加到适当的列表中?
答案1
您可以使用条目计数机制glossaries-extra
扩展包。以下内容改编自sample-entrycount.tex
提供glossaries-extra
:
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage{glossaries-extra}
\makeglossaries
\setabbreviationstyle[acronym]{short-long}
\GlsXtrEnableEntryCounting
{acronym}% list of categories to use entry counting
{3}% trigger value (only add to glossary if count > 3)
\newacronym{html}{HTML}{hypertext markup language}
\newacronym{xml}{XML}{extensible markup language}
\newacronym{css}{CSS}{cascading style sheet}
\newacronym{am}{AM}{Additive Manufacturing}
\newacronym{osrx}{OSIRIS-REx}{Origins, Spectral Interpretation, Resource Identification, Security, Regolith Explorer}
\begin{document}
Used once: \gls{html}.
Used twice: \gls{xml} and \gls{xml}.
Used three times: \gls{css} and \gls{css} and \gls{css}.
Used four times: \gls{am} and \gls{am} and \gls{am} and \gls{am}.
Used five times: \gls{osrx} and \gls{osrx} and \gls{osrx} and
\gls{osrx} and \gls{osrx}.
\printglossaries
\end{document}
文档构建(假设文件名为myDoc.tex
)是:
pdflatex myDoc
pdflatex myDoc
makeglossaries myDoc
pdflatex myDoc
(pdflatex
酌情替换)。
请注意,未包含的术语仅显示完整格式。如果需要,可以通过重新定义\cglsformat
命令集(在第14.1节请参阅glossaries
用户手册)。
例如,要显示长格式,然后显示括号中的短格式:
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage{glossaries-extra}
\makeglossaries
\setabbreviationstyle[acronym]{short-long}
\GlsXtrEnableEntryCounting
{acronym}% list of categories to use entry counting
{3}% trigger value (only add to glossary if count > 3)
\renewcommand*{\cglsformat}[2]{%
\ifglshaslong{#1}%
{\glsentrylong{#1}#2 (\glsentryshort{#1})}% abbreviation
{\glsentryfirst{#1}#2}% regular term
}
\renewcommand*{\cGlsformat}[2]{%
\ifglshaslong{#1}%
{\Glsentrylong{#1}#2 (\glsentryshort{#1})}% abbreviation
{\Glsentryfirst{#1}#2}% regular term
}
\renewcommand*{\cglsplformat}[2]{%
\ifglshaslong{#1}%
{\glsentrylongpl{#1}#2 (\glsentryshortpl{#1})}% abbreviation
{\glsentryfirstplural{#1}#2}% regular term
}
\renewcommand*{\cGlsplformat}[2]{%
\ifglshaslong{#1}%
{\Glsentrylongpl{#1}#2 (\glsentryshortpl{#1})}% abbreviation
{\Glsentryfirstplural{#1}#2}% regular term
}
\newacronym{html}{HTML}{hypertext markup language}
\newacronym{xml}{XML}{extensible markup language}
\newacronym{css}{CSS}{cascading style sheet}
\newacronym{am}{AM}{Additive Manufacturing}
\newacronym{osrx}{OSIRIS-REx}{Origins, Spectral Interpretation, Resource Identification, Security, Regolith Explorer}
\begin{document}
Used once: \gls{html}.
Used twice: \gls{xml} and \gls{xml}.
Used three times: \gls{css} and \gls{css} and \gls{css}.
Used four times: \gls{am} and \gls{am} and \gls{am} and \gls{am}.
Used five times: \gls{osrx} and \gls{osrx} and \gls{osrx} and
\gls{osrx} and \gls{osrx}.
\printglossaries
\end{document}
这些格式化命令中的每一个都以标签作为第一个参数,以插入材料(由命令的最后一个可选参数提供\gls
)作为第二个参数。我曾经\ifglshaslong
检查条目是否具有长格式。这允许缩写和一般术语的混合。如果您知道计数机制仅适用于缩写,则可以跳过检查。
请注意,这些格式化命令应用于引用的每个实例,其中总引用计数在上一次运行中不超过该期限的触发值。
使用、或\glsunset
等命令明确取消设置或重置首次使用标志将扰乱计数。(重置命令会将计数重置为 0。)\glsreset
\glsunsetall
\glsresetall