我正在尝试使用包 glossaries 为我的论文整理一份首字母缩略词列表。但是,在某些情况下,我需要使用该项目的不同语法形式(德语有点复杂……),它不等同于单数或复数形式。
一般问题是:有没有办法在文本中定义项目的自定义别名形式,而不影响对首字母缩略词是否已被引入的检测?
这是我的 MWE:
\documentclass[a4paper,11pt,oneside]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[acronym,shortcuts,toc]{glossaries} % Abkürzungsverzeichnis
\makeglossaries
\newacronym{EZM}{EZM}{extrazelluläre Matrix}
\begin{document}
In der \ac{EZM} befindet sich xyz. Die \ac{EZM} ist weiterhin xyz.
\printglossary[type=\acronymtype]
\end{document}
文本输出为:
在超大矩阵 (EZM) 中,它看起来是 xyz。 EZM 是下一个 xyz。
词汇表输出为:
EZM 超临界基质。 1
词汇表输出很好,但我希望我的文本输出看起来像这样:
在冰层外n矩阵(EZM)本身就是 xyz。 EZM 是下一个 xyz。
(注意:“extrazellulären”中多了一个“n”)
有想法吗?
答案1
我使用这段代码让它工作:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[acronym]{glossaries}
\usepackage{xspace}
\glsaddkey
{alternative}% key
{}% default value
{\glsentryalternative}% no link cs
{\Glsentryalternative}% no link ucfirst cs
{\glsalternative}% link cs
{\Glsalternative}% link ucfirst cs
{\GLSalternative}% link all caps cs
\newcommand{\glslongalias}[1]{%
\ifglsused{#1}{\glsalternative{#1}}{\glsalternative{#1} (\glsentrytext{#1})\glsunset{#1}}\xspace
}
\newacronym[
alternative={extrazellulären Matrix}
]{EZM}{EZM}{extrazelluläre Matrix}
\makeglossaries
\begin{document}
In der \glslongalias{EZM} befindet sich xyz. Die \gls{EZM} ist weiterhin xyz.
\printacronyms
\end{document}
答案2
为此,词汇表中预定义了六个“用户键”。这些键称为user1
... user6
,可以使用罗马数字命令(或和形式)访问\glsuseri
。\glsuservi
有关\Gls...
示例\GLS...
以及为它们指定自定义别名(宏)的方法,请参阅词汇表手册部分“4.2 其他语法结构”。
我将在此引用该手册的相关部分:
您可以使用六个用户键来提供替代方案,例如分词。例如:
\let\glsing\glsuseri \let\glsd\glsuserii \newcommand*{\ingkey}{user1} \newcommand*{\edkey}{user2} \newcommand*{\newword}[3][]{% \newglossaryentry{#2}{% name={#2},% description={#3},% \edkey={#2ed},% \ingkey={#2ing},#1% }% }
通过上述定义,我现在可以定义如下术语:
\newword{play}{to take part in activities for enjoyment} \newword[\edkey={ran},\ingkey={running}]{run}{to move fast using the legs}
并在文中使用它们:
Peter is \glsing{play} in the park today. Jane \glsd{play} in the park yesterday. Peter and Jane \glsd{run} in the park last week.
或者,您也可以使用 \glsaddkey 定义自己的键,如下面第 4.3 节所述。