词汇表条目中的特殊字符如果以大写形式打印会导致错误

词汇表条目中的特殊字符如果以大写形式打印会导致错误

我有一个词汇表条目,它定义了一个以特殊字符“ś”开头的单词。不幸的是,我需要在句子开头使用此条目,因此必须将其大写。这会导致在编译文档时出现一些错误。此问题的最小工作示例附在下面。我的问题是:我是否需要重写我的句子,以便带有特殊字符的条目出现在中间,或者是否可以使下面的示例工作?

\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

访问底层功能。

相关内容