词汇表:如何自定义带有单位附加列的符号列表?

词汇表:如何自定义带有单位附加列的符号列表?

我想在符号列表中添加一个附加列,用于将所属单元插入到前面的变量中。

在我的例子中,需要使用三个不同且独立的glossary-lists(acronymslistsymbolslistglossary),如下所示。但是,第三列应仅在 中使用symbolslist


最小工作示例(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}

结果截图:

在此处输入图片描述


正如预期的那样,这个 MWE 创建了三种不同类型的列表,这是完全正确的。现在,我想在符号列表中添加第三列,用于插入单位。如果我们能创建像下面的表格布局一样漂亮的东西,那就太好了。


最终(期望)状态的屏幕截图:

在此处输入图片描述


我借用了这个话题。遗憾的是,所属的 MWE 不能与scrbook-class 一起使用。还有其他可能性可以从顶部扩展我自己的代码来生成这样的布局(包括hrule)吗?


非常感谢您的帮助!

答案1

我建议unit为符号单位使用单独的键,并使用 来引用它\glsunit。(备选:使用user1...user6键来实现此功能)

此外,此键必须在 glossarystyle 中使用。我根据已提供的long3col样式定义了一种新样式,该样式按要求的顺序显示符号。

\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}

在此处输入图片描述

答案2

只是补充一下 Christian 的回答:要使用由其 MWE 定义并用于其中的命令内的单位宏,\si{unit}应该在设置任何条目之前添加该命令。siunitx\metre\kilo\watt\glssetnoexpandfield{unit}

更好的解释是这个答案

相关内容