省略词汇表中可选参数后的标点符号

省略词汇表中可选参数后的标点符号

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

在此处输入图片描述

答案2

o经过四个小时,我通过更改为O{ }并更改\IfNoValueF为解决了问题\ifthenelse

\NewDocumentCommand{\basic}{m O{ } m o}{
    \newglossaryentry{bsc:#1}{
        type=basic,
        name={#1},
        description={\ifthenelse{\equal{#2}{ }}{}{\emph{#2}, }#3}, 
        #4
    }
}

结果如下 在此处输入图片描述

相关内容