使用该包,可以使用命令、等glossaries
更改组名称,例如\newcommand*{\Agroupname}{}
\newcommand*{\Bgroupname}{}
这里。
在这里,我不得不使用\printnoidxglossary
,虽然可以工作,但是前面的命令似乎都不起作用\renewcommand{\glssymbolsgroupname}{}
。
有什么建议吗?
\documentclass{article}
\usepackage{hyperref}
\usepackage[nogroupskip]{glossaries}
\newglossaryentry{Almond}{ name=Almond, description={A fruit},
sort={Almond} }
\newglossaryentry{Berry}{ name=Berry, description={Another fruit},
sort={Berry} }
\newglossaryentry{Cherry}{ name={Cherry}, description={Yet another fruit},
sort={Cherry} }
\newglossaryentry{Tomato}{ name={Tomato}, description={Again another fruit},
sort={Tomato} }
\newglossaryentry{Strawberry}{ name={Strawberry}, description={Not a fruit},
sort={Strawberry} }
\makenoidxglossaries
\begin{document}
\gls{Almond}, \gls{Berry}, \gls{Cherry} and \gls{Tomato} are fruits, unlike \gls{Strawberry}.
%\renewcommand{\glssymbolsgroupname}{Non-fruits}
\newcommand*{\Agroupname}{a A}
\newcommand*{\Bgroupname}{b B}
\printnoidxglossary[sort=standard,style=listhypergroup]
\end{document}
答案1
我已经发现了这个问题,但仍在努力寻找适当的解决方案。
在内部,glossaries
似乎将标题存储为 Unicode 数字,因此“A”为 65,“B”为 66,等等。检索标题并检查是否\Xgroupname
设置了适当命令的函数是(缩进我的):
\@gls@getgrouptitle=macro:
#1#2->\DTLifint {#1}{%
\edef #2{\char #1\relax }%
}{%
\ifcsundef {#1groupname}{%
\def #2{#1}%
}{%
\letcs #2{#1groupname}%
}%
}
从该命令来看,当使用或 时,似乎#2
是一个字符(A,B,...),但当使用 时,是一个整数。xindy
makeindex
noidx
要做的“简单”事情就是重新定义它,使它是一个整数,它仍然会检查是否\Xgroupname
定义了适当的内容。
以下几乎就是您想要的:
\def\@gls@getgrouptitle#1#2{
\DTLifint {#1}{%
\def\@tmp@char{\char#1}%
}{%
\def\@tmp@char{#1}%
}%
\ifcsundef {\@tmp@char groupname}{%
\def #2{\@tmp@char}%
}{%
\letcs #2{\@tmp@char groupname}%
}%
}
唯一的问题似乎是它\def\@tmp@char{\char#1}
没有按照我想要的方式运行(如能就如何解决这个问题提供评论将不胜感激)。
更新
在无法\def\@tmp@char{\char#1}
做自己想做的事之后,我问过别人。以下采用Heiko的解决方案:
\begingroup
\catcode0=12 %
\gdef\chrdef#1#2{%
\begingroup%
\lccode0=\numexpr(#2)\relax%
\lowercase{\endgroup%
\def#1{^^@}%
}%
}%
\endgroup
\def\@gls@getgrouptitle#1#2{%
\DTLifint {#1}{%
\chrdef\@tmp@char{#1}%
}{%
\def\@tmp@char{#1}%
}%
\ifcsundef {\@tmp@char groupname}{%
\def #2{\@tmp@char}%
}{%
\letcs #2{\@tmp@char groupname}%
}%
}
如果在加载包后将其粘贴到序言中glossaries
(和 内部),则词汇表将使用、、 ...\makeatletter ... \makeatother
中定义的名称。\Agroupmame
\Bgroupname
以下是完整的 MWE(其中还包括对你的其它问题)
\documentclass{article}
\usepackage[
hmargin=8cm,
showframe
]{geometry}
\usepackage{hyperref}
\usepackage[
style=listhypergroup,
]{glossaries}
\renewcommand{\glossaryheader}{\item \parbox{0.9\textwidth}{\glsnavigation}}
\newglossaryentry{A}{name=A, description={Letter of the alphabet}}
\newglossaryentry{B}{name=B, description={Letter of the alphabet}}
\newglossaryentry{C}{name=C, description={Letter of the alphabet}}
\newglossaryentry{D}{name=D, description={Letter of the alphabet}}
\newglossaryentry{E}{name=E, description={Letter of the alphabet}}
\newglossaryentry{F}{name=F, description={Letter of the alphabet}}
\newglossaryentry{G}{name=G, description={Letter of the alphabet}}
\newglossaryentry{H}{name=H, description={Letter of the alphabet}}
\newglossaryentry{I}{name=I, description={Letter of the alphabet}}
\newglossaryentry{J}{name=J, description={Letter of the alphabet}}
\newglossaryentry{K}{name=K, description={Letter of the alphabet}}
\newglossaryentry{L}{name=L, description={Letter of the alphabet}}
\newglossaryentry{M}{name=M, description={Letter of the alphabet}}
\newglossaryentry{N}{name=N, description={Letter of the alphabet}}
\newglossaryentry{O}{name=O, description={Letter of the alphabet}}
\newglossaryentry{P}{name=P, description={Letter of the alphabet}}
\newglossaryentry{Q}{name=Q, description={Letter of the alphabet}}
\newglossaryentry{R}{name=R, description={Letter of the alphabet}}
\newglossaryentry{S}{name=S, description={Letter of the alphabet}}
\newglossaryentry{T}{name=T, description={Letter of the alphabet}}
\newglossaryentry{U}{name=U, description={Letter of the alphabet}}
\newglossaryentry{V}{name=V, description={Letter of the alphabet}}
\newglossaryentry{W}{name=W, description={Letter of the alphabet}}
\newglossaryentry{X}{name=X, description={Letter of the alphabet}}
\newglossaryentry{Y}{name=Y, description={Letter of the alphabet}}
\newglossaryentry{Z}{name=Z, description={Letter of the alphabet}}
\makenoidxglossaries
\makeatletter
\begingroup%
\catcode0=12 %
\gdef\chrdef#1#2{%
\begingroup%
\lccode0=\numexpr(#2)\relax%
\lowercase{\endgroup%
\def#1{^^@}%
}%
}%
\endgroup
\def\@gls@getgrouptitle#1#2{%
\DTLifint {#1}{%
\chrdef\@tmp@char{#1}%
}{%
\def\@tmp@char{#1}%
}%
\ifcsundef {\@tmp@char groupname}{%
\def #2{\@tmp@char}%
}{%
\letcs #2{\@tmp@char groupname}%
}%
}
\makeatother
\newcommand\Agroupname{Alpha}
\newcommand\Bgroupname{Bravo}
\newcommand\Cgroupname{Charlie}
\begin{document}
\glsaddall
\printnoidxglossary
\end{document}