此示例为英文
\documentclass{article}
\usepackage{glossaries}
\newglossaryentry{tea}
{
name=tea,
description={a drink}
}
\makeglossaries
\begin{document}
Drink \gls{tea}.
\printglossaries
\end{document}
工作正常。
当我对词汇表条目使用变音符号时出现问题:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{glossaries}
\newglossaryentry{tēju}
{
name=tēja,
description={a drink}
}
\makeglossaries
\begin{document}
Dzert \gls{tēju}.
\printglossaries
\end{document}
错误是:
! Missing \endcsname inserted.
<to be read again>
\unhbox
如何使词汇表对其他语言友好?
答案1
从部分4.“定义词汇表条目”用户手册:
请注意,虽然扩展拉丁字符或其他非拉丁字符(例如 é 或 ß)在 .tex 文件中看起来像普通字符,但它实际上是一个宏(活动字符),因此不能在标签中使用。(这适用于 LaTeX 而不是 XeLaTeX。)还要注意 babel 的选项,这些选项会将某些标点符号(例如 : 或 -)更改为活动字符。
使用 PDFLaTeX,UTF-8 字符(例如 é)实际上被视为两个八位字节。第一个八位字节被激活(通过inputenc
)并成为重音命令,第二个八位字节是该命令的参数。因此,如果您只能使用 PDFLaTeX,那么您就不能在标签中使用非 ASCII 字符,并且您需要确定合适的 ASCII 命名方案。例如,请参阅 的 1.1 节“标签”glossaries-extra 和 bib2gls:入门指南(PDF)。
如果您想在标签中使用非 ASCII 字符,那么您需要使用 XeLaTeX 或 LuaLaTeX,它们都原生支持 UTF-8,而不需要活动八位字节技巧。
之所以有此限制,是因为标签用于构建内部控制序列,用于存储与词汇表条目相关的所有信息。这意味着标签必须能够完全展开才能创建命令名称。