我正在使用该glossaries
包创建数学符号词汇表,但无法使其与符号中的直立文本配合使用。我尝试使用和\mathrm
。\textup
只有当有两个或多个使用直立文本的定义时,它似乎才会引起问题。以下是 MWE 来说明问题:
\documentclass{book}
\usepackage{glossaries}
\makenoidxglossaries
\newglossaryentry{x}
{
name={$\mathrm{x}$},
description={description},
}
\newglossaryentry{y}
{
name={$\mathrm{y}$},
description={description},
}
\begin{document}
\chapter{Example}
\gls{x}
\gls{y}
\printnoidxglossary
\end{document}
结果是一大堆Undefined control sequence
错误,以及一个Too many }'s
错误。如果我删除其中一个定义(及其引用),或者删除至少一个命令,它就可以正常工作\mathrm
。
有没有办法让数学模式和直立文本很好地配合glossaries
?
答案1
如果您使用\makeglossaries
和\printglossaries
而不是noidx
版本,它会正常工作:
在这种情况下,您必须使用makeglossaries
或makeglossaries-lite
来生成词汇表。后者限制较多,但不需要 Perl,而且似乎在这里工作得很好。
完整代码:
\documentclass{book}
\usepackage{glossaries}
\makeglossaries
\newglossaryentry{x}
{
name={$\mathrm{x}$},
description={description},
}
\newglossaryentry{y}
{
name={$\mathrm{y}$},
description={description},
}
\begin{document}
\chapter{Example}
\gls{x}
\gls{y}
\printglossary
\end{document}
答案2
作为@cfr答案的补充,如果您仍想使用“noidx”版本,则必须设置密钥sort
。 (事实上,即使您使用其他答案,也应该这样做,否则makeindex
将被视为 会抛出字母排序的$\mathrm{x}$
字符序列。)$
\
m
a
t
h
r
m
{
x
}
$
修改后的 MWE:
\documentclass{book}
\usepackage{glossaries}
\makenoidxglossaries
\newglossaryentry{x}
{
name={$\mathrm{x}$},
sort={x},
description={description},
}
\newglossaryentry{y}
{
name={$\mathrm{y}$},
sort={y},
description={description},
}
\begin{document}
\chapter{Example}
\gls{x}
\gls{y}
\printnoidxglossary
\end{document}