有时,我需要排版威尔士语。有时,我需要用威尔士语排版引文和参考书目。我想上次我这样做的时候,我可能还在使用 BibTeX,尽管我真的不确定。无论如何,我的整个工作流程现在都使用biber
和biblatex
...
我发现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
喜欢csquotes
但csquotes
不会威尔士语。但这些都与这个问题无关。)
输出如下:
请注意,使用英语引文只是为了便于复制。显然,参考文献的内容很可能是威尔士语。(尽管也可能是英语。)
可以看出,虽然 控制的文档元素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.lbx
并german.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。
在实施这个想法时可能需要注意两件事:
Biblatex(或类似系统)可能希望在后面强制留一个空格和。如果这是一个正常空格,则 latex 可能会忽略它(
\.c
=\. c
)。否则,也许\ignorespaces
可能会有帮助(但不确定)。从答案中的一些代码
moeve
来看,biblatex 可能想要嵌入和在括号中(与 比较references = {{Cyfeiriadau}{Cyfeiriadau}}
)。如果a\.
嵌入如此,它可能会干扰\.
传递其参数(它可能会尝试将右括号解释}
为其参数,这将导致编译错误)。如果是这种情况,您需要比我更聪明的人来解决这个问题。