我正在使用提供的示例代码TEX.SX 由 Talbot 提供和也在这里和她我在其中评论了一种解决方案,即按章节列出词汇表。但这里的词汇表没有按对齐方式排列,这在格式上看起来很糟糕。如果名称和描述等都垂直对齐,那就太好了,这样每个词汇表术语、符号、首字母缩略词、符号或每章使用的自定义词汇表都有清晰的可读性。样式super
很好看,但无法使用上述链接中提供的按章节列出的想法。
\documentclass[hidelinks, twoside,11pt]{book}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage[utf8]{inputenc} % Required for inputting international characters
\usepackage[T1]{fontenc} % Output font encoding for international characters
\usepackage{lipsum}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{setspace}
\usepackage{datatool-base}
\usepackage[nomain, counter=chapter,xindy, section=section, acronym, nonumberlist,nopostdot,nogroupskip, toc,symbols,numbers]{glossaries}
\makeglossaries
% load some dummy acronyms for testing
\loadglsentries{example-glossaries-acronym.tex}
\begin{document}
\tableofcontents
\singlespacing
\printglossary[title={List of Abbreviations}]
\doublespacing
\chapter{Sample Text}
\lipsum % dummy text - remove from real document
Add all the acronyms for testing purposes \glsaddall
\end{document}
以下按章节输出的格式会很好。此外,如果提供附加功能,那么如果有人不想按章节输出,而是按部分输出(包含几个章节),或者一本书中的单个词汇表将涵盖所有方面。
答案1
条件代码我之前的回答在类似表格的环境中不起作用,因为它本质上需要:
\renewcommand*{\glossentry}[2]{%
\edef\doifinlocation{\noexpand\ifinlocation{\thechapter}{##2}}%
\doifinlocation
{%
\glossentryname{##1} & \glossentrydesc{##1}\tabularnewline
}%
}%
在样式定义中,这会导致错误。
更好的方法是使用样式,特别是如果您希望所有列表的描述偏移量相同时altlist
。此样式需要知道最宽的名称才能正确设置缩进。定义样式glossary-tree
的包提供了,它会遍历所有定义的条目以确定最宽的名称(对于未设置键的条目)。alttree
\glsfindwidesttoplevelname
parent
例如:
\documentclass{report}
\usepackage[counter=chapter,xindy,section=section]{glossaries}
\GlsSetXdyMinRangeLength{0}
\makeglossaries
\loadglsentries{example-glossaries-acronym.tex}% dummy entries
\newglossarystyle{mystyle}%
{%
\setglossarystyle{alttree}%
\renewcommand*{\glossaryentrynumbers}[1]{\striprelax##1\endstriprelax}%
\renewcommand*{\glsXchapterXglsnumberformat}[2]{##2}%
\renewcommand*{\delimR}{,}%
\let\orgglossentry\glossentry
\renewcommand*{\glossentry}[2]{%
\edef\doifinlocation{\noexpand\ifinlocation{\thechapter}{##2}}%
\doifinlocation{\orgglossentry{##1}{}}%
}%
}
\newcommand{\ifinlocation}[3]{%
\DTLifinlist{#1}{#2}{#3}{}%
}
\def\striprelax\relax#1\endstriprelax{#1}
\setglossarystyle{mystyle}
\glsfindwidesttoplevelname
\begin{document}
\chapter{Sample Chapter}
\printglossary
Test dummy entries: \gls{lid}, \gls{aeu} and \gls{eii}.
\glsresetall
\chapter{Another Chapter}
\printglossary
Test dummy entries: \gls{pqv}, \gls{aeu} and \gls{eii}.
\end{document}
第 1 页:
第2页:
nogroupskip
如果每个列表中只有几个条目,您可能需要关闭组分隔符( ),并在词汇表后添加一些额外的垂直间距,以将其与以下文本分开:
\newglossarystyle{mystyle}%
{%
\setglossarystyle{alttree}%
\renewenvironment{theglossary}%
{\csdef{@gls@prevlevel}{-1}\mbox{}\par}%
{\par\bigskip\par}% extra space after glossary
\renewcommand*{\glsgroupskip}{}% no group separation
\renewcommand*{\glossaryentrynumbers}[1]{\striprelax##1\endstriprelax}%
\renewcommand*{\glsXchapterXglsnumberformat}[2]{##2}%
\renewcommand*{\delimR}{,}%
\let\orgglossentry\glossentry
\renewcommand*{\glossentry}[2]{%
\edef\doifinlocation{\noexpand\ifinlocation{\thechapter}{##2}}%
\doifinlocation{\orgglossentry{##1}{}}%
}%
}
或者,您也可以不使用,而是\glsfindwidesttoplevelname
使用 明确设置最宽的名称\glssetwidest
,因此如果您想要更多空间,可以执行以下操作:
\documentclass{report}
\usepackage[counter=chapter,xindy,section=section]{glossaries}
\GlsSetXdyMinRangeLength{0}
\makeglossaries
\loadglsentries{example-glossaries-acronym.tex}% dummy entries
\newglossarystyle{mystyle}%
{%
\setglossarystyle{alttree}%
\renewenvironment{theglossary}%
{\csdef{@gls@prevlevel}{-1}\mbox{}\par}%
{\par\bigskip\par}% extra space after glossary
\renewcommand*{\glsgroupskip}{}% no group separation
\renewcommand*{\glossaryentrynumbers}[1]{\striprelax##1\endstriprelax}%
\renewcommand*{\glsXchapterXglsnumberformat}[2]{##2}%
\renewcommand*{\delimR}{,}%
\let\orgglossentry\glossentry
\renewcommand*{\glossentry}[2]{%
\edef\doifinlocation{\noexpand\ifinlocation{\thechapter}{##2}}%
\doifinlocation{\orgglossentry{##1}{}}%
}%
}
\newcommand{\ifinlocation}[3]{%
\DTLifinlist{#1}{#2}{#3}{}%
}
\def\striprelax\relax#1\endstriprelax{#1}
\setglossarystyle{mystyle}
\glssetwidest{xxxxxxxxxx}
\begin{document}
\chapter{Sample Chapter}
\printglossary
Test dummy entries: \gls{lid}, \gls{aeu} and \gls{eii}.
\glsresetall
\chapter{Another Chapter}
\printglossary
Test dummy entries: \gls{pqv}, \gls{aeu} and \gls{eii}.
\end{document}
可以通过重新定义 来调整标题\glossarysection
。例如(需要xcolor
包):
\renewcommand{\glossarysection}[2][]{%
\par\noindent
\colorbox{lightgray}{\parbox{\linewidth}{\centering\MakeTextUppercase{#2}}}%
\par
}
标题可以title
通过 的可选参数中的 key来更改\printglossary
。例如:
\printglossary[title={List of Key Terms}]