我想在super
latex 包的词汇表样式中添加分组标题glossaries
,即类似于listgroup
样式但格式为 的东西super
。 的问题listgroup
是它增加了太多的垂直间距,并且描述不对齐。 我也试过了,alttreegroup
但我对垂直间距并不完全满意,我不喜欢必须手动更改水平间距glssetwidest
。 我知道这篇文章自定义词汇表组标题,但不幸的是,newglossarystyle
那里的定义并不完全符合我的要求。那么,我怎样才能获得“ supergroup
”词汇表样式?以下是可以使用的 MWE:
\documentclass{report}
\usepackage{setspace}
\usepackage[nopostdot,nonumberlist,acronyms,section]{glossaries}
\setglossarystyle{super}
%\setglossarystyle{listgroup}
%\setglossarystyle{alttreegroup}
%\glssetwidest{00000}
\newglossary[slg]{symbol}{sot}{stn}{Symbols}
\makeglossaries
\newglossaryentry{area}{
type=symbol,
name={\ensuremath{S}},
description={reference area},
sort={aS}
}
\newglossaryentry{span}{
type=symbol,
name={\ensuremath{b}},
description={wing span},
sort={ab}
}
\newglossaryentry{dynp}{
type=symbol,
name={\ensuremath{q_\infty}},
description={dynamic pressure},
sort={aq}
}
\newglossaryentry{aoa}{
type=symbol,
name={\ensuremath{\alpha}},
description={angle of attack},
sort={ga}
}
\newacronym
[sort={a}]
{bcr}{BCR}{Block Compressed Row}
\newacronym
[sort={a}]
{cad}{CAD}{Computer-Aided Design}
\newcommand*{\Agroupname}{Alphanumeric}
\newcommand*{\Ggroupname}{Greek letters}
\begin{document}
\onehalfspacing
\section*{List of Symbols and Acronyms}
\glsaddall
\printglossary[type=symbol]
\renewcommand*{\glsgroupheading}[1]{}%
\printglossary[type=acronym]
\end{document}
顺便问一下,除了重新定义\Agroupname
和之外,有没有更好的方法来重命名组\Ggroupname}
?
答案1
我认为对于这种事情,你最好使用子条目, 像这样:
\documentclass{report}
\usepackage{setspace}
\usepackage[nopostdot,nonumberlist,acronyms,section]{glossaries}
\newglossarystyle{supergroup}{%
\setglossarystyle{super}%
\renewcommand*{\glsgroupskip}{}%
\renewcommand{\glossentry}[2]{%
\tabularnewline
\multicolumn{2}{c}{%
\bfseries\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}}%
}%
\tabularnewline
\tabularnewline
}%
\renewcommand{\subglossentry}[3]{%
\glssubentryitem{##2}%
\glstarget{##2}{\glossentryname{##2}}
&
\glossentrydesc{##2}\glspostdescription\space
##3\tabularnewline
}%
}
\newglossary[slg]{symbol}{sot}{stn}{Symbols}
\makeglossaries
\newglossaryentry{alpha}{
type=symbol,
name={Alphanumeric},
description={}}
\newglossaryentry{greek}{
type=symbol,
name={Greek letters},
description={}}
\newglossaryentry{area}{
type=symbol,
name={\ensuremath{S}},
description={reference area},
sort={S},
parent=alpha
}
\newglossaryentry{span}{
type=symbol,
name={\ensuremath{b}},
sort={b},
description={wing span},
parent=alpha
}
\newglossaryentry{dynp}{
type=symbol,
name={\ensuremath{q_\infty}},
description={dynamic pressure},
sort={q},
parent=alpha
}
\newglossaryentry{aoa}{
type=symbol,
name={\ensuremath{\alpha}},
description={angle of attack},
sort={a},
parent=greek
}
\newacronym
[sort={a}]
{bcr}{BCR}{Block Compressed Row}
\newacronym
[sort={a}]
{cad}{CAD}{Computer-Aided Design}
\begin{document}
\onehalfspacing
\section*{List of Symbols and Acronyms}
\glsaddall
\printglossary[type=symbol,style=supergroup]
\printglossary[type=acronym]
\end{document}
得出的结果为:
编辑:
可以通过修改命令中的列对齐来更改父条目的对齐方式\multicolumn
。例如,替换
\multicolumn{2}{c}
和
\multicolumn{2}{l}
父条目上方和下方的垂直间距有点问题。此间距由\tabularnewline
定义中的第一个和最后一个引入\glossentry
:
\renewcommand{\glossentry}[2]{%
\tabularnewline
\multicolumn{2}{c}{%
\bfseries\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}}%
}%
\tabularnewline
\tabularnewline
}%
不幸的是,您不能简单地删除第一个\tabularnewline
,否则会出错! Misplaced \omit
。行首插入了一些内容,干扰了\multicolumn
。我能想到的最简单的解决方案是插入一个额外的未使用的列,如下所示:
\newglossarystyle{supergroup}{%
\renewenvironment{theglossary}%
{\tablehead{}\tabletail{}%
\begin{supertabular}{@{}l@{}lp{\glsdescwidth}}}%
{\end{supertabular}}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupskip}{}%
\renewcommand*{\glossentry}[2]{%
&\multicolumn{2}{@{}l}{%
\bfseries\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}}%
}%
\tabularnewline
}%
\renewcommand{\subglossentry}[3]{%
&\glssubentryitem{##2}%
\glstarget{##2}{\glossentryname{##2}}
&
\glossentrydesc{##2}\glspostdescription\space
##3%
\tabularnewline
}%
}
符号列表现在如下所示: