带脚注引用的 Bibulous 或 Biblatex

带脚注引用的 Bibulous 或 Biblatex

我的论文有一套相当复杂的引用要求。我的参考文献有多种语言(俄语、日语、中文),其中作者姓名的音译、标题的翻译等需要与原文并列。我需要使用脚注引用,其中第一次使用参考文献时在脚注中显示完整参考文献,而同一页面上的后续使用则显示同上。后续页面的第一次使用将使用较短的参考文献。我还想自定义名称的顺序:

西方——最终参考文献列表中按姓氏、名字的顺序排列;脚注中按名字、姓氏的顺序排列。

东方- 最终参考列表和脚注中的姓氏、名字的顺序。

我在文件中设置了一个额外的字段.bib,指定哪些条目是西方的,哪些条目是东方的(字段名称是oriental)。

verbose-inote里面的样式biblatex可以帮我实现部分功能,但我必须进行修改。我最近发现了 Bibulous,它看起来非常有吸引力,因为它使我能够非常轻松地精确指定我希望事情如何工作。Bibulous 可以用来生成像 提供的脚注引用吗verbose-inote?如果可以,是否可以为脚注引用和最终参考列表指定不同的样式?

虽然我很想看到 Bibulous 的解决方案,但biblatex如果尚不存在解决方案,修改解决方案可能比尝试在 Bibulous 中实现脚注引用更容易。我正在使用 XeLaTeX。名称(作者/编辑)问题是问题所在 - 标题和出版商可以正常工作。示例 .bib 引用如下:

@Book{Sofronov:Grammar,
title = {{Grammar of the Tangut Language, 2 volumes }{\russian Грамматика Тангутского Языка}},
author = {\noopsort{Sofronov}Sofronov, {\russian М.В. Софронов}, M.V.},
publisher = {Scientific Publishing House {\russian Издательство ``наука''}},
address = {Moscow},
year = {1968}
}

@Book{LiFanwen:1997,
editor = {\noopsort{Li}Li, {\chinese 李范文}, Fanwen},
title = {Tangut-Chinese Dictionary {\chinese 夏漢字典}},
publisher = {China Social Science Press {\chinese 中国社会科学出版社}},
address = {Beijing, China},
year = 1997,
oriental = 1
}

我计划使用东方领域来确定名字/姓氏的排序方式。

目前,我将作者的原名放在三元素名称的中间,因此我可以使用 来访问它#7

我在某处读到,我需要将东方领域映射到一个预先存在的字段名称,我在文件顶部执行此操作.tex

\usepackage[backend=biber, style=verbose-inote]{biblatex}
\addbibresource{xixia.bib}
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite]{
      \step[fieldset=oriental, fieldvalue=0]
      \step[fieldsource=oriental]
      \step[fieldset=usera, origfieldval, append]
    }
  }
}

\usepackage{fontspec}
\newfontface\russian{Times New Roman}
\newfontface\chinese{AR PL UMing CN}

不知道接下来该做什么。我一直在尝试添加\DeclareNameFormat类似verbose-inote.cbx下面的内容(此代码不起作用):

