我想更改我的词汇表的标题,比如“符号列表”,如下所示(使用从包中借用的一些实体psvectorian
)。
\hfil\hspace*{-3.5cm}\psvectorian[height=3mm, width=8cm]{88}\hfil\\[\baselineskip]List of Symbols\\[0.9\baselineskip]\hfil\hspace*{-3.5cm}\psvectorian[height=3mm, width=8cm]{88}\hfil\\
这是我的MWE
\documentclass{memoir}
\usepackage{psvectorian}
\usepackage[english]{babel}
\usepackage{tikz}
\usepackage{tocloft}
\usepackage{glossaries}
\usepackage{fontspec}
\renewcommand*\glspostdescription{\dotfill}
\newcommand{\abc}[1]{\hfil\hspace*{-3.5cm}\psvectorian[height=3mm, width=8cm]{88}\hfil\\[\baselineskip]#1\\[0.9\baselineskip]\hfil\hspace*{-3.5cm}\psvectorian[height=3mm, width=8cm]{88}\hfil\\}
\loadglsentries{gloss-symb}
\newglossarystyle{mylong}{%
\setglossarystyle{long}%
\renewenvironment{theglossary}%
{\begin{longtable}[l]{@{}p{\dimexpr 2.5cm-\tabcolsep}p{0.8\hsize}}}
{\end{longtable}}%
}
\makenoidxglossaries
\begin{document}
\tableofcontents
\clearpage
\renewcommand{\glossaryname}{\abc{List of Symbols}}
\addcontentsline{toc}{chapter}{List of Symbols}
\printnoidxglossary[style=mylong]
\newpage
\gls{sigma} is an event set.
\end{document}
其中gloss-symb.tex
仅包括
\newglossaryentry{sigma}{name={\ensuremath{\Sigma}}, description={Event set}}
但是,我遇到了以下错误:
Package xkeyval Error: `HEIGHT' undefined in families `psvectorian'. \end{document}
Package xkeyval Error: `WIDTH' undefined in families `psvectorian'. \end{document}
这psvectorian
手动的(第 2 页)已经指出width
和height
确实是有效密钥。那么,我在这里做错了什么?
答案1
width
和height
确实存在,但WIDTH
和HEIGHT
不存在。问题是,在排版时,\glossaryname
宏被展开,\MakeUppercase
d,因此width
变成WIDTH
,然后您就会得到错误。这是将代码(\psvectorian
和诸如此类)与文本混合的问题:一些需要纯文本的代码与一般命令无法很好地配合。
一个简单的解决方法是将\psvectorian
命令打包成\protected
宏,这样它们在大写之前就不会扩展(因此它们也不会大写)。将你的定义分成\abc
三个部分就可以完成工作:
\protected\def\abcbefore{\hfil\hspace*{-3.5cm}\psvectorian[height=3mm, width=8cm]{88}\hfil\\[\baselineskip]}
\protected\def\abcafter{\\[0.9\baselineskip]\hfil\hspace*{-3.5cm}\psvectorian[height=3mm, width=8cm]{88}\hfil\\}
\newcommand{\abc}[1]{\abcbefore#1\abcafter}
可编译代码:
\documentclass{memoir}
\usepackage{psvectorian}
\usepackage{glossaries}
\begin{filecontents*}{gloss-symb}
\newglossaryentry{sigma}{name={\ensuremath{\Sigma}}, description={Event set}}
\end{filecontents*}
\renewcommand*\glspostdescription{\dotfill}
\protected\def\abcbefore{\hfil\hspace*{-3.5cm}\psvectorian[height=3mm, width=8cm]{88}\hfil\\[\baselineskip]}
\protected\def\abcafter{\\[0.9\baselineskip]\hfil\hspace*{-3.5cm}\psvectorian[height=3mm, width=8cm]{88}\hfil\\}
\newcommand{\abc}[1]{\abcbefore#1\abcafter}
\loadglsentries{gloss-symb}
\newglossarystyle{mylong}{%
\setglossarystyle{long}%
\renewenvironment{theglossary}%
{\begin{longtable}[l]{@{}p{\dimexpr 2.5cm-\tabcolsep}p{0.8\hsize}}}
{\end{longtable}}%
}
\makenoidxglossaries
\begin{document}
\tableofcontents
\clearpage
\renewcommand{\glossaryname}{\abc{List of Symbols}}
\addcontentsline{toc}{chapter}{List of Symbols}
\printnoidxglossary[style=mylong]
\newpage
\gls{sigma} is an event set.
\end{document}