配置 biblatex 以用于不受支持的语言的最合适方法是什么?

配置 biblatex 以用于不受支持的语言的最合适方法是什么?

有时,我需要排版威尔士语。有时,我需要用威尔士语排版引文和参考书目。我想上次我这样做的时候,我可能还在使用 BibTeX,尽管我真的不确定。无论如何,我的整个工作流程现在都使用biberbiblatex...

我发现lockstep 的出色回答更改事物的名称,包括 使用的事物的名称biblatex。但是,这无法处理不受支持的语言的情况。

假设我想用威尔士语排版一份文档:

\documentclass[a4paper,welsh]{article}

\usepackage{babel}
\usepackage[utf8]{inputenc}% welsh needs utf8x but biblatex doesn't like it
\usepackage[T1]{fontenc}% not great for Welsh but the best pdfTeX can do
\usepackage{csquotes}% doesn't like Welsh though biblatex likes csquotes on account of babel...
\usepackage[backend=biber]{biblatex}
\bibliography{biblatex-examples}

\title{Fy Nogfen}
\author{Rhywun}

\begin{document}
  \maketitle
  \tableofcontents
  \section{Cyntaf}
  \autocite{westfahl:space}

  \printbibliography

\end{document}

这种情况下存在多个问题。(一个是我需要,utf8x但由于 而无法使用它biblatex。另一个是我utf8x根本不需要。还有一个是biblatex喜欢csquotescsquotes不会威尔士语。但这些都与这个问题无关。)

输出如下:

问题

请注意,使用英语引文只是为了便于复制。显然,参考文献的内容很可能是威尔士语。(尽管也可能是英语。)

可以看出,虽然 控制的文档元素babel得到了正确处理,但 控制的元素biblatex却没有得到正确处理。但是,我不能简单地修改 lockstep 提供的解决方案,将字符串更改为自定义的英语变体。也就是说,我不能只使用威尔士语版本的

\DefineBibliographyStrings{english}{%
  bibliography = {Works Cited},
  references = {Works Cited},
}

因为biblatex从来没有听说过。

biblatex对于不受支持的语言来说,最合适的配置方法是什么?

答案1

首先,你可能想看看提交新申请的清单.lbx文件的清单在 GitHub Wiki 上biblatex该过程的真实示例;相关部分biblatex文档是§4.9本地化模块,第 215-225 页。

babel添加对所支持语言的支持的过程biblatex非常简单。

只需创建一个.lbx文件(命名为 ,<language>.lbx其中<language>babel的语言标识符,因此在我们的例子中为welsh.lbx),将其放在可以找到的地方,然后将 的翻译放在bibstrings那里。

文件中有两个部分/部分.lbx(1) BibliographyExtras 和 (2) BibliographyStrings。

BibliographyExtras 控制日期格式、牛津逗号、名称分隔符、破折号的使用(---vs--等),而 BibliographyStrings 用于适当的翻译。

我的存根welsh.lbx看起来像这样(它继承了样式中的附加内容british;翻译只是我在快速的互联网研究中发现的 - 我怀疑它们是否正确)

\ProvidesFile{welsh.lbx}[2014/09/15 Welsh language stub]

\InheritBibliographyExtras{british}

\DeclareBibliographyStrings{%
  bibliography     = {{Llyfryddiaeth}{Llyfryddiaeth}},
  references       = {{Cyfeiriadau}{Cyfeiriadau}},
  byeditor         = {{golygydd}{gol\adddot}},
  in               = {{yn}{yn}},
  page             = {{tudalen}{t\adddot}},
  pages            = {{tudalennau}{tt\adddot}},
}

\endinput

