我正在使用 glossaries-extra 和 bib2gls。我正在寻找一种方法来将我的参考书目引用添加到一些词汇表条目中。我已经在交叉引用词汇表条目,因此密钥see
已经使用。
我发现指引在常规词汇表包中添加引文,其中指出:
使用 glossaries-extra 包可以获得一种更简单的方法。
我广泛搜索了 glossaries-extra 文档。但是,我找不到任何关于这种更简单的方法的提及。如果可能的话,我希望找到一个不需要定义自定义样式的解决方案。
此外,我希望引用(保存在条目的自定义字段中)在第一次使用时出现
\gls
。如果可能的话,这应该独立于(缩写)样式工作。
总结:一个简单的解决方案是什么,使用 glossaries-extra 和 bib2gls 来为词汇表条目及其首次使用添加引用。
答案1
我想出了以下解决方案,\glsdefpostlink
结合使用 和
\glsxtrifwasfirstuse
为文本中第一次使用添加引文。要将引文添加到词汇表中显示的描述中,我使用了\glsdefpostdesc
。这两者都将更改应用于一个特定类别。参考书目的参考存储在 user1 字段中。
然而,在我的示例中,我使用了 bib2gls,即使没有 bib2gls 也可以完美运行。
梅威瑟:
\documentclass{article}
\usepackage{hyperref}
\usepackage[backend=biber, style=numeric]{biblatex}
\usepackage[acronym, abbreviations, record]{glossaries-extra}
\addbibresource{main.bib}
\GlsXtrLoadResources[src={test-gls}]
% Customize glossary style to cite on first use for c-code category
\glsdefpostlink{c-code}{%
\glsxtrifwasfirstuse{% true case
\glsxtrifhasfield{useri}{\glslabel}{\space%
% \glscurrentfieldvalue needs to be expanded
% before being passed to \cite.
(See \expandafter\cite\expandafter{\glscurrentfieldvalue})}%
{}% false glsxtrifhasfield
}% end true glsxtrifwasfirstuse
{}%{<false>} glsxtrifwasfirstuse
} % end glsdefpostlink
% Customize glossary display style to include citation if present
\glsdefpostdesc{c-code}{%
\glsxtrifhasfield{useri}{\glscurrententrylabel}{\space%
% \glscurrentfieldvalue needs to be expanded
% before being passed to \cite.
(See \expandafter\cite\expandafter{\glscurrentfieldvalue})}%
{}% false glsxtrifhasfield
}% end glsdefpostdesc
\begin{document}
First use: \gls{sample}.
Second use \gls{sample}.
Test without useri: \gls{no-cite}.\\
\printunsrtglossary
\printbibliography
\end{document}
词汇表 test-gls.bib:
@entry{sample,
name = {Something},
description = {No description},
category = {c-code},
user1 = {bib-entry}
}
@entry{no-cite,
name = {Something2},
description = {No description},
category = {c-code}
}
@entry{normal,
name = {texttt works},
description = {No description},
}
参考书目 main.bib:
@book{bib-entry,
author = {Some author},
title = {Some title},
}