[Tex/LaTex] glossaries: How to customize list of symbols with additional column for units

descriptionglossarieslistssymbolsunits

I want to add an additional column to the list of symbols for inserting the belonging units to the preceding variables.

In my case, it is necessary to use three different and independent glossary-lists (acronymslist, symbolslist and glossary) like shown below. However, the third column should be used only in the symbolslist.


Minimum Working Example (MWE):

\documentclass{scrbook}                           % documentclass: scrbook
\usepackage[acronym,toc]{glossaries}              % use glossaries-package

\newglossary[slg]{symbolslist}{syi}{syg}{Symbolslist} % create add. symbolslist
\makeglossaries                                   % activate glossaries-package


% ==== EXEMPLARY ENTRY FOR SYMBOLS LIST =========================================
    \newglossaryentry{symb:Pi}{name=\ensuremath{\pi},
        description={Geometrical value},
        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}}


\begin{document}

    \glsaddall

    \printglossary[type=\acronymtype,style=long]  % list of acronyms
    \printglossary[type=symbolslist,style=long]   % list of symbols
    \printglossary[type=main]                     % main glossary

\end{document}

Screenshot of the result:

enter image description here


As expected, this MWE creates three different types of lists what is entirely correct. Now, I want to add a third column only to the list of symbols for inserting the units. It would be great if we can create something beautiful like the following table-layout.


Screenshot of the final (desired) state:

enter image description here


I have borrowed this shapely layout from this topic. Unfortunately, the belonging MWE doesn't work together with scrbook-class. Is there any other possibility to expand my own code from the top to generate such a layout (including the hrule)?


Thank you very much for your help!

Best Answer

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}

enter image description here