背景:我把所有书目条目都放在一个巨大的 .bib 文件中。在我的简历中,我希望有一个部分列出我所有的文章,另一个部分列出我所有的会议演讲。我目前的方法是这样的:我用关键字“own”标记我自己的条目,然后使用 biblatex:
\printbibliography[type=article,keyword=own,heading="Articles"]
\printbibliography[type=inproceedings,keyword=own,heading="Conference Presentations"]
这种方法有两个缺点。首先,我必须标记我的所有条目,但有时我可能会漏掉一些。其次,我必须标记我的所有条目,这又是一个犯错的好机会。
第一个问题可以通过使用 bib2bib 来解决,它允许我通过为字段指定过滤器从大 .bib 文件中提取我自己的文章author
。但是,我想知道是否有更简单的解决方案,只使用 LaTeX 中的工具。 \printbibliography
似乎已经有一些过滤功能,但从阅读手册中我无法弄清楚如何根据字段的值过滤条目。
答案1
您可以使用 regexp 将字段映射到field viakeyword = {own},
中具有给定模式的所有条目,如下所示author
\DelclareSourcemap
PLK 的回答到biblatex:在参考书目中分离特定作者的出版物(还有一个例子文档为每个具有给定标题的条目添加一个关键字,参见§4.5.2)。例如:
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=author,
match=Kant,
final]
\step[fieldset=keywords, fieldvalue=own]
}
}
}
此后,你可以使用\printbibliography[keyword={own}]
在refsection
环境中为了\nocite{*}
打印出所有标有你的关键字(称为 via )的条目,如下图所示Marco Daniel 对同一问题的回答:
\begin{refsection}
\nocite{*}
\printbibliography[keyword=own,title={These are my Works}]
\end{refsection}
这是 MWE
\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=author,
match=Kant,
final]
\step[fieldset=keywords, fieldvalue=own]
}
}
}
\begin{document}
\null\vfill
\thispagestyle{empty}
Hi, I'm Kant.
\autocites{knuth:ct,knuth:ct:a,companion}
\begin{refsection}
\nocite{*}
\printbibliography[keyword=own,title={These are my Works}]
\end{refsection}
\printbibliography[notkeyword=own,title={These are awesome works by other people I like}]
\end{document}
* 编辑:我已从\regexp
内部match=Kant
删除了它\DeclareSourceMap
,因为不再需要它了。
答案2
我在使用 CITAVI 的 .bib 文件当前的 EXPORT 函数时遇到了与 tmalsburg 类似的问题。
问题是 CITAVE 通常使用“;”作为分隔符,而 LATEX 使用“,”
所以如果你从 CITAVI 导出,.bib 中的关键字行如下所示:
keywords = {Result CV;wearable},
但你需要的是:
keywords = {Result CV,wearable},
因此,通过直接导出结果,您可以在乳胶中选择关键字“Result CV;wearable”,然后它会打印相应的参考资料......所以它将其视为一个关键字......
我还没有在 citavi 中找到解决这个问题的方法,但会向他们报告这个问题。
目前我能给出的最佳解决方案是:
在 Citavi 中分配您的关键字
从 Citavi 导出 .bib 文件
使用 notepad++ 打开 .bib 文件,并在替换函数中执行以下操作
找什么:^(.*keywords.*);
用。。。来代替:$1,
重复运行直到出现 0 次。