跨参考文献同步书目标签

跨参考文献同步书目标签

对于我的论文,我要求文中引用的所有我自己的文章都包含在一般参考文献部分中,而我自己的所有文章都包含在额外参考文献部分中。我正在使用 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

由于refsections 完全独立且彼此分离,因此没有简单的方法让两个不同的refsections 之间的标签对齐。有时使用refsegments(它们没有分开)可以帮助解决问题。但在当前情况下,refsegments 不会达到我们想要的效果。

为了保留\nocite{*},我们需要能够区分真正(即明显)添加的作品\cite和仅通过 添加的作品\nocite。一个简单的解决方案在如何将参考书目分为“引用的作品”和“未引用的作品”?

\DeclareBibliographyCategory{cited}
\AtEveryCitekey{\addtocategory{cited}{\thefield{entrykey}}}

在你的 MWE 中这已经足够了,但也许我们还需要一种方法来过滤你的出版物。你可以从中得到启发biblatex:动态过滤参考文献中特定作者的出版物biblatex:在参考书目中分离特定作者的出版物如何仅为特定作者打印参考书目?。此处的解决方案基于fullhashBiber 的计算,它可以在 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)的出版物,也不是所引用的作品之一。

相关内容