采用超级词汇表风格的组命名

采用超级词汇表风格的组命名

我想在superlatex 包的词汇表样式中添加分组标题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
  }%
}

符号列表现在如下所示:

符号列表图片

相关内容