调整 biblatex 时将参考书目字符串放置在字段值之后

调整 biblatex 时将参考书目字符串放置在字段值之后

我正在适应biblatex巴斯克语。在这种语言中,一些元素需要在字段值后面加上标识字符串。例如

Ed. by Big Publisher Company

应该读

Big Publisher Company-(a)k argit.

我找到了翻译的方法Ed. by(我正在创建一个basque.ldx将在某个时候共享的),但我还没有弄清楚如何“反转”字段值和字符串的顺序。(并非所有字段和顺序都应该更改。)

答案1

让我们看看如何byeditor使用。biblatex.def我们有

\newbibmacro*{byeditor}{%
  \ifnameundef{editor}
    {}
    {\usebibmacro{bytypestrg}{editor}{editor}%
     \setunit{\addspace}%
     \printnames[byeditor]{editor}%
     \newunit}%
  \usebibmacro{byeditorx}}

因此\usebibmacro{bytypestrg}{editor}{editor}在打印实际编辑器名称之前就会被调用\printnames[byeditor]{editor}

bytypestring定义为

\newbibmacro*{bytypestrg}[2]{%
  \iffieldundef{#1type}
    {\bibstring{by#2}}
    {\ifbibxstring{by\thefield{#1type}}
       {\bibstring{by\thefield{#1type}}}
       {\printtext{\thefield{#1type}}}}}

因此它只是byeditor(s)在这里为我们提供了正确的字符串(如果editorytpe没有要求任何其他东西)。

由于所有其他名称也都以完全相同的方式设置,这意味着在标准中,biblatex字符串将始终出现在名称之前。无法使用特定方法.lbx更改这一点.lbx。并且所有.lbx文件的设置方式都假定by...字符串始终直接位于名称之前。另请参阅BibLaTeX 定制:页面前缀到后缀

您必须重新定义所有这些by...宏才能移动\usebibmacro{bytypestrg}{editor}{editor}

\renewbibmacro*{byeditor}{%
  \ifnameundef{editor}
    {}
    {\printnames[byeditor]{editor}%
     \usebibmacro{bytypestrg}{editor}{editor}%
     \newunit}%
  \usebibmacro{byeditorx}}

原则上,这可以在文件中完成.lbx,但需要多行代码来重新定义所有涉及的宏。

在理想情况下,bibstrings 可能包含“虚拟”变量,这些变量可以自由放置在字符串中,以便允许任何顺序的名称和附加文本。不幸的是,字符串目前还没有以这种方式设置,切换到该模型将需要重新实现 bibstrings,对所有.lbx文件和所有样式文件(标准样式和自定义样式)进行重大修改。这可能会以所有可能的方式破坏向后兼容性。

相关内容