![省略词汇表中可选参数后的标点符号](https://linux22.com/image/425406/%E7%9C%81%E7%95%A5%E8%AF%8D%E6%B1%87%E8%A1%A8%E4%B8%AD%E5%8F%AF%E9%80%89%E5%8F%82%E6%95%B0%E5%90%8E%E7%9A%84%E6%A0%87%E7%82%B9%E7%AC%A6%E5%8F%B7.png)
#2
我正在构建德语数学术语表。当可选参数为空时,我想省略其后的逗号#2
。
我测试了\IfNoValueF
和\IfNoValueTF
。它们在没有的情况下也能正常工作\newglossaryentry
,但它们在里面会打印“-No Value-” \newglossaryentry
。(我厌倦了遵循这个答案)。我怎样才能避免打印“-No Value-”?谢谢!
以下是我所做的:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[colorlinks]{hyperref}
%------------------------------
% GLOSSARY
%------------------------------
\usepackage[toc, section=subsection, nonumberlist, style=index]{glossaries}
\newglossary[bsc-log]{basic}{bsc}{list1}{Basic}
\makeglossaries
\usepackage{xparse}
%\basic{<name>}[<gender>]{<description>}[<other keywords>]
\NewDocumentCommand{\test}{m o m o}{
\textbf{#1}
\IfNoValueF{#2}{\emph{#2}, }#3
}
\NewDocumentCommand{\basic}{m o m o}{
\newglossaryentry{bsc:#1}{
type=basic,
name={#1},
description={\IfNoValueF{#2}{\emph{#2}, }#3}, #4
}
}
\begin{document}
% PRINT TOC
\tableofcontents
\newpage
\test{Primzahl}{prime number}
\test{Gleichung}[die]{equation}
\basic{Primzahl}{prime number}
\basic{Gleichung}[die]{equation}
%PRINT GLOSSARIES
\glsaddall
\printglossaries
\end{document}
另外,这是我第一次使用该glossaries
包。我想知道是否有更好的解决方案来添加名词的性别?我尝试使用user1
,但它不会打印出来。
答案1
问题在于,-NoValue-
用于测试的字符串很“奇怪”,所以它实际上不是正常的文本。
当您通过\IfNoValueF
测试时description
,它基本上是“按原样”编写的。
一个解决方案是声明应该扩展相关字段。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[colorlinks]{hyperref}
%------------------------------
% GLOSSARY
%------------------------------
\usepackage[toc, section=subsection, nonumberlist, style=index]{glossaries}
\newglossary[bsc-log]{basic}{bsc}{list1}{Basic}
\makeglossaries
\glssetexpandfield{desc}
\glssetexpandfield{descplural}
\usepackage{xparse}
%\basic{<name>}[<gender>]{<description>}[<other keywords>]
\NewDocumentCommand{\test}{m o m o}{%
\textbf{#1}%
\IfNoValueF{#2}{ \emph{#2},} #3%
}
\NewDocumentCommand{\basic}{m o m o}{%
\newglossaryentry{bsc:#1}{
type=basic,
name={#1},
description={\IfNoValueF{#2}{\emph{#2}, }#3\IfValueT{#4}{, #4}},
}%
}
\begin{document}
% PRINT TOC
\tableofcontents
\newpage
\test{Primzahl}{prime number}[test]
\test{Gleichung}[die]{equation}
\basic{Primzahl}{prime number}
\basic{Gleichung}[die]{equation}
%PRINT GLOSSARIES
\glsaddall
\printglossaries
\end{document}