我想在符号列表中添加一个附加列,用于将所属单元插入到前面的变量中。
在我的例子中,需要使用三个不同且独立的glossary
-lists(acronymslist
、symbolslist
和glossary
),如下所示。但是,第三列应仅在 中使用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}
更好的解释是这个答案。