glossaries: How to customize list of symbols with additional column for units?
I suggest to use a separate unit
key for the symbol unit and refer to it with \glsunit
. (Alternative: Use the user1
...user6
keys for this feature)
In addition, this key must be used in the glossarystyle. I've defined a new style based on the already provided long3col
style which displays the symbols in the requested order.
\documentclass{book}
\usepackage{siunitx}
\usepackage[acronym,toc]{glossaries} % use glossaries-package
\setlength{\glsdescwidth}{15cm}
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolslist} % create add. symbolslist
\glsaddkey{unit}{\glsentrytext{\glslabel}}{\glsentryunit}{\GLsentryunit}{\glsunit}{\Glsunit}{\GLSunit}
\makeglossaries % activate glossaries-package
% ==== EXEMPLARY ENTRY FOR SYMBOLS LIST =========================================
\newglossaryentry{symb:Pi}{name=\ensuremath{\pi},
description={Geometrical value},
unit={},
type=symbolslist}
\newglossaryentry{height}{name=\ensuremath{h},
description={Height of tower},
unit={\si{m}},
type=symbolslist}
\newglossaryentry{energyconsump}{name=\ensuremath{P},
description={Energy consumption},
unit={\si{kW}},
type=symbolslist}
% ==== EXEMPLARY ENTRY FOR ACRONYMS LIST ========================================
\newacronym{VRBD}{VRBD}{Violet-Red-Bile-Glucose-Agar}
% ==== EXEMPLARY ENTRY FOR MAIN GLOSSARY ========================================
\newglossaryentry{Biofouling}{name=Biofouling,description={Some description}}
\newglossarystyle{symbunitlong}{%
\setglossarystyle{long3col}% base this style on the list style
\renewenvironment{theglossary}{% Change the table type --> 3 columns
\begin{longtable}{lp{0.6\glsdescwidth}>{\centering\arraybackslash}p{2cm}}}%
{\end{longtable}}%
%
\renewcommand*{\glossaryheader}{% Change the table header
\bfseries Sign & \bfseries Description & \bfseries Unit \\
\hline
\endhead}
\renewcommand*{\glossentry}[2]{% Change the displayed items
\glstarget{##1}{\glossentryname{##1}} %
& \glossentrydesc{##1}% Description
& \glsunit{##1} \tabularnewline
}
}
\begin{document}
\glsaddall
\printglossary[type=\acronymtype,style=long] % list of acronyms
\printglossary[type=symbolslist,style=symbunitlong] % list of symbols
\printglossary[type=main] % main glossary
\end{document}
Just adding to Christian's answer: to use the unit macros inside the \si{unit}
command defined by siunitx
such as \metre
and \kilo\watt
used in his MWE, one should add the command \glssetnoexpandfield{unit}
before setting any entries.
It is better explained in This Answer.