对于我正在撰写的论文,我必须参考许多台湾作家。由于中文姓氏的列表非常有限,我经常会遇到姓氏相同(但名字不同)的不同作者在同一年发表文章/书籍。
我已尝试使用 biblatex 的几种“uniquename”选项,但都没有达到预期的效果。
起初我尝试过:
uniquename=false
这导致了以下内联引用:
(Chu 1994a,第 1 页)和(Chu 1994b,第 4 页)
不同的作者被指定为“Chu 1994a”和“Chu 1994b”等等。但我更希望 a、b、c 区分仅在同一作者“内部”使用,否则可能会被误解为我引用了同一作者的两部作品。
然后我用:
uniquename=minfull
结果是:
(T.-t. Chu 1994,第 1 页)和(T.-e. Chu 1994,第 4 页)。
这样虽然解决了“a、b、c”的问题,但是由于大部分台湾作家的名字中都有连字符,而 biblatex 采用名字首字母的方式,导致文中出现很多“Y.-h.”、“Y.-c.”、“W.-w.”,我觉得不太美观。
我希望 biblatex 使用正常的作者年份按姓氏引用,只要没有歧义(我的例子是吴)。但如果有歧义,我希望它拼出完整的名字,而不仅仅是首字母。在最好的情况下,我甚至希望它引用“姓氏,名字年份”,即:
(Chu,Test-test 1994)和(Chu,Trial-error 1994)
有没有办法做到这一点?
这是我的 MWE:
\begin{filecontents}{uniquename.bib}
@article{chu1994one,
author = {Chu, Test-test},
title = {Title1},
journaltitle = {Journal 1},
year = {1994},
volume = {22},
issue = {5},
pages = {1--2}
}
@article{chu1994two,
author = {Chu, Trial-error},
title = {Title2},
journaltitle = {Journal 2},
year = {1994},
volume = {22},
issue = {5},
pages = {3--4}
}
@article{wu1994one,
author = {Wu, Test-name},
title = {Title3},
journaltitle = {Journal 3},
year = {1994},
volume = {22},
issue = {5},
pages = {5--6}
}
\end{filecontents}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[style=authoryear-icomp, uniquename=minfull, bibstyle=authoryear, autocite=inline, backend=biber]
{biblatex}
\addbibresource{uniquename.bib}
\begin{document}
Some text with a citation \autocite[1]{chu1994one}, and some further text with another citation \autocite[4]{chu1994two}. Some more text with a third citation \autocite[5]{wu1994one}.
\printbibliography
\end{document}
答案1
使用
\DeclareNameFormat{labelname}{%
\ifnumequal{\value{uniquename}}{0}
{\usebibmacro{name:family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
\usebibmacro{name:andothers}}
连同uniquename=full
,allfull
或者minfull
。
通常情况下,即使使用full
-likeuniquename
设置biblatex
,当首字母不明确时也只会提供全名。使用上述设置,只要姓氏不够用,我们就会立即获得名字。
我们得到姓、名格式,因为我们使用name:family-given
;第一 姓(默认)我们将使用name:given-family
。