我遇到了类似的问题:双列长表或表格。我想要相同的结果——即一个两列词汇表(即总共 4 列),其中缩写列表及其描述会换行到同一页上新的第二列中,然后再继续翻页。但是,我正在使用该glossaries
包。我扫描了(非常长的)文档,我能找到的唯一对列的引用是在单个词汇表列中添加更多信息(即符号)的意义上。有人知道是否有办法做我要求的事情吗?
顺便说一句:我无论如何也想不出如何让词汇表的页眉全部大写(就像其他所有页眉一样)。将命令重新定义\glossarymark
为任何内容都会让我得到一个“CONTENTS”页眉,从紧挨着词汇表的目录流出。
编辑:不确定多问问题有多受欢迎,但因为这些都是与风格相关的,所以我还有一个问题——词汇表的风格是否与目录相似/相同?软件包附带的所有风格似乎都很糟糕……最接近我想要的(极其简单)是长风格,但出于某种原因,它缩进了 1.5 英寸,看起来很丑陋。
答案1
由于我也为此苦苦挣扎了一段时间,而且我在网上找不到任何有用的讨论,所以我只是仔细阅读了手册!也许这是一个比这个主题更新的功能,所以在提出问题的那一天它还不存在。但我想提供一种简单的方法来用这个glossaries
包实现多列,这样其他人就可以更快地找到解决方案。
只需要glossary-mcols
提供这个功能的附加包。
\documentclass{scrreprt}
\usepackage{glossaries}
\usepackage{glossary-mcols}
\makeglossaries
\renewcommand*{\glspostdescription}{} % Removes dots at the end of each entry.
\begin{document}
% Some entries.
\newglossaryentry{glos:begin}{name=Begin, description={This is the beginning.}}
\newglossaryentry{glos:bold}{name=Bold, description=\nopostdesc}
\newglossaryentry{glos:bear}{name=Bear, description={A bear can make you run fast.}}\newglossaryentry{glos:chicken}{name=Chicken, description={Tasty...}}
\newglossaryentry{glos:elephant}{name=Elephant, description=\nopostdesc}
\newglossaryentry{glos:tantalos}{name=Tantalos, description={Just a random name.}}
\newglossaryentry{glos:zebra}{name=Zebra, description=\nopostdesc}
% Use the entries so that they show up in the glossary.
\gls{glos:begin}
\gls{glos:bold}
\gls{glos:bear}
\gls{glos:chicken}
\gls{glos:elephant}
\gls{glos:tantalos}
\gls{glos:zebra}
% Print the glossary with one of the mcol styles.
\printglossary[style=mcolindex, title=Index]
\end{document}
答案2
关于您的第一个问题(如何实现两列词汇表):这是一个使用labeling
列表环境提供的解决方案KOMA 脚本的scrextend
包。请注意,您必须提供最长的标签(在我的示例中为“电解质”)作为 的参数\begin{labeling}
。还需要破解一些glossaries
内部机制以防止\printglossaries
自动排版标题——而是在 的可选参数中手动添加标题\begin{multicols}
。
\documentclass{article}
\usepackage{scrextend}% provides the "labeling" environment
\usepackage{glossaries}
\makeglossaries
\newglossarystyle{labeling}{%
\renewcommand{\theglossary}{\begin{labeling}{electrolyte\quad}}%
\renewcommand{\endtheglossary}{\end{labeling}}%
}
\glossarystyle{labeling}
\newglossaryentry{electrolyte}{name=electrolyte,%
description={solution able to conduct electric current}}
\newglossaryentry{tex.sx}{name=tex.sx,%
description={a website for enthusiastic users of \TeX, \LaTeX\ and related systems}}
\usepackage{multicol}
\setlength{\columnsep}{25pt}
% Don't typeset a glossary heading automatically
\makeatletter
\renewcommand*{\@glossarysection}[2]{%
\ifx\@@glossarysecstar\@empty
% \csname\@@glossarysec\endcsname{#2}% DELETED
\else
% \csname\@@glossarysec\endcsname*{#2}% DELETED
\@gls@toc{#1}{\@@glossarysec}%
\fi
\@@glossaryseclabel}
\makeatother
\begin{document}
Some text about \gls{electrolyte} and \gls{tex.sx}.
\begin{multicols}{2}[\section*{\glossaryname}]
\printglossaries
\end{multicols}
\end{document}
答案3
我遇到了类似的问题。我尝试了 Keks Dose 的建议,但效果并不令人满意,因为词汇表的标题(在我的情况下是章节)multicols
也是 的一部分。但是,定义一种新的词汇表样式(在我的情况下基于list
),其中有一个{multicols}{2}
围绕标准的 -Environment description
,解决了这个问题:
\newglossarystyle{mylist}{
\glossarystyle{list}% base this style on the list style
\renewenvironment{theglossary}{
\begin{multicols}{2}\begin{description}}{\end{description}\end{multicols}}
% the default environment for list is \begin{description} \end{description}
}
\printglossary[style=mylist]
编辑:我刚刚意识到这种解决方案几乎是在对上一个答案的评论中提供的。mforbes 的解决方案使用BeforeBeginEnvironment
和AfterEndEnvironment
来自etoolbox
包。我的解决方案基于了解您正在修改的样式的默认环境,但不需要额外的包。mforbes 的解决方案与theglossary
答案4
难道你的问题不能通过简单地使用multicol
包并写下以下内容来回答:
\begin{multicols}{2}
\glossary
\end{multicols}