Biblatex:作者和间接的条目类型

Biblatex:作者和间接的条目类型

我正在尝试以某种方式支持作者姓名的多种书写方式(罗马字、汉字、汉字、假名注音等)。目前尚不支持此功能,而且实验性vform界面从未进入 biblatex。

我想到了一个想法,为作者定义一种新的条目类型,并在书籍中引用这些作者(有些类似于相关书籍)。

以下是的最小版本multiscript.dtx

\DeclareDatamodelEntrytypes{person}
\DeclareDatamodelFields[type=field,datatype=literal]{
  kanji,
  furi,
}
\DeclareDatamodelFields[type=list,datatype=name]{
   romaji,
}
\DeclareDatamodelEntryfields[person]{
   kanji,
   furi,
   romaji,
}

还有一点mwe.bib

@person{n1,
   kanji = {kanji},
  furi  = {furi},
  romaji = "First Second",
}
@book{b1,
  author = {n1},
  title  = {A great book},
}

有了这些,就可以mwe.tex编译以下内容:

\documentclass[english]{article}
\usepackage{csquotes}
\usepackage[datamodel=multiscript,backend=biber]{biblatex}
\usepackage{hyperref}
\addbibresource{\jobname.bib}

\newbibmacro*{romaji}{%
  \printnames{romaji}%
}
\newbibmacro*{kanji}{%
  [\printfield{kanji}]}
\newbibmacro*{furi}{%
  (\printfield{furi})}

\DeclareBibliographyDriver{person}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{romaji}%
  \addspace
  \usebibmacro{furi}%
  \addspace
  \usebibmacro{kanji}%
  \addspace
  \usebibmacro{finentry}}
\begin{document}
\nocite{*}
The author First Second \cite{n1} wrote book \cite{b1}.

\printbibliography
\end{document}

现在,我想要实现的是,当打印这本书时,对姓氏进行循环(这只是指向其他条目的链接),然后使用

\entrydata{<lastname>}{%
  \printnames{romaji} ....

以便使用链接的条目来打印名称。

我试过

\renewcommand\mkbibnamefamily[1]{%
  \message{[mkbibnamefamily] key = #1 ^^J}
  \entrydata{#1}{%
     \printnames{romaji} (\printfield{kanji}, \printfield{furi})}}

但那不起作用,没有显示姓氏,也没有显示任何字段。此外,该函数还可用于列出对姓名的引用(\cite{n1},这在当前上下文中也很有用)。

对于如何实现这种间接性有什么建议吗?

谢谢

诺伯特

答案1

当参数不是对另一个条目的引用时,您需要停止递归,\mkbibnamefamily否则调用将没有任何用处:\printnames\entrydata

\renewcommand\mkbibnamefamily[1]{%
  \message{[mkbibnamefamily] key = #1 ^^J}%
  \ifentryinbib{#1}%
    {\entrydata{#1}{%
       \printnames{romaji} (\printfield{kanji}, \printfield{furi})}}
    {#1}}

相关内容