为了创建我的词汇表,我混合使用了“正常”条目和自定义双重条目,从而创建了缩写和正常条目。
我的问题:词汇表中的每个条目(自定义和正常)都将词汇表本身显示为第一个位置。
我怎样才能删除该位置(见图)?
第 1 页的词汇表:
梅威瑟:
% Document
% ====================
\documentclass[11pt, a4paper, oneside, titlepage]{memoir}
%% Glossary
\usepackage[hidelinks]{hyperref}
\usepackage{xparse}
\DeclareDocumentCommand{\newdualentry}{ O{} O{} m m m m } {
\newglossaryentry{gls-#3}{name={#5},text={#5\glsadd{#3}},
description={#6},#1
}
\makeglossaries
\newacronym[see={[Glossary:]{gls-#3}},#2]{#3}{#4} {#5\glsadd{gls-#3}}
}
\usepackage[nomain,acronym,toc]{glossaries}
\glsenablehyper
\makeglossaries
\newglossaryentry{gradle}
{
name={Gradle},
description={Groovy basiertes Build system.},
first={Gradle}
}
\newdualentry{adv} % label
{ADV} % abbreviation
{Algorithm \& Data Structure Visualizer} % long form
{Produkttitel der vorliegenden Bachelorarbeit} % description
\begin{document}
% Glossary
% ====================
\printglossary[title=Glossar und Abkürzungsverzeichnis]
\glsaddall
\chapter{Test}
\section{One}
Lorem \gls{gradle} dolor sit amet.
\chapter{Test2}
\section{TWO}
Lorem \gls{gradle} dolor \gls{adv} amet.
\end{document}
ps 我的问题类似于这个问题但那里提供的解决方案对我没有帮助
答案1
的定义\newdualentry
有误。首先,它包括\makeglossaries
,它只应使用一次,并且应放在所有定义之前。\makeglossaries
在序言中,第一个 之前已经有了\newglossaryentry
,这是正确的,也是它应该出现的唯一位置。
该首字母缩略词的长形式包括\glsadd
:
\newacronym[see={[Glossary:]{gls-#3}},#2]{#3}{#4}{#5\glsadd{gls-#3}}
使用默认的首字母缩略词样式,长格式将被复制到字段description
,这意味着\glsadd{gls-#3}
最终会出现在词汇表中,并在词汇表中对该页面进行索引。
此双重输入命令似乎会产生不必要的重复。执行如下操作会更简单、更紧凑:
\documentclass[11pt, a4paper, oneside, titlepage]{memoir}
\usepackage[hidelinks]{hyperref}
\usepackage[nomain,acronym,toc]{glossaries}
\glsenablehyper
\makeglossaries
\setacronymstyle{long-short-desc}
\newglossaryentry{gradle}
{
name={Gradle},
description={Groovy basiertes Build system},
first={Gradle}
}
\newacronym
[description={Produkttitel der vorliegenden Bachelorarbeit}]
{adv}% label
{ADV}% abbreviation
{Algorithm \& Data Structure Visualizer} % long form
\begin{document}
% Glossary
% ====================
\printglossary[title=Glossar und Abkürzungsverzeichnis]
\chapter{Test}
\section{One}
Lorem \gls{gradle} dolor sit amet.
\chapter{Test2}
\section{TWO}
Lorem \gls{gradle} dolor \gls{adv} amet.
\end{document}
词汇表现在如下所示:
如果您确实想要双重条目,那么您需要\glsadd
从描述中删除:
\documentclass[11pt, a4paper, oneside, titlepage]{memoir}
\usepackage{xparse}
\usepackage[ngerman]{babel}
\usepackage[hidelinks]{hyperref}
\usepackage[nomain,acronym,toc]{glossaries}
\glsenablehyper
\makeglossaries
\DeclareDocumentCommand{\newdualentry}{ O{} O{} m m m m } {%
\newglossaryentry{gls-#3}{name={#5},text={#5\glsadd{#3}},
description={#6},#1
}%
\newacronym[see={gls-#3},description={#5},#2]{#3}{#4}{#5\glsadd{gls-#3}}%
}
\newglossaryentry{gradle}
{
name={Gradle},
description={Groovy basiertes Build system},
first={Gradle}
}
\newdualentry
{adv}% label
{ADV}% abbreviation
{Algorithm \& Data Structure Visualizer} % long form
{Produkttitel der vorliegenden Bachelorarbeit} % description
\begin{document}
% Glossary
% ====================
\printglossary[title=Glossar und Abkürzungsverzeichnis]
\chapter{Test}
\section{One}
Lorem \gls{gradle} dolor sit amet.
\chapter{Test2}
\section{TWO}
Lorem \gls{gradle} dolor \gls{adv} amet.
\end{document}
交叉引用标签似乎有点奇怪词汇表:在词汇表中,所以我省略了它,这意味着标签是从语言敏感中获得的\seename
。
这glossaries-extra
扩展包提供了更大的灵活性,还提供了额外的调试设置,该设置提供了可视化标记以显示索引发生的位置。 上面的示例可以调整为使用glossaries-extra
。 我已经删除了description={#5}
定义中的设置\newdualentry
,这意味着\glsadd{gls-#3}
长格式末尾的代码也将再次出现在词汇表中。 使用dbug=showwrgloss
,此索引由点显示 · 突出显示如下:
重新添加description={#5}
定义:
\DeclareDocumentCommand{\newdualentry}{ O{} O{} m m m m } {%
\newglossaryentry{gls-#3}{name={#5},text={#5\glsadd{#3}},
description={#6},#1
}%
\newacronym[see={gls-#3},description={#5},#2]{#3}{#4}{#5\glsadd{gls-#3}}%
}
并且重新构建后,主文档文本中应该只会显示 · 标记。(请记住debug=showwrgloss
在完成调试后将其删除。)
这是使用bib2gls
而不是makeindex
/ xindy
。条目现在按.bib
格式定义。例如entries.bib
:
% Encoding: UTF-8
@dualabbreviationentry{adv,
short={ADV},
long={Algorithm \& Data Structure Visualizer},
description={Produkttitel der vorliegenden Bachelorarbeit}
}
@entry{gradle,
name={Gradle},
description={Groovy basiertes Build system}
}
(请注意,这里没有尴尬\glsadd
,这就是前面例子中造成干扰的原因。)
文档现在如下所示:
\documentclass[11pt, a4paper, oneside, titlepage]{memoir}
\usepackage[ngerman]{babel}
\usepackage[hidelinks]{hyperref}
\usepackage[record% using bib2gls
]{glossaries-extra}
\setabbreviationstyle{long-short}% glossaries-extra.sty
\renewcommand{\glsxtrpostdescabbreviation}{%
\ifglsentryexists{dual.\glscurrententrylabel}%
{, \glsseeformat{dual.\glscurrententrylabel}{}}{}%
}
\GlsXtrLoadResources[
src={entries}, % data in entries.bib
combine-dual-locations=dual
]
\begin{document}
% Glossary
% ====================
\printunsrtglossary % glossaries-extra.sty and bib2gls
[title=Glossar und Abkürzungsverzeichnis]
\chapter{Test}
\section{One}
Lorem \gls{gradle} dolor sit amet.
\chapter{Test2}
\section{TWO}
Lorem \gls{gradle} dolor \gls{adv} amet.
\end{document}
现在文档构建如下(假设文档名为myDoc.tex
):
pdflatex myDoc
bib2gls myDoc
pdflatex myDoc
如果您希望字母组之间有视觉分离(无论是垂直分离还是使用...group
样式),那么您需要--group
(或-g
)开关:
pdflatex myDoc
bib2gls -g myDoc
pdflatex myDoc
词汇表现在如下所示:
该combine-dual-locations=dual
选项将位置列表从 ADV 缩写转移到算法 \& 数据结构可视化器条目。