使用词汇表包时,我遇到了以下问题。为了解释这一点,请考虑以下(最小)示例:
\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]{}{}{} 添加到序言中