%20undefiniert%20in%20Familien%20%E2%80%9Epsvectorian%E2%80%9C.png)
Ich möchte den Titel meines Glossars, beispielsweise „Liste der Symbole“, wie folgt ändern (unter Verwendung einiger aus dem psvectorian
Paket übernommener Entitäten).
\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\\
Hier ist meinMWE
\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}
in dem gloss-symb.tex
nur umfasst
\newglossaryentry{sigma}{name={\ensuremath{\Sigma}}, description={Event set}}
Allerdings sind mir die folgenden Fehler begegnet:
Package xkeyval Error: `HEIGHT' undefined in families `psvectorian'. \end{document}
Package xkeyval Error: `WIDTH' undefined in families `psvectorian'. \end{document}
Derpsvectorian
Handbuch(auf Seite 2) wurde das bereits vermerkt width
und height
es handelt sich tatsächlich um gültige Schlüssel. Was mache ich also hier falsch?
Antwort1
width
und height
existieren tatsächlich, und jedoch WIDTH
nicht HEIGHT
. Das Problem ist, dass das Makro irgendwann beim Setzen \glossaryname
erweitert wird und \MakeUppercase
d wird, sodass width
es wird WIDTH
und Sie den Fehler erhalten. Dies ist das Problem der Vermischung von Code ( \psvectorian
und dergleichen) mit Text: Mancher Code, der reinen Text erwartet, verhält sich bei allgemeinen Befehlen nicht gut.
Eine einfache Lösung besteht darin, die \psvectorian
Befehle in \protected
Makros zu packen, sodass sie vor der Großschreibung nicht erweitert werden (und somit auch nicht groß geschrieben werden). Die Aufteilung Ihrer Definition \abc
in drei Teile erledigt das Problem:
\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}
Kompilierbarer Code:
\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}