对于我的论文,我要求文中引用的所有我自己的文章都包含在一般参考文献部分中,而我自己的所有文章都包含在额外参考文献部分中。我正在使用 biblatex。为了将我的所有论文收集到额外部分中,我结合使用了关键字过滤和\nocite{*}
。为了防止\nocite{*}
传播到一般参考文献,我使用了“refsection”。除了标签不同步之外,这种方法非常完美。我如何同步标签?实现我必须实现的目标的正确方法是什么?
以下代码/图片说明了这个问题:
\documentclass{scrartcl}
\begin{filecontents}{testbib.bib}
@Article{MyArticleA,
Title = {Article A},
Author = {Me},
Journal = {Nature},
Year = {2015},
Number = {13},
Pages = {156},
}
@Article{MyArticleB,
Title = {Article B},
Author = {Me},
Journal = {Nature},
Year = {2015},
Number = {14},
Pages = {228},
}
@Article{MyArticleC,
Title = {Article C},
Author = {Me},
Journal = {Nature},
Year = {2015},
Number = {15},
Pages = {111},
}
\end{filecontents}
\usepackage[style=alphabetic]{biblatex}
\bibliography{testbib}
\begin{document}
\noindent Citation of Article B: \cite{MyArticleB}; Citation of Article C: \cite{MyArticleC}
\printbibliography
\begin{refsection}
\nocite{*}
\printbibliography[title={My Publications}]
\end{refsection}
\end{document}
答案1
由于refsection
s 完全独立且彼此分离,因此没有简单的方法让两个不同的refsection
s 之间的标签对齐。有时使用refsegments
(它们没有分开)可以帮助解决问题。但在当前情况下,refsegment
s 不会达到我们想要的效果。
为了保留\nocite{*}
,我们需要能够区分真正(即明显)添加的作品\cite
和仅通过 添加的作品\nocite
。一个简单的解决方案在如何将参考书目分为“引用的作品”和“未引用的作品”?
\DeclareBibliographyCategory{cited}
\AtEveryCitekey{\addtocategory{cited}{\thefield{entrykey}}}
在你的 MWE 中这已经足够了,但也许我们还需要一种方法来过滤你的出版物。你可以从中得到启发biblatex:动态过滤参考文献中特定作者的出版物,biblatex:在参考书目中分离特定作者的出版物,如何仅为特定作者打印参考书目?。此处的解决方案基于fullhash
Biber 的计算,它可以在 Biber 允许的范围内唯一地识别名称
\defbibcheck{mywork}{%
\iffieldequalstr{fullhash}{e06f6e5a8c1d5204dea326aa5f4f8d17}
{}
{\skipentry}
}
如果您使用不同格式/版本的名字,例如“A. Uthor”、“Anne Uthor”和“Anne K. Uthor”,则必须考虑所有这些。您可以namehash
在文件中找到为某个名字生成的文件.bbl
。例如
\defbibcheck{mywork}{%
\ifboolexpr{test {\iffieldequalstr{fullhash}{e06f6e5a8c1d5204dea326aa5f4f8d17}} or test {\iffieldequalstr{fullhash}{fb328aaf7bc297844ac66ad9e0844e1b}}}
{}
{\skipentry}
}
将会把“Anne Uthor”和“Anne K. Uthor”归类为您的出版物。
现在“正常”的书目是
\printbibliography[category=cited]
您的出版物清单是
\nocite{*}
\printbibliography[title={My Publications},check=mywork]
当然,\nocite{*}
文档中的实际位置并不重要。
平均能量损失
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{MyArticleA,
Title = {Article A},
Author = {Anne Uthor},
Journal = {Nature},
Year = {2015},
Number = {13},
Pages = {156},
}
@Article{MyArticleB,
Title = {Article B},
Author = {Anne Uthor},
Journal = {Nature},
Year = {2015},
Number = {14},
Pages = {228},
}
@Article{MyArticleC,
Title = {Article C},
Author = {Anne Uthor},
Journal = {Nature},
Year = {2015},
Number = {15},
Pages = {111},
}
@Article{MyArticleD,
Title = {Article D},
Author = {Willard Riter},
Journal = {Nature},
Year = {2015},
Number = {16},
Pages = {112-115},
}
@Article{MyArticleE,
Title = {Article E},
Author = {Willard Riter},
Journal = {Nature},
Year = {2013},
Number = {17},
Pages = {112-115},
}
\end{filecontents}
\usepackage[style=alphabetic]{biblatex}
\bibliography{\jobname}
\DeclareBibliographyCategory{cited}
\AtEveryCitekey{\addtocategory{cited}{\thefield{entrykey}}}
\defbibcheck{mywork}{%
\iffieldequalstr{fullhash}{e06f6e5a8c1d5204dea326aa5f4f8d17}
{}
{\skipentry}
}
\begin{document}
\noindent Citation of Article B: \cite{MyArticleB}; Citation of Article C: \cite{MyArticleC} and \cite{MyArticleE}
\printbibliography[category=cited]
\nocite{*}
\printbibliography[title={My Publications},check=mywork]
\end{document}
尽管MyArticleD
它在.bib
文件中,但它并没有出现在任何一个列表中,因为它既不是您的(即 Anne Uthor)的出版物,也不是所引用的作品之一。