这是俄语、日语和 biblatex 哦天哪。我现在取得了很大进展,使用支持多语种的 bib latex 并编写我自己的日语 csquotes 和 lbx 文件,但现在我遇到了另一个问题。它有点类似于如何使用 biblatex、biber 和 polyglossia 创建多语言(英语、日语)书目,但有所不同。
日语和英语/俄语书目条目的格式截然不同。以下是我想要实现的示例:
Aizawa & Kumagai(1983)相沢英资、熊谷信男编『中新田ハリストス正学校沿革史 开教100周年纪念』中新田:中新田ハリストス正学校、1983。
Brower & Lazzerini (1997) Brower, Daniel R. 和 Edward J. Lazzerini 编辑,俄罗斯的东方:帝国边境和人民,1700-1917 年. 布卢明顿:印第安纳大学出版社,1997 年。
请注意,在日文条目中,名称之间没有“and”(我可以在 lbx 文件中处理这个问题),但书名是被引用的,作者姓名没有重新排序或缩写,而是在两种情况下都以姓氏开头,中间没有空格,名称和“eds”之间也没有空格。(编辑)
我可以根据每个条目更改参考书目样式吗?是否有类似日语参考书目样式的样式?(如果没有,我该从哪里开始?)
答案1
总体介绍
这是可行的,但不是容易地可行。所以,恐怕这不是任何人都能接受的答案:只是对问题的记录。做这件事的人必须非常了解所涉及语言的惯例,并且至少知道它是如何biblatex
工作的,尽管这并不比逃离克里特岛迷宫更难——只要顺着蜿蜒的线走就行了。
要理解为什么这是可能的,以及为什么这很难,你需要知道一些biblatex
工作原理。
每种风格的核心biblatex
都是三个文件:
一个(或多个)具有
.lbx
扩展名的文件包含语言定义,例如“编辑器”、“评论员”等的相应字符串(显然,每种语言都不同),还有用于生成日期的宏(例如,考虑英式英语和美式英语日期约定之间的差异)。一个文件
.cbx
负责生成文内引用,例如“[1]”或“(Chuzzlewit 1975)”。一个文件
.bbx
负责生成参考书目列表。
.cbx
这有点过于简单化了,因为在某些样式中,和文件之间存在紧密的联系.bbx
,因为在某些样式中,文内引用(至少有时)与完整的书目条目大致相同。但可以准确地说,书目数据的实际打印,无论是在文内还是在单独的书目中,还是两者兼而有之,主要是文件的工作.bbx
。
就目前而言,我们先忽略复杂性,集中精力于文件.bbx
。
.bbx 文件是什么样子的
如果你查看一个.bbx
文件,你会看到很多如下所示的内容:
\DeclareBibliographyDriver{article}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{bytranslator+others}%
\newunit\newblock
\printfield{version}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{journal+issuetitle}%
\newunit
\usebibmacro{byeditor+others}%
\newunit
\usebibmacro{note+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{issn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
基本上,它所做的就是系统地处理构成任何书目条目的各种“块”,并根据需要打印它们。但请注意两点。首先,这些块的顺序是固定的。其次,在每个块中,驱动程序大量使用 来
\usebibmacro
调用处理块内逻辑的辅助部分。它们经常做的事情之一是打印
bibstring
,这些 是在文件中定义的.lbx
:例如“编辑器”或“翻译器”或“卷”。但是,当bibmacro
生成输出时,就像 一样,BibliographyDriver
通常会按照固定的顺序进行。
如何处理不同的语言
Biblatex 能够在每种情况下都使用相同的驱动程序的同时,针对语言差异做出某些让步:例如,它
\bibstring
可以确定是打印“editor”还是“Herausgeber”;.lbx
文件还定义了一些用于打印日期等的宏。它可以根据原始语言来设置(这才是最重要的)连字模式。
但很多事情都是很难融入.bbx
,以至于需要从根本上改变打印顺序的重组很难实现。没有“现成的”解决方案。一个能很容易地说“bibstring
从这个文件中获取你的日语定义,但你的bibstring
日语定义,但从 那个文件中获取英语定义;但你不能说“从这里获取英文作品的书目模板.bbx
,但从那里获取日文作品的书目模板” .bbx
。
.bbx
文件可以加载其他文件,但最终只有一个入口点。从这里开始,基本结构就成型了。
因此,为了使语言选择产生不仅仅是表面上的效果,你必须进行如下工作:
- 为每种条目类型和语言编写(或复制)一个书目驱动程序和/或一组宏。
- 编写一种机制,以某种方式检查语言,然后发送给正确的驱动程序。
我能想到至少两种方法来实现这一点,而且很可能还有更多方法。一种方法是在数据进入 Biblatex 之前(在 biber 中)对其进行处理,有效地重写条目类型,使其变成,然后book
通过 为它们提供不同的类型book-japanese
来区分book
和
book-japanese
类型。上面的评论中提出了这一点。但是,对于用户来说,这样做也有缺点,他们必须知道并理解其中的含义,例如,如果他/她想将参考书目除以type
。
另一种方法是,当我在处理来自不同司法管辖区的案件时遇到类似问题时,我使用过这种方法,即保留单个type
,但让驱动程序成为一个包装器,其唯一工作是检查相关字段,然后对其进行分派,以及进行零碎的清理工作,而让一组\bibmacro
s 进行实际格式化。这会产生一些相当不讨人喜欢的代码,但它能完成工作。
但需要注意的是,无论你做什么,你都必须生成一个新的.bbx
,专门针对你愿意处理的语言。即使你只是从现有的适当.bbx
文件中复制定义并根据需要重命名它们(我不知道是否有人甚至为日语做过这样的事情),你仍然需要大量的工作和测试,因为你会发现你的源文件大量使用了bibmacro
同名但定义不同的宏,你必须确定哪些宏可以安全使用,哪些需要专门化,然后做所有这些事情。理论上这项工作很枯燥,但却很艰苦。
(通常——大多数情况下—— bibmacro
s 处理的是那些制定书目规则的人所钟爱的那种模糊的极端情况。他们能够要求各种奇怪的小事。)
可以仅通过 Biblatex 来做到这一点吗?
我与维护 biblatex 无关,但从外部来看,我认为人们不可能真正地坚持在不久的将来在 Biblatex 中整理这个问题——尽管 Biblatex 在尽可能地可扩展和适应性方面有着非常值得称道的记录。问题是,仅仅通过语言来改变驱动程序是不够的(我认为这会相当简单):文件.bbx
使用 s 做了很多工作bibmacro
,而这些文件通常共享名称。当现有代码库中的经典模式是用于不重命名的混杂重新定义时,需要某种方法将这些宏放在不同的命名空间中,并且以各种方式实现了这种方法。
编辑添加此外,正如 moewe 在评论中指出的那样,很难想象添加此功能的任何方法都不会导致兼容性问题。最近在这方面的一个微小变化(旨在消除狭隘的假设,即一个人的第一的名字也是一个人的给定名称虽然简单,但暗示了可能存在的问题。现在 Biblatex 的工作风格范围很合理,保持兼容性非常重要。
答案2
这是为了解释如何在名为 cwTeX 的 cjk TeX 系统中使用 biblatex。
首先,您可以在此处看到输出: http://www.econ.ntu.edu.tw/ter/new/index.html?n=2&m=6&l=_c 这是台湾大学经济系出版的期刊。点击第一篇论文(中文)的 PDF,浏览到最后,你会看到中文和英文的参考书目部分。参考书目由 biblatex 创建。
如果你有兴趣,可以在这里看看 cwTeX: http://homepage.ntu.edu.tw/~ntut019/cwtex/cwtex.html 该系统最初用于排版中文,现在已扩展到涵盖 cjk,因此也可以用于排版日文。cwTeX 使用预处理器(用 python 编写)转换 cjk 字符,然后使用 pdflatex 进行排版。
对于 biblatex,我们编写了一个预处理器以及 .bbx 和 .cbx 来处理 cjk 文档的排序和特殊要求。目前,.bbx 和 .cbx 基于 authoryear。
我们还编写了索引和词汇表的预处理器。cwTeX 也可以与 tex4ht 一起使用。cwTeX 是我和我弟弟开发的。我用这个系统排版了很多中文教科书。