括号中是词汇表包中缩写词列表中打印的缩写词

括号中是词汇表包中缩写词列表中打印的缩写词

使用词汇表包时,我遇到了以下问题。为了解释这一点,请考虑以下(最小)示例:

\documentclass{article} %or book etc
\usepackage[smallcaps,style={indexgroup}]{glossaries}

\makeglossaries

\newacronym{label1}{abc}{A Test Entry}
\newacronym{label2}{def}{Another Test Entry}
\newacronym{label3}{ghi}{Final Test Entry}

\begin{document}
\glsaddall
\printglossaries
\end{document}

并通过以下方式编译:

pdflatex example.tex
makeglossaries example
pdflatex example.tex

这会导致 pdf 文件中出现如下条目:

abc (abc) 一个测试条目。1
def (def) 另一个测试条目。1
ghi (ghi) 最终测试条目。1

我遇到的问题是打印了 (abc) (def) and (ghi),即用括号括起来的键的两倍。查阅手册后,我发现除了使用单级样式(如 listdotted)外,没有其他直接方法可以抑制这种打印,但这种样式不适合我的需求。有人知道如何解决这个问题吗?

答案1

升级到版本 4.02 并将选项替换smallcaps\setacronymstyle{long-sc-short}。 (我刚刚将 v4.02 上传到 CTAN,因此可能需要几天时间才能进入 TeX 发行版。)

\documentclass{article} %or book etc
\usepackage[style={indexgroup}]{glossaries}

\setacronymstyle{long-sc-short}

\makeglossaries

% If you're not using a font that supports bold smallcaps, switch to
% medium weight smallcaps:

\renewcommand{\acronymfont}[1]{\textsc{\mdseries #1}}

\newacronym{label1}{abc}{A Test Entry}
\newacronym{label2}{def}{Another Test Entry}
\newacronym{label3}{ghi}{Final Test Entry}

\begin{document}
\glsaddall
\printglossaries
\end{document}

生成:

结果图像

答案2

您可以创建一个新的词汇表样式,比如说myindex,基于现有的indexgroup,并使用它。

这是新风格的定义:

\makeatletter
\newglossarystyle{myindex}{%
  \renewenvironment{theglossary}%
    {\setlength{\parindent}{0pt}%
     \setlength{\parskip}{0pt plus 0.3pt}%
     \let\item\@idxitem}%
    {\par}%
  \renewcommand*{\glossaryheader}{}%
  \renewcommand*{\glsgroupheading}[1]{%
    \item\textbf{\glsgetgrouptitle{##1}}\indexspace}%
  \renewcommand*{\glossentry}[2]{%
     \item\glsentryitem{##1}\textbf{\glstarget{##1}{\glossentryname{##1}}}%
     %\ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
     \space \glossentrydesc{##1}\glspostdescription\space ##2%
  }%
  \renewcommand{\subglossentry}[3]{%
    \ifcase##1\relax
      % level 0
      \item
    \or
      % level 1
      \subitem
      \glssubentryitem{##2}%
    \else
      % all other levels
      \subsubitem
    \fi
    \textbf{\glstarget{##2}{\glossentryname{##2}}}%
    %\ifglshassymbol{##2}{\space(\glossentrysymbol{##2})}{}%
    \space\glossentrydesc{##2}\glspostdescription\space ##3%
  }%
  \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}}
\makeatother

然后,而不是以glossaries这种方式加载

\usepackage[smallcaps,style={indexgroup}]{glossaries}

只需使用

\usepackage[smallcaps]{glossaries}

然后发出命令

\setglossarystyle{myindex}

完成 MWE(请注意,我还加载了fontenc粗体+小写字母)

\documentclass{article} %or book etc
\usepackage[smallcaps]{glossaries}
\usepackage[T1]{fontenc}

\makeatletter
\newglossarystyle{myindex}{%
  \renewenvironment{theglossary}%
    {\setlength{\parindent}{0pt}%
     \setlength{\parskip}{0pt plus 0.3pt}%
     \let\item\@idxitem}%
    {\par}%
  \renewcommand*{\glossaryheader}{}%
  \renewcommand*{\glsgroupheading}[1]{%
    \item\textbf{\glsgetgrouptitle{##1}}\indexspace}%
  \renewcommand*{\glossentry}[2]{%
     \item\glsentryitem{##1}\textbf{\glstarget{##1}{\glossentryname{##1}}}%
     %\ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
     \space \glossentrydesc{##1}\glspostdescription\space ##2%
  }%
  \renewcommand{\subglossentry}[3]{%
    \ifcase##1\relax
      % level 0
      \item
    \or
      % level 1
      \subitem
      \glssubentryitem{##2}%
    \else
      % all other levels
      \subsubitem
    \fi
    \textbf{\glstarget{##2}{\glossentryname{##2}}}%
    %\ifglshassymbol{##2}{\space(\glossentrysymbol{##2})}{}%
    \space\glossentrydesc{##2}\glspostdescription\space ##3%
  }%
  \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}}
\makeatother

\setglossarystyle{myindex}


\makeglossaries

\newacronym{label1}{abc}{A Test Entry}
\newacronym{label2}{def}{Another Test Entry}
\newacronym{label3}{ghi}{Final Test Entry}

\begin{document}
\glsaddall
\printglossaries
\end{document} 

输出:

在此处输入图片描述

答案3

另一个选择是将:\renewcommand*{\ifglshassymbol}[3]{}{}{} 添加到序言中

相关内容