我可以只对 \mkbibdatelong 使用“australian”选项,而对其他所有选项使用“british”吗?

我可以只对 \mkbibdatelong 使用“australian”选项,而对其他所有选项使用“british”吗?

我这里有两个代码示例。

选项britishbabel

\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 日访问)。

选项australianbabel

\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}会导致我以后出现问题?

总结一下我的问题:

  1. \usepackage[australian]{babel}当我想让文档的其余部分采用英国风格时,使用是否会引起问题?
  2. 有没有办法告诉 biblatexaustralian仅用于\mkbibdatelong并用于british其他一切?

答案1

Q1:如果我使用\usepackage[australian]{babel}而不是会怎样\usepackage[british]{babel}

由于继承自和 而非australian.lbx的字符串,因此您会看到和之间不同的字符串存在差异。目前不同的字符串是和 (英国有“organiser”等,而英语和澳大利亚也有“organizer”)。english.lbxbritish.lbxenglishbritishorganizerorganizersbyorganizer

此外,如果您babel使用australian选项而不是加载british,则整个文档将使用 的babel澳大利亚本地化版本。babel澳大利亚本地化版本与英国本地化版本的区别仅在于日期格式(类似于biblatex这些语言的 日期格式的差异)。特别是连字符模式是相同的。

然而,对全局语言设置做出反应的其他包可能会表现得有所不同。


Q2:有没有更短的方法?

我认为获取所需日期格式的最直接方法是将代码复制australian.lbx到中\DefineBibliographyExtras{british},如下所示在参考文献列表中以“dd 月 yyyy”格式格式化“访问日期”(例如:“2006 年 10 月 1 日”)。如果您实在无法忍受,您可以尝试为 创建british一个别名australian,这样即使主语言是 ,也会biblatex加载australian.lbx而不是。british.lbxbritish

\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}

相关内容