multicol 3 环境中的词汇表标题(双列文档)

multicol 3 环境中的词汇表标题(双列文档)

我想获得词汇表标题的这个定位(考虑到文档的其余部分是回忆录,两列): 词汇表标题示例

在...的基础上这个问题我做了一个 MWE,结果出现了一个奇怪的错误:标题出现了两次。\glossarysection到目前为止,每次修改尝试都失败了

错误双重词汇标题

\documentclass[twocolumn]{memoir}
\usepackage[hyperfirst=true,acronym,section=chapter]{glossaries}
\usepackage{multicol}

\renewcommand*{\glossarysection}[2][]{%
\onecolumn % added to display multicols correctly
  \begin{multicols}{3}[\chapter*{#2}]
  \setlength\glsdescwidth{0.6\linewidth}%
  \glossarymark{\glossarytoctitle}%
}
\renewcommand*{\glossarypostamble}{\end{multicols}}
\makeglossaries

\newglossarystyle{Style1}{%
\glossarystyle{index}}

\newglossaryentry{ppm}{name=ppm,description={parts per million}} 
\newglossaryentry{ppb}{name=ppb,description={parts per billion}} 

\begin{document}

The units are expressed in \gls{ppm}.
The units are expressed in \gls{ppb}.

\printglossary[type=main,style=Style1]

\end{document}

答案1

glossaries\glossarymark如果尚未定义,则定义为带有一个参数的命令,但memoir已经将其定义为没有参数的命令!

因此

\glossarymark{\glossarytoctitle}%

真正执行的只是\glossarymark(为运行标题做一个标记),然后{\glossarytoctitle}只是生成词汇表目录标题,然后在 multicol 中排版它。

我不太清楚为什么这样glossaries定义,从快速浏览文档来看,这似乎是针对旧版本的一些兼容性设置(可能),因为文档中正确的官方命令是这些天的。\glossarymark\glsglossarymark

因此,如果你将上面的代码替换为

\glsglossarymark{\glossarytoctitle}%

然后它就会正确显示。你开始的答案中可能也应该这样做。它在那里起作用的原因是,如果使用了 book 类并\glossarymark用一个参数定义,则兼容性设置就会生效。

相关内容