我有一个词汇表条目,它定义了一个以特殊字符“ś”开头的单词。不幸的是,我需要在句子开头使用此条目,因此必须将其大写。这会导致在编译文档时出现一些错误。此问题的最小工作示例附在下面。我的问题是:我是否需要重写我的句子,以便带有特殊字符的条目出现在中间,或者是否可以使下面的示例工作?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{glossaries}
\makeglossaries
\newglossaryentry{entry1}
{
name=swat ,
description={A police tactical unit.}
}
\newglossaryentry{entry2}
{
name=świat,
description={The word 'world' in Polish.}
}
\title{How to create a glossary}
\author{ }
\date{ }
\begin{document}
\maketitle
This entry is fine whether I print it uppercase or not \Gls{entry1}.
This one causes an error if I try to print it uppercase \Gls{entry2}.
\clearpage
\printglossaries
\end{document}
答案1
问题出现是因为glossaries
包内部试图使用有效的方法将第一个字符变为大写
\MakeUppercase świat
8 位引擎无法做到这一点,因为只有第一个字节的输入被抓取。您需要使用能够正确处理此类 8 位输入的函数。尝试添加
\makeatletter
\def\@gls@makefirstuc#1{\MakeTitlecase{#1}}
\makeatother
到你的源。对于较旧的 LaTeX 版本,你可能需要
\makeatletter
\ExplSyntaxOn
\def\@gls@makefirstuc#1{\text_titlecase:n{#1}}
\ExplSyntaxOff
\makeatother
访问底层功能。