我这里有两个代码示例。
选项british
babel
\documentclass{article}
\usepackage[british]{babel}
\usepackage[style=authoryear,date=year,urldate=long,dateabbrev=false]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
Read \textcite{markey}.
\printbibliography
\end{document}
输出:
马基,尼古拉斯(2005)。驯服 BeaST。BibTeX 的 B 到 X。版本 1.3。URL:
http://mirror.ctan.org/info/bibtex/tamethebeast/ttb_en.pdf
(2006 年 10 月 1 日访问)。
选项australian
babel
\documentclass{article}
\usepackage[australian]{babel}
\usepackage[style=authoryear,date=year,urldate=long,dateabbrev=false]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
Read \textcite{markey}.
\printbibliography
\end{document}
输出:
马基,尼古拉斯(2005)。驯服 BeaST。BibTeX 的 B 到 X。版本 1.3。url:
http://mirror.ctan.org/info/bibtex/tamethebeast/ttb_en.pdf
(2006 年 10 月 1 日访问)。
我想要这个输出。这个输出有“2006 年 10 月 1 日”,我想要这个。之前的输出有“2006 年 10 月 1 日”,我不想要。
我的问题
现在显然文件texmf-dist/tex/latex/biblatex/lbx/australian.lbx
只包含以下内容:
\ProvidesFile{australian.lbx}
[\abx@lbxid]
\InheritBibliographyExtras{british}
\DeclareBibliographyExtras{%
\protected\def\mkbibdatelong#1#2#3{%
\iffieldundef{#3}
{}
{\stripzeros{\thefield{#3}}%
\iffieldundef{#2}{}{\nobreakspace}}%
\iffieldundef{#2}
{}
{\mkbibmonth{\thefield{#2}}%
\iffieldundef{#1}{}{\space}}%
\iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\stripzeros{\thefield{#1}}}}%
\protected\def\mkbibyeardivisiondateshort#1#2{%
\mkbibyeardivision{\thefield{#2}}%
\iffieldundef{#1}{}{\space}%
\mkyearzeros{\thefield{#1}}}%
\protected\def\mkbibyeardivisiondatelong#1#2{%
\mkbibyeardivision{\thefield{#2}}%
\iffieldundef{#1}{}{\space}%
\mkyearzeros{\thefield{#1}}}%
}
\InheritBibliographyStrings{english}
\endinput
它看起来australian.lbx
只重新定义了一些日期格式,但其他方面都一样british.lbx
(因为它继承了英国)。是否可以告诉 biblatexaustralian
只对 for使用\mkbibdatelong
,而british
对其他所有格式都使用?
如果不是因为这个首选日期格式(根据我们的大学风格指南),我应该british
在其他所有情况下使用它。但由于australian
继承british
并给出了这个首选日期格式,我正在考虑使用australian
。所以我的问题是,我是否可以只使用它australian.lbx
来产生我想要的输出?或者这样做会导致以后出现问题?
我知道我总是可以明确地重新定义\mkbibdatelong
自己(就像这个答案中显示的那样:https://tex.stackexchange.com/a/672612/18587)但我在想为什么要重复已经存在的代码australian.lbx
?所以我仍然想知道简单地使用是否\usepackage[australian]{babel}
会导致我以后出现问题?
总结一下我的问题:
\usepackage[australian]{babel}
当我想让文档的其余部分采用英国风格时,使用是否会引起问题?- 有没有办法告诉 biblatex
australian
仅用于\mkbibdatelong
并用于british
其他一切?
答案1
Q1:如果我使用\usepackage[australian]{babel}
而不是会怎样\usepackage[british]{babel}
?
由于继承自和 而非australian.lbx
的字符串,因此您会看到和之间不同的字符串存在差异。目前不同的字符串是和 (英国有“organiser”等,而英语和澳大利亚也有“organizer”)。english.lbx
british.lbx
english
british
organizer
organizers
byorganizer
此外,如果您babel
使用australian
选项而不是加载british
,则整个文档将使用 的babel
澳大利亚本地化版本。babel
澳大利亚本地化版本与英国本地化版本的区别仅在于日期格式(类似于biblatex
这些语言的 日期格式的差异)。特别是连字符模式是相同的。
然而,对全局语言设置做出反应的其他包可能会表现得有所不同。
Q2:有没有更短的方法?
我认为获取所需日期格式的最直接方法是将代码复制australian.lbx
到中\DefineBibliographyExtras{british}
,如下所示在参考文献列表中以“dd 月 yyyy”格式格式化“访问日期”(例如:“2006 年 10 月 1 日”)。如果您实在无法忍受,您可以尝试为 创建british
一个别名australian
,这样即使主语言是 ,也会biblatex
加载australian.lbx
而不是。british.lbx
british
\documentclass{article}
\usepackage[british]{babel}
\usepackage[style=authoryear,date=year,urldate=long,dateabbrev=false]{biblatex}
\DeclareLanguageMapping{british}{australian}
\addbibresource{biblatex-examples.bib}
\begin{document}
Read \textcite{markey}.
\printbibliography
\end{document}