创建新.lbx文件的最简单方法可能是使用您熟悉的语言(因此english.lbx可能是一个很好的开始 - 请注意,上面链接的 wiki 挑选english.lbxgerman.lbx作为“参考文件”)并开始翻译(考虑到§4.9.2 中的解释和补充本地化键.lbx,第 206-217 页)。您可以使用文件检查输出biblatex/doc/examples/03-localization-keys.tex。只需将您的 放入.lbx与 相同的目录中03-localization-keys.tex,加载您的语言babel并编译03-localization-keys.tex。此文件包含 的所有biblatex默认 bibstrings 并显示 的长和短以及所有字符串的英文解释,缺少字符串将生成警告。

有些语言的功能需要 的额外支持biblatex。在威尔士语中,我似乎已经了解到,“and” 是“a”或“ac”,具体取决于后面的单词(或多或少类似于英语中的“a”/“an”)——为了正确处理这个问题,需要有一个类似于 spanish.lbx\smartand§3.11.2特定语言说明:西班牙语,第 104 页)——您会注意到我放弃了处理这个问题,因此在下面的例子中用粗体“和”表示。对于此类问题,最好与开发人员联系。既然我们正在处理这个问题,如果您计划制作一个.lbx文件并打算制作一个全面的文件,您可能需要考虑通过将文件提交给维护者来为项目做出贡献。联系方式:https://github.com/plk/biblatex/issues或者直接在以下地址提交 pull requesthttps://github.com/plk/biblatex/pulls

独立的 MWE

\documentclass[a4paper,welsh]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}% welsh needs utf8x but biblatex doesn't like it
\usepackage[T1]{fontenc}% not great for Welsh but the best pdfTeX can do
\usepackage{csquotes}% doesn't like Welsh though biblatex likes csquotes on account of babel...
\usepackage[backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}

\title{Fy Nogfen}
\author{Rhywun}

\DeclareQuoteAlias[british]{english}{welsh}

\begin{filecontents*}{welsh.lbx}
\ProvidesFile{welsh.lbx}[2014/09/15 Welsh language stub]

\InheritBibliographyExtras{british}

\DeclareBibliographyStrings{%
  bibliography     = {{Llyfryddiaeth}{Llyfryddiaeth}},
  references       = {{Cyfeiriadau}{Cyfeiriadau}},
  byeditor         = {{golygydd}{gol\adddotspace}},
  in               = {{yn}{yn}},
  page             = {{tudalen}{t\adddot}},
  pages            = {{tudalennau}{tt\adddot}},
}

\endinput

\end{filecontents*}

\begin{document}
  \maketitle
  \tableofcontents
  \section{Cyntaf}
  \autocite{westfahl:space}

  \printbibliography
\end{document}

在此处输入图片描述

答案2

这对于评论来说太长了,但回答了你关于变异的问题。我曾经不得不处理另一种语言中的类似效果,并通过文本合成来处理。具体来说,选择一种你文章中不需要的重音。假设加点\.就可以了。

然后定义书目a\.要添加到文档的前言部分,对于元音:

\DeclareTextCompositeCommand{\.}{T1}{a}{c a}
\DeclareTextCompositeCommand{\.}{T1}{e}{c e}

对于非变异辅音:

\DeclareTextCompositeCommand{\.}{T1}{m}{ m}
\DeclareTextCompositeCommand{\.}{T1}{f}{ f}

对于变化的辅音:

\DeclareTextCompositeCommand{\.}{T1}{c}{ ch}
\DeclareTextCompositeCommand{\.}{T1}{t}{ th}

你会发现 + a=交流, 那 + m=, 然后 + c=一个ch

在实施这个想法时可能需要注意两件事:

  1. Biblatex(或类似系统)可能希望在后面强制留一个空格。如果这是一个正常空格,则 latex 可能会忽略它(\.c= \. c)。否则,也许\ignorespaces可能会有帮助(但不确定)。

  2. 从答案中的一些代码moeve来看,biblatex 可能想要嵌入在括号中(与 比较references = {{Cyfeiriadau}{Cyfeiriadau}})。如果a\.嵌入如此,它可能会干扰\.传递其参数(它可能会尝试将右括号解释}为其参数,这将导致编译错误)。如果是这种情况,您需要比我更聪明的人来解决这个问题。

相关内容