如何在 ConTeXt 中显示来自 BibTeX 的特定字段?

如何在 ConTeXt 中显示来自 BibTeX 的特定字段?

假设有人提供了参考文献,例如 \cite{historynow1765},我如何让 ConTeXt 显示该参考文献的特定字段,例如标题、出版日期、出版地点、作者全名等?

例如,假设 BibTeX 文件包含以下条目:

@misc{historynow1765,
title={The Stamp Act, 1765: A Spotlight on a Primary Source    by George III},
url={https://www.gilderlehrman.org/history-now/spotlight-primary-source/stamp-act-1765},
journal={History Now},
publisher={The Gilder Institute of American History}
}

类似这样的代码可能会调用标题信息:

\cite[title]{historynow1765}

类似这样的代码可能会调用发布者信息:

\cite[publisher]{historynow1765}

我如何才能从 BibTeX 文件中获取数据,从而获得有关在 ConTeXt 中打印的来源的具体信息?

答案1

基于https://mailman.ntg.nl/pipermail/ntg-context/2018/090903.html我想出了以下解决方案,虽然看似不必要地复杂,但仍然有效。

我们的想法是\cite使用

\startsetups btx:[stylename]:cite:[fieldname]
\btxfield{fieldname}
\stopsetups

这将启用语法\cite[fieldname][refname]

复杂的部分是如何说服 ConTeXt 实际使用这些定义。为此,可以创建一个新样式,例如命名为singlefields。此样式可以基于现有样式,例如apa。按照上面的链接,我做了以下操作:

  • publ-imp-apa.luapubl-imp-apa.mkvi复制到工作目录并重命名为publ-imp-singlefields.luapubl-imp-singlefields.mkvi。注意,这意味着常规\cite和参考文献列表将采用 APA 格式。
  • publ-imp-singlefields.mkvi将所有出现的apa替换为singlefields
  • 添加\startsetups代码(见下文)
  • 在 中publ-imp-singlefields.lua,向条目添加额外字段misc(见下文)

单字段代码:

\startsetups btx:singlefields:cite:publisher
\btxfield{publisher}
\stopsetups

\startsetups btx:singlefields:cite:journal
\btxfield{journal}
\stopsetups

\startsetups btx:singlefields:cite:title
\btxfield{title}
\stopsetups

\startsetups btx:singlefields:cite:url
\btxfield{url}
\stopsetups

杂项条目:

categories.misc = {
    sets = {
        doi  = generic.doi,
    },
    required = {
        -- nothing is really important here
    },
    optional = {
        "author", "withauthor", "translator",
        "title", "subtitle", "file",
        "year", "month",
        "howpublished",
        "doi", "note",
        "publisher", "journal", "url",
    },
}

文档:

\usebtxdataset[ctxfields.bib]
\usebtxdefinitions[singlefields]

\starttext

Only title: \cite[title][historynow1765]

Only journal: \cite[journal][historynow1765]

Only publisher: \cite[publisher][historynow1765]

\subject[title=\bf References]

\placelistofpublications

\stoptext

结果:

在此处输入图片描述

备注:出于某种原因,这种方法也可以直接使用,只需将字段添加到文件.lua,而无需更改文件.mkvi,但是期刊和出版商会以等宽字体打印。除此之外,上述方法的另一个优点是,您还可以使用设置语法更改书目条目的外观\startsetups btx:[stylename]:list:[entrytype]

相关内容