如何向“printglossary”命令添加另一个可选选项?

如何向“printglossary”命令添加另一个可选选项?

我正在使用词汇表包来介绍我的书中的术语。现在我想向printglossary名为“column”的命令添加另一个选项,如下所示:

‎‎‎\printglossary[‎‎column=X]‎% which X is 1 or 2

描述:
我希望column=1默认处于活动状态,但是当用户输入时column=2,我希望输出的排版方式就像用户在正文中使用以下代码一样:

\twocolumn
\printglossary
‎\onecolumn

这是我的代码:

\documentclass{book}
\usepackage[xindy]{glossaries}
\makeglossaries
\newglossaryentry{maths}{
    name=mathematics,
    description={Mathematics is what mathematicians do in foo bar}}

\begin{document}
I'm talking about \gls{maths}. 
\printglossary[title=Special Terms]
\end{document}

您能帮我添加这个选项吗?

答案1

glossaries包使用xkeyval包来定义 key=value 选项。使用的键系列\printglossary称为printgloss,因此您可以使用任何命令xkeyval(例如)定义新键\define@choicekey。困难在于如何将选项与接口\printglossary\onecolumn词汇表之后的部分可以通过重新定义来实现\glossarypostamble\twocolumn之前的部分\printglossary需要以不同的方式处理,因为\glossarypreamble在标题之后,此时更改列布局为时已晚。相反,column=2可以修改选项\glossarysection,使其首先切换到两列模式,然后打印标题。

在下面的 MWE 中,我曾经将\define@choicekey用户的选择限制为column=1column=2。任何其他值都会导致错误。

\documentclass{book}

\usepackage[xindy]{glossaries}

\makeatletter

\let\orgglossarysection\glossarysection
\newcommand*\twocolumnglossarysection[2][\glossarytoctitle]{%
  \twocolumn
  \orgglossarysection[#1]{#2}%
}

\define@choicekey{printgloss}{column}[\val\nr]{1,2}%
{%
  \ifcase\nr\relax
  % column=1
    \let\glossarysection\orgglossarysection
    \renewcommand*{\glossarypostamble}{}
  \or
  % column=2
    \let\glossarysection\twocolumnglossarysection
    \renewcommand*{\glossarypostamble}{\onecolumn}
  \fi
}
\makeatother

\makeglossaries

\newglossaryentry{maths}{
    name=mathematics,
    description={Mathematics is what mathematicians do in foo bar}}

\begin{document}
I'm talking about \gls{maths}.

\printglossary[title=Special Terms,column=2]
\end{document}

相关内容