右对齐词汇表第一列

右对齐词汇表第一列

我正在使用包 glossaries 在我的文档中创建词汇表。这种样式super对我来说几乎是可行的,因为它提供了两列:第一列包含词汇表条目名称,第二列包含描述。两列都左对齐。

是否可以右对齐包含词汇表条目名称的第一列?

这就是我想要实现的目标:

这就是我想要的样子

这是我目前的代码:

\documentclass{article}

\usepackage{glossaries}
\newglossaryentry{Example}{name=Example, description=an example}
\newglossaryentry{EX}{name=EX, description=another example}
\setglossarystyle{super}
\makeglossaries

\begin{document}

I use \gls{Example} and \gls{EX} in my text.

\printglossaries
\end{document}

答案1

要使它们右对齐,您需要修改超级词汇表样式。这很简单,但您需要查找原始样式的定义。

来自 glossary-super.sty:

\newglossarystyle{super}{%
  \renewenvironment{theglossary}%
    {\tablehead{}\tabletail{}%
     \begin{supertabular}{lp{\glsdescwidth}}}%
    {\end{supertabular}}%
  \renewcommand*{\glossaryheader}{}%
  \renewcommand*{\glsgroupheading}[1]{}%
  \renewcommand{\glossentry}[2]{%
    \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
    \glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
  }%
  \renewcommand{\subglossentry}[3]{%
     &
     \glssubentryitem{##2}%
     \glstarget{##2}{\strut}\glosentrydesc{##2}\glspostdescription\space
     ##3\tabularnewline
  }%
  \renewcommand*{\glsgroupskip}{%
    \ifglsnogroupskip\else & \tabularnewline\fi}%
}

由于它是一个超级表格环境,您只需将 更改为\begin{supertabular}{lp{\glsdescwidth}}\begin{supertabular}{rp{\glsdescwidth}}根据词汇表用户手册中第 15.2 节中的现有样式示例 20 设置您自己的样式会很有帮助。对于您的情况,这是将以下内容添加到您的序言中:

\newglossarystyle{mysuper}{%
  \setglossarystyle{super}% base style on the list style
  \renewenvironment{theglossary}%
      {\tablehead{}\tabletail{}%
       \begin{supertabular}{rp{\glsdescwidth}}}%
      {\end{supertabular}}%
}

并改为\setglossarystyle{super}\setglossarystyle{mysuper}


您的 MWE 的完整更改将是这样的:

\documentclass{article}
\usepackage{glossaries}
\makeglossaries

\newglossarystyle{mysuper}{%
  \setglossarystyle{super}% base style on the list style
  \renewenvironment{theglossary}%
      {\tablehead{}\tabletail{}%
       \begin{supertabular}{rp{\glsdescwidth}}}%
      {\end{supertabular}}%
}
\setglossarystyle{mysuper}

\newglossaryentry{Example}{name=Example, description=an example}
\newglossaryentry{EX}{name=EX, description=another example}

\begin{document}

I use \gls{Example} and \gls{EX} in my text.

\printglossaries

\end{document}

导致:

mwe 结果


注意:我还将定义条目的位置更改为 after \makeglossaries。 在您的情况下,这似乎无关紧要,但这是手册中推荐的方法。

相关内容