假设有人提供了参考文献,例如 \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.lua
和publ-imp-apa.mkvi
复制到工作目录并重命名为publ-imp-singlefields.lua
和publ-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]
。