引用“私人通信”和类似似乎不属于 .bib 数据库的来源的正确方法是什么。
我正在使用 biber 和 biblatex 与 TL2016
答案1
条目类型misc
可以用于私人通信,并使用字段howpublished="private communication"
。最终,你可以将它们存储在不同的bib
数据库中,然后bib
使用多个命令加载不同的数据库\addbibresource
。
然而,正如 Roey Angel 和 egreg 所指出的,大多数期刊样式都要求将它们放在文本中,而不是引用它们(并将它们包括在参考文献/书目列表中)。在这种情况下,可以定义一个过滤器(或技术上是check
),以从书目中删除个人通信。还可以自定义\autocite
,以便在使用个人通信而不是“常规”引用时做出相应的行为。
\documentclass{article}
\usepackage[style=authoryear,autocite=inline]{biblatex}
\usepackage{xstring}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{test1,
author = "Author, John",
date = "2013-02-03",
howpublished = "personal communication"
}
@misc{test2,
author = "Author, John",
title = "Untitled Manuscript",
date = "2012",
howpublished = "unpublished"
}
@article{test3,
author = "Author, John",
title = "article",
journal = "Journal Name",
year = "2011"}
\end{filecontents}
\addbibresource{\jobname.bib}
\defbibcheck{pc}{
\ifboolexpr{
test { \ifentrytype{misc} }
and
test{ \IfStrEq{\thefield{howpublished}}{personal communication}}
}
{\skipentry}
{}
}
\DeclareAutoCiteCommand{inline}{\mycite}{\cites}
\DeclareCiteCommand{\mycite}
{}
{\ifentrytype{misc}{%
\IfStrEq{\thefield{howpublished}}{personal communication}
{\printnames{labelname} \mkbibparens{personal communication, \printdate}}
{\mkbibparens{\usebibmacro{cite}}}%
}
{\mkbibparens{\usebibmacro{cite}}}%
}
{}
{}
\begin{document}
\autocite{test1} explained why the result in \autocite{test3} is outdated and why one should use those in \autocite{test2}.
\printbibliography[check=pc]
\end{document}
使用biber
的最新版本biblatex
,另一种方法是定义一种用于个人通信的新条目类型。
\documentclass{article}
\usepackage[style=authoryear,autocite=inline]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@personalcommunication{test1,
author = "Author, John",
date = "2013-02-03",
}
@misc{test2,
author = "Author, John",
title = "Untitled Manuscript",
date = "2012",
howpublished = "unpublished"
}
@article{prova,
author = "Author, John",
title = "article",
journal = "Journal Name",
year = "2011"}
\end{filecontents}
\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelEntrytypes{personalcommunication}
\end{filecontents}
\addbibresource{\jobname.bib}
\DeclareAutoCiteCommand{inline}{\mycite}{\cites}
\DeclareCiteCommand{\mycite}
{}
{\ifentrytype{personalcommunication}
{\printnames{labelname} \mkbibparens{personal communication, \printdate}}
{\mkbibparens{\usebibmacro{cite}}}%
}
{}
{}
\begin{document}
\autocite{test1} explained why the result in \autocite{prova} is outdated and why one should use those in \autocite{test2}.
\printbibliography[nottype=personalcommunication]
\end{document}