使用词汇表时遇到问题(名称包含德语变音符号)

使用词汇表时遇到问题(名称包含德语变音符号)

我正在努力使用词汇表包,可能花了一两天时间才找到它无法正常工作的原因。现在我想是时候向这里的专业 tex 用户寻求帮助了!

遵循最小的例子使乳胶抱怨! Paragraph ended before \@skipmath was complete.

\documentclass[12pt]{scrreprt}
\usepackage[ngerman,english]{babel}

\usepackage[utf8]{inputenc}                     % no difference whether used or not

%\usepackage[xindy={language=german,codepage=duden-utf8}]{glossaries}   % no difference
\usepackage{glossaries}
\makeglossaries

\newglossaryentry{aquivalenzklassenbildung}{
    name={Äquivalenzklassenbildung},
    plural={Äquivalenzklassenbildungen},
    description={ist ein Verfahren, etc.}
}    

%----------------- document -----------------------------
\begin{document}

\selectlanguage{ngerman}

\printglossary


\chapter{Introduction}

\Gls{aquivalenzklassenbildung} is used... and latex reports ``! Paragraph ended before \\@skipmath was complete''.
The same goes for \Glspl{aquivalenzklassenbildung}...

\end{document}

接下来你需要知道的是我的 tex 设置(我猜):我正在使用从 Debian 测试存储库安装的 TexLive(当前版本为 2020.20210202-2)

为了生成 PDF,我通常执行以下命令:

latex example.tex
makeglossaries example
pdflatex example.tex

如上所述,我尝试了很多方法,但我记不清所有方法(老实说,我只记得很少)。我记得我尝试了各种方法,包括使用 inputenc 以及用 ASCII 编码包含词汇表条目的文件,但都没有达到预期的效果。

也许我需要一些词汇表选项,\usepackage[xindy={language=german,codepage=duden-utf8}]{glossaries}但不是 xindy,而是 makeglossaries?我真的不知道如何让德语变音符号在词汇表名称中起作用(顺便说一句,不使用变音符号作为条目名称对我来说似乎不是一个合理的解决方法)。

在一些帖子中,人们使用 xindy 而不是 makeglossaries。这是我还没有尝试过的一件事。

也许你们中有人有主意?我很感激你们能提供的每一条建议。即使是“使用 xindy 并附带以下选项”也会很感激 :-)

提前致谢,

克里斯

答案1

词汇表使用 mfirstuc 包将首字母大写。

遗憾的是,这不能正确处理变音符号。

除了简单地避免使用 \Gls 等大写命令之外,您还可以尝试使用 expl3 命令\text_uppercase_first:n

\documentclass[12pt]{scrreprt}
\usepackage{mfirstuc}
%----------------- document -----------------------------
\begin{document}

\makefirstuc{\emph{hallo}}
%\makefirstuc{äqui} %errors

\ExplSyntaxOn
\cs_set_eq:NN\makefirstuc\text_titlecase_first:n
\ExplSyntaxOff

\makefirstuc{\emph{hallo}}
\makefirstuc{äqui}


\end{document}

在此处输入图片描述

答案2

除了 Ulrike Fischer 的答案之外,您还可以尝试使用键切换排序方法sort。对我来说很有效。顺便说一句:xindy 不是替代品,\makeglossaries而是您可以使用的另一种排序算法。

\documentclass[12pt]{scrreprt}
\usepackage[ngerman,english]{babel}
\usepackage[utf8]{inputenc} 

\usepackage[sort=standard]{glossaries}
\newglossaryentry{aquivalenzklassenbildung}{
    name={Äquivalenzklassenbildung},
    plural={äquivalenzklassenbildungen}, % beware the small ä
    description={ist ein Verfahren, etc.},
    sort={aquivalenzklassenbildung},
}   

%----------------- document -----------------------------
\makeglossaries
\begin{document}
    \selectlanguage{ngerman}
    \printglossary
    
    \chapter{Introduction}
    \Gls{aquivalenzklassenbildung} is used as well as \Glspl{aquivalenzklassenbildung} 
\end{document}

相关内容