CJK 书目问题,Biblatex-Chicago 作者日期样式

CJK 书目问题,Biblatex-Chicago 作者日期样式

给出的解决方案这个问题关于如何使用 选项引用东亚语言项目biblatex-chicago的方法非常好。但是,当使用(括号引用)notes而不是(=脚注中的参考文献,无论是缩写还是完整长度)时,它不起作用。问题在于 如何在具有相同姓氏、名字和 CJK 脚本名称形式的作者之间消除歧义。什么notesauthor-datebiblatex-chicagobiblatex-chicago消除歧义的方法是将名字的首字母添加到姓氏前面,将 CJK 脚本形式的第一个字符放在名字后面。理想情况下,需要的是消除歧义,如果只有姓氏相同,则打印{姓氏} {名字} {日期}或者,如果姓氏和名字相同,但不是 CJK 脚本格式的姓名,则打印{姓氏} {名字} {中日韩文字体姓名} {日期}

MWE 对上述问题的解决方案包括:

\documentclass[utf8,12pt,a4paper,oneside]{article}
\usepackage{setspace}
\usepackage{xltxtra}
\usepackage[fallback]{xeCJK}
\usepackage{xunicode-addon}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\newcommand{\mainfont}[0]{Linux Libertine O}
\setmainfont[Ligatures={Required,Contextual,Common,TeX},Contextuals={Alternate},Numbers={OldStyle}]{\mainfont}
\newcommand{\mainfontCJK}[0]{HanaMinA}\setCJKmainfont[Scale=0.9]{\mainfontCJK}
\setCJKfallbackfamilyfont{\CJKrmdefault}[Scale=0.9]
{NanumMyeongjo}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt
\usepackage[bibencoding=utf8,idemtracker=constrict,loccittracker=constrict,compresspages,longcrossref=false,booklongxref=true,authordate,cmsdate=both,strict,isbn=false,backend=biber,hyperref=false,mincrossrefs=2]{biblatex-chicago}
%Enabling CJK names (http://tex.stackexchange.com/questions/320693/cjk-bibliography-problem-biblatex-chicago/320738#320738 ):
\forcsvlist{\listadd\nameaffixlist}{Junior,Senior}
\newcommand{\ifnameaffix}[1]{%
    \ifboolexpr{ test {\ifrmnum{#1}} or test {\xifinlist{#1}{\nameaffixlist}} }}
% Based on definitions from biblatex.def
\newbibmacro*{name:cjk}[3]{%
    \usebibmacro{name:delim}{#2#3#1}%
    \usebibmacro{name:hook}{#2#3#1}%
    \mkbibnamefamily{#1}%
    \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}}%
    \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnamesuffix{#3}}}
\DeclareNameFormat{given-family}{%
  \ifboolexpr{ test {\ifdefvoid{\namepartsuffix}} or test {\ifnameaffix{\namepartsuffix}} }
    {\ifgiveninits
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiveni}
           {\namepartprefix}
           {\namepartsuffix}}
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiven}
           {\namepartprefix}
           {\namepartsuffix}}}
    {\usebibmacro{name:cjk}{\namepartfamily}{\namepartgiven}{\namepartsuffix}}%
  \usebibmacro{name:andothers}}
\DeclareNameFormat{family-given}{%
  \ifboolexpr{ test {\ifdefvoid{\namepartsuffix}} or test {\ifnameaffix{\namepartsuffix}} }
    {\ifgiveninits
        {\usebibmacro{name:family-given}
           {\namepartfamily}
           {\namepartgiveni}
           {\namepartprefix}
           {\namepartsuffix}}
        {\usebibmacro{name:family-given}
           {\namepartfamily}
           {\namepartgiven}
           {\namepartprefix}
           {\namepartsuffix}}}
    {\usebibmacro{name:cjk}{\namepartfamily}{\namepartgiven}{\namepartsuffix}}%
  \usebibmacro{name:andothers}}
\DeclareNameFormat{family-given/given-family}{%
  \ifboolexpr{ test {\ifdefvoid{\namepartsuffix}} or test {\ifnameaffix{\namepartsuffix}} }
    {\ifnumequal{\value{listcount}}{1}
        {\ifgiveninits
           {\usebibmacro{name:family-given}
             {\namepartfamily}
             {\namepartgiveni}
             {\namepartprefix}
             {\namepartsuffix}}
          {\usebibmacro{name:family-given}
             {\namepartfamily}
             {\namepartgiven}
             {\namepartprefix}
             {\namepartsuffix}}
         \ifboolexpe{%
                     test {\ifdefvoid\namepartgiven}
                     and
                     test {\ifdefvoid\namepartprefix}}
           {}
           {\usebibmacro{name:revsdelim}}}
        {\ifgiveninits
          {\usebibmacro{name:given-family}
             {\namepartfamily}
             {\namepartgiveni}
             {\namepartprefix}
             {\namepartsuffix}}
          {\usebibmacro{name:given-family}
             {\namepartfamily}
             {\namepartgiven}
             {\namepartprefix}
             {\namepartsuffix}}}}
    {\usebibmacro{name:cjk}{\namepartfamily}{\namepartgiven}{\namepartsuffix}}%
  \usebibmacro{name:andothers}}
% Based on definitions from biblatex-chicago cbx    
\DeclareFieldFormat[book]{title}{%
  \mkbibemph{#1}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}}
\DeclareFieldFormat{booktitle}{%
  \mkbibemph{#1}%
  \iffieldundef{booktitleaddon}{}{\nopunct}}
\DeclareFieldFormat{maintitle}{%
  \mkbibemph{#1}%
  \iffieldundef{maintitleaddon}{}{\nopunct}}
\DeclareFieldFormat[article]{title}{%
  \iffieldundef{title}{}{\mkbibquote{#1}}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}}  
%Addition for functionality with inbook and bookinbook etc:
\DeclareFieldFormat[inbook]{title}{%
  \iffieldundef{title}{}{\mkbibquote{#1}}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}}
\DeclareFieldFormat[bookinbook]{title}{%
  \iffieldundef{title}{}{\mkbibquote{#1}}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}}
\DeclareFieldFormat[unpublished]{title}{%
  \iffieldundef{title}{}{\mkbibquote{#1}}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}} 
  \DeclareFieldFormat[thesis]{title}{%
  \iffieldundef{title}{}{\mkbibquote{#1}}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}}
%This makes translation brackets into parentheses:
\DeclareFieldFormat{usere}{\mkbibparens{#1}}
\begin{filecontents}{bibliography.bib}
@book{Book1,
title = {Shuming},
titleaddon = {書名},
author = {Zhang, 章學成, Xuecheng},
location = {Beijing},
publisher = {Zhonghua Shuju},
date = {2017},
}
@book{Book2,
title = {Shuming er},
titleaddon = {書名二},
author = {Zhang, 張學成, Xuecheng},
location = {Shanghai},
publisher = {Shangwu Yinshuguan},
date = {2016},
}
@book{Book3,
title = {Sŏmyŏng},
titleaddon = {書名},
author = {Zhang, 장학성, Haksŏng},
location = {Shanghai},
publisher = {Shangwu Yinshuguan},
date = {2016},
}
\end{filecontents}
\addbibresource{bibliography.bib}
\begin{document}
\parencite{Book1} \parencite{Book2} \parencite{Book3}
\printbibliography
\end{document}

输出图片

韩语条目尤其有趣,因为它只采用了韩语音节的第一个字谜(ㅈ来自장),而这在韩语中从未见过。

注 1:我针对此问题提出了一些问题,参考了较早版本的biblatex这里(回答得非常好)和这里(未回答)。

注 2:链接至HanaMin 字体

答案1

biblatex3.8/Biber 2.8 允许您完全自定义unqiuename功能。请参阅https://github.com/plk/biblatex/issues/623进行技术讨论。93-nameparts.tex对新功能进行了扩展讨论。

其要点是,虽然之前的uniquename信息是基于givenfamily名称部分,但现在可以从任何定义的名称部分生成。因此,我们也可以使用名称的 CJK 部分来消除歧义。

输入和许多技术细节如下芝加哥风格的 CJK 文献引用 #2。但由于 CJK 名称现在明确标记为nametemplates=cjk,因此名称检测不是通过检查 CJK 部分是否定义来进行,而是通过\ifsortingnamekeytemplatename和来进行\ifuniquenametemplatename

代码中有趣的新部分是

\DeclareUniquenameTemplate[cjk]{
  \namepart[base=true]{family}
  \namepart[disambiguation=full]{given}
  \namepart[disambiguation=full]{cjk}
}

\DeclareNamehashTemplate[cjk]{
  \namepart[hashscope=full]{family}
  \namepart[hashscope=full]{given}
  \namepart[hashscope=full]{cjk}
}

定义 CJK 唯一名称和哈希方案,该方案cjk也尊重名称的一部分,并且不会缩写givencjk部分。并且

\newbibmacro{labelname:cjk}{%
  \iffieldequalstr{uniquepart}{base}%
    {\usebibmacro{name:cjk}
       {\namepartfamily}
       {\empty}
       {\empty}}
    {\iffieldequalstr{uniquepart}{given}%
       {\usebibmacro{name:cjk}
          {\namepartfamily}
          {\namepartgiven}
          {\empty}}
       {\usebibmacro{name:cjk}
          {\namepartfamily}
          {\namepartgiven}
          {\namepartcjk}}}}

\DeclareNameFormat{labelname}{%
  \ifuniquenametemplatename{cjk}
    {\usebibmacro{labelname:cjk}}
    {\usebibmacro{labelname:western}}%
  \usebibmacro{name:andothers}}

对于labelname。根据该uniquepart值,宏决定需要打印多少名称。

\documentclass[a4paper]{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\setsansfont{Linux Biolinum O}
\usepackage[fallback]{xeCJK}
\setCJKmainfont{Malgun Gothic}

\usepackage{filecontents}
\begin{filecontents*}{chicago-authordate.dbx}
\ProvidesFile{chicago-authordate.dbx}[2016/07/24 extended name format for biblatex]
\DeclareDatamodelConstant[type=list]{nameparts}{prefix,family,suffix,given,cjk}
\end{filecontents*}

\usepackage[authordate,backend=biber]{biblatex-chicago}

\DeclareSortingNamekeyTemplate[cjk]{
  \keypart{
    \namepart{family}
  }
  \keypart{
    \namepart{given}
  }
  \keypart{
    \namepart{cjk}
  }
}

\DeclareUniquenameTemplate[cjk]{
  \namepart[base=true]{family}
  \namepart[disambiguation=full]{given}
  \namepart[disambiguation=full]{cjk}
}

\DeclareNamehashTemplate[cjk]{
  \namepart[hashscope=full]{family}
  \namepart[hashscope=full]{given}
  \namepart[hashscope=full]{cjk}
}

\newbibmacro*{name:cjk}[3]{%
  \usebibmacro{name:delim}{#2#3#1}%
  \usebibmacro{name:hook}{#2#3#1}%
  \mkbibnamefamily{#1}%
  \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}}%
  \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnamecjk{#3}}}

\newbibmacro{labelname:western}{%
  \ifcase\value{uniquename}%
    \usebibmacro{name:family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \or
    \ifuseprefix
      {\usebibmacro{name:given-family}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefix}
        {\namepartsuffixi}}
      {\usebibmacro{name:given-family}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefixi}
        {\namepartsuffixi}}%
  \or
    \usebibmacro{name:given-family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \fi
  \usebibmacro{name:andothers}}

\newbibmacro{labelname:cjk}{%
  \iffieldequalstr{uniquepart}{base}%
    {\usebibmacro{name:cjk}
       {\namepartfamily}
       {\empty}
       {\empty}}
    {\iffieldequalstr{uniquepart}{given}%
       {\usebibmacro{name:cjk}
          {\namepartfamily}
          {\namepartgiven}
          {\empty}}
       {\usebibmacro{name:cjk}
          {\namepartfamily}
          {\namepartgiven}
          {\namepartcjk}}}}

\DeclareNameFormat{labelname}{%
  \ifuniquenametemplatename{cjk}
    {\usebibmacro{labelname:cjk}}
    {\usebibmacro{labelname:western}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{family-given}{%
  \ifsortingnamekeytemplatename{cjk}
    {\usebibmacro{name:cjk}{\namepartfamily}{\namepartgiven}{\namepartcjk}}
    {\ifgiveninits
        {\usebibmacro{name:family-given}
           {\namepartfamily}
           {\namepartgiveni}
           {\namepartprefix}
           {\namepartsuffix}}
        {\usebibmacro{name:family-given}
           {\namepartfamily}
           {\namepartgiven}
           {\namepartprefix}
           {\namepartsuffix}}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{given-family}{%
  \ifsortingnamekeytemplatename{cjk}
    {\usebibmacro{name:cjk}{\namepartfamily}{\namepartgiven}{\namepartcjk}}
    {\ifgiveninits
       {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
       {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}}%
    \usebibmacro{name:andothers}}

\DeclareNameFormat{family-given/given-family}{%
  \ifsortingnamekeytemplatename{cjk}
    {\usebibmacro{name:cjk}{\namepartfamily}{\namepartgiven}{\namepartcjk}}
    {\ifnumequal{\value{listcount}}{1}
        {\ifgiveninits
           {\usebibmacro{name:family-given}
             {\namepartfamily}
             {\namepartgiveni}
             {\namepartprefix}
             {\namepartsuffix}}
          {\usebibmacro{name:family-given}
             {\namepartfamily}
             {\namepartgiven}
             {\namepartprefix}
             {\namepartsuffix}}
         \ifboolexpe{%
                     test {\ifdefvoid\namepartgiven}
                     and
                     test {\ifdefvoid\namepartprefix}}
           {}
           {\usebibmacro{name:revsdelim}}}
        {\ifgiveninits
          {\usebibmacro{name:given-family}
             {\namepartfamily}
             {\namepartgiveni}
             {\namepartprefix}
             {\namepartsuffix}}
          {\usebibmacro{name:given-family}
             {\namepartfamily}
             {\namepartgiven}
             {\namepartprefix}
             {\namepartsuffix}}}}
  \usebibmacro{name:andothers}}


% Based on definitions from biblatex-chicago cbx    
\DeclareFieldFormat[book]{title}{%
  \mkbibemph{#1}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}}
\DeclareFieldFormat{booktitle}{%
  \mkbibemph{#1}%
  \iffieldundef{booktitleaddon}{}{\nopunct}}
\DeclareFieldFormat{maintitle}{%
  \mkbibemph{#1}%
  \iffieldundef{maintitleaddon}{}{\nopunct}}
\DeclareFieldFormat[article]{title}{%
  \iffieldundef{title}{}{\mkbibquote{#1}}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}}  
%Addition for functionality with inbook and bookinbook etc:
\DeclareFieldFormat[inbook]{title}{%
  \iffieldundef{title}{}{\mkbibquote{#1}}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}}
\DeclareFieldFormat[bookinbook]{title}{%
  \iffieldundef{title}{}{\mkbibquote{#1}}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}}
\DeclareFieldFormat[unpublished]{title}{%
  \iffieldundef{title}{}{\mkbibquote{#1}}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}} 
  \DeclareFieldFormat[thesis]{title}{%
  \iffieldundef{title}{}{\mkbibquote{#1}}%
  \iffieldundef{titleaddon}{\isdot}{\nopunct}}
%This makes translation brackets into parentheses:
\DeclareFieldFormat{usere}{\mkbibparens{#1}}

\begin{filecontents*}{\jobname.bib}
@book{zhaos,
  title={A Nation-State by Construction: Dynamics of Modern Chinese Nationalism},
  author={given=Suisheng, family=Zhao, cjk=趙歲升, nametemplates=cjk},
  isbn={9780804750011},
  year={2011},
  address = {Stanford},
  publisher={Stanford University Press}}
@book{jim,
  title={Lorem},
  author={Smith, Junior, Jim},
  year={2009},
  address = {Stanford},
  publisher={Stanford University Press}}
@article{zhaoj,
 author={given=Jie, family=Zhao, cjk=赵杰, nametemplates=cjk},
  title = {Qingdai Manwen de wenzi tese ji yinyun, yinbian tedian},
  titleaddon = {清代满文的文字特色及音韵、音变特点},
  usere = {Scriptual specificities of Manchu writing in the Qing period
       and characteristics of phonology and sound change},
  shorttitle = {Manwen de wenzi tese},
  journal = {Manzu yanjiu},
  volume = {102},
  number = {1},
  date = {2011},
  pages = {7--12}}
@book{li,
 author={given=Wuwei, family=Li, cjk=李无未, nametemplates=cjk and Brown, Junior, Bob and Doe, III, John},
  publisher = {Shangwu yinshuguan},
  address = {Beijing},
  title = {Riben Hanyu yinyun xue shi},
  titleaddon = {日本汉语音韵学史},
  usere = {History of the study of Chinese phonology in Japan},
  date = {2011}}

@book{Book1,
title = {Shuming},
titleaddon = {書名},
author = {family=Zhang, cjk=章學成, given=Xuecheng, nametemplates=cjk},
location = {Beijing},
publisher = {Zhonghua Shuju},
date = {2017},
}
@book{Book2,
title = {Shuming er},
titleaddon = {書名二},
author = {family=Zhang, cjk=張學成, given=Xuecheng, nametemplates=cjk},
location = {Shanghai},
publisher = {Shangwu Yinshuguan},
date = {2016},
}
@book{Book3,
title = {Sŏmyŏng},
titleaddon = {書名},
author = {family=Zhang, cjk=장학성, given=Haksŏng, nametemplates=cjk},
location = {Shanghai},
publisher = {Shangwu Yinshuguan},
date = {2016},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
\parencite{Book1} \parencite{Book2} \parencite{Book3} \nocite{*}
\printbibliography
\end{document}

Li Wuwei 李无未, Bob Brown Junior, 和 John Doe III。2011. 日本汉语音韵学史(日本汉语音韵学史)。北京:商务印书馆。

相关内容