\DeclareNameFormat{author-with-orig}{%
  \ifnumcomp{\thefield{usera}}{=}{1}
    {#1%
     \ifblank{#3}{}{\addcomma\space #3 \space #7}}
    {\ifblank{#3}{}{#3\space}%
     #1 \space #7}%
  \ifthenelse{\value{listcount}<\value{liststop}}
    {\addcomma\space}
    {}}

然后修改中的以下两个条目verbose-inote.cbx以引用author-with-orig

\newbibmacro*{cite:full}{%
  \usebibmacro{cite:full:citepages}%
  \printtext[bibhypertarget]{%
    \usedriver
      {\DeclareNameAlias{sortname}{author-with-orig}}
      {\thefield{entrytype}}}%
  \usebibmacro{shorthandintro}}

\newbibmacro*{footcite:full}{%
  \usebibmacro{cite:full:citepages}%
  \printtext[bibhypertarget]{%
    \usedriver
      {\DeclareNameAlias{sortname}{author-with-orig}}
      {\thefield{entrytype}}}%
  \usebibmacro{shorthandintro}}

MWE 如下(为了简单起见,我省略了外语标题、出版商等,因为它们很好用):

\documentclass[a4paper]{report}

\usepackage{fontspec}
\newfontface\russian{Times New Roman}
\newfontface\chinese{AR PL UMing CN}

\usepackage{filecontents}

\begin{filecontents*}{xixia.bib}
@Book{NonOrientalBook,
title = {Non-Oriental Book},
author = {NonOrientalLast, {\russian Имя}, NonOrientalFirst},
publisher = {Non-Oriental Book Publisher},
address = {Moscow},
year = 1968
}

@Book{OrientalBook,
editor = {OrientalLast, {\chinese 名字}, OrientalFirst},
title = {Oriental Book},
publisher = {Oriental Book Publisher},
address = {Beijing},
year = 1997,
oriental = 1
}
\end{filecontents*}

\usepackage[backend=biber, style=verbose-inote]{biblatex}
\addbibresource{xixia.bib}
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite]{
        \step[fieldset=oriental, fieldvalue=0]
        \step[fieldsource=oriental]
        \step[fieldset=usera, origfieldval, append]
    }
  }
}


\begin{document}
A book by a non-oriental author\footcite{NonOrientalBook}.  A document by an oriental author\footcite{OrientalBook}.

\newpage
\printbibliography
\end{document}

脚注应为:

1. NonOrientalFirst NonOrientalLast Имя ... (title, publisher, etc.)
2. OrientalLast OrientalFirst 名字 ...

参考书目应包含:

NonOrientalLast NonOrientalFirst Имя ...
OrientalLast OrientalFirst 名字 ...

答案1

我没能使用我计划使用的东方字段(我不知道如何在\DeclareNameFormat代码中访问此信息),但我设法想出了一个解决方案,即XXXORI在东方作者的姓氏前添加一个代码并使用该xstring包。我还在下面的代码中添加了额外的作者,以测试多位作者的工作方式。

\documentclass[a4paper]{report}

\usepackage{fontspec}
\newfontface\russian{Times New Roman}
\newfontface\chinese{AR PL UMing CN}

\usepackage{filecontents}
\usepackage{xstring}
\usepackage{intcalc}

\begin{filecontents*}{xixia.bib}
@Book{NonOrientalBook,
title = {Non-Oriental Book},
author = {NonOrientalLast, {\russian Имя}, NonOrientalFirst and NonOrientalLast2, {\russian Имя2}, NonOrientalFirst2},
publisher = {Non-Oriental Book Publisher},
address = {Moscow},
year = 1968
}

@Book{OrientalBook,
editor = {XXXORIOrientalLast, {\chinese 名字}, OrientalFirst and XXXORIOrientalLast2, {\chinese 名字2}, OrientalFirst2 and XXXORIOrientalLast3, {\chinese 名字3}, OrientalFirst3},
title = {Oriental Book},
publisher = {Oriental Book Publisher},
address = {Beijing},
year = 1997
}
\end{filecontents*}

\usepackage[backend=biber, style=verbose-inote]{biblatex}
\addbibresource{xixia.bib}

\DeclareNameFormat{author-with-orig}{%
  \IfSubStr{#1}{XXXORI}
    {\StrGobbleLeft{#1}{6}\space#3#7}
    {#3\space#1#7}
  \ifthenelse{\value{listcount}=\intcalcDec{\value{liststop}}}
    {and\space}
    {\ifthenelse{\value{listcount}<\value{liststop}}
      {\addcomma\space}
      {}}}

\DeclareNameFormat{sortname}{%
  \IfSubStr{#1}{XXXORI}
    {\StrGobbleLeft{#1}{6}\space#3#7}
    {\ifthenelse{\value{listcount}=1}
      {#1\addcomma\space#3#7}
      {#3\space#1#7}}
  \ifthenelse{\value{listcount}=\intcalcDec{\value{liststop}}}
    {and\space}
    {\ifthenelse{\value{listcount}<\value{liststop}}
      {\addcomma\space}
      {}}}

\renewbibmacro*{footcite:full}{%
  \usebibmacro{cite:full:citepages}%
  \printtext[bibhypertarget]{%
    \usedriver
      {\DeclareNameAlias{sortname}{author-with-orig}}
      {\thefield{entrytype}}}%
  \usebibmacro{shorthandintro}}


\begin{document}
A book by a non-oriental author\footcite{NonOrientalBook}.  A document by an oriental author\footcite{OrientalBook}.

\newpage
\printbibliography
\end{document}

相关内容