我仍在努力按照我所在部门的标准格式化我的参考文献。我目前正在尝试更改日期格式,但失败了。
我需要:
30. Sept. 2003.
然而,我所做的一切似乎都没有任何影响。附件是 MWE:
\documentclass[a4paper,12pt]{article}
\usepackage{xpatch}
\usepackage{polyglossia}
\setmainlanguage[variant=british]{english}
\usepackage{fontspec,xltxtra,xunicode}
\usepackage{csquotes}
\usepackage{url}
\usepackage[style=authoryear-ibid,backend=biber,doi=false,isbn=false,url=false,autolang=hyphen]{biblatex}
\addbibresource{Merkliste.bib}
\renewcommand*{\postnotedelim}{\addcolon\space}
\renewbibmacro{in:}{\ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}
\renewcommand*{\intitlepunct}{\addspace}
\renewcommand{\bibpagespunct}{\ifentrytype{incollection}{\addperiod\addspace}{\addcolon\addspace}}
\DeclareFieldFormat
[online]
{url}{{#1}}
\DeclareFieldFormat
[online]
{title}{\mkbibquote{#1\isdot}}
\xpatchbibmacro{title}{\printfield[titlecase]{subtitle}}%
{\printfield[titlecase]{subtitle}\ifentrytype{online}{\addperiod}{}}%
{}{}%
\DeclareFieldFormat{urldate}{#1}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\DeclareFieldFormat{pages}{#1}
%% Here are my tries.
\xpatchbibmacro{url+urldate}{\printfield{urlyear}\mkbibmonth{\thefield{urlmonth}}{\thefield{urlday}}}{}{}
\xpatchbibmacro{date+extrayear}{%
\printtext[parens]%
}{%
\setunit*{\addperiod\space}%
\printtext%
}{}{}
\xpatchbibmacro{title}{\printfield[titlecase]{subtitle}}%
{\printfield[titlecase]{subtitle}\ifentrytype{article}{\addperiod}{}}%
{}{}%
\AtEveryBibitem{\clearlist{language}} % clears language
\AtEveryBibitem{\clearfield{note}} % clears notes
\AtEveryBibitem{\clearfield{series}} % clears Series
\AtEveryBibitem{\ifentrytype{book}{\clearfield{number}}{}}
\AtEveryBibitem{\ifentrytype{book}{\clearfield{pages}}{}}
\begin{document}
\nocite{*}.
\printbibliography
\end{document}
和一个.bib-extract:
![@online{secretariat_a_la_politique_linguistique_quebec_dynamique_2014,
Author = {{Secr{\'e}tariat {\`a} la politique linguistique Qu{\'e}bec}},
Date-Modified = {2014-08-03 17:01:54 +0000},
File = {Dynamique des langues en quelques chiffres \: Tableaux - Secr{\'e}tariat {\`a} la politique linguistique.pdf:/Users/Moritz/Desktop/Dynamique des langues en quelques chiffres \: Tableaux - Secr{\'e}tariat {\`a} la politique linguistique.pdf:application/pdf},
Month = jul,
Title = {La dynamique des langues en quelques chiffres : Tableaux},
Urldate = {2014-07-28},
Year = {2014}}][1]
答案1
Biblatex 提供了不同的选项来格式化日期。如果格式不是预定义的格式,则可以使用\DeclareFieldFormat
提供现在的格式,在这种情况下,我们可以提供一种格式urldate
\DeclareFieldFormat{urldate}{%
\thefield{urlday}\adddot\addspace%
\mkbibmonth{\thefield{urlmonth}}\adddot\addspace%
\thefield{urlyear}\isdot}
要使用月份的缩写版本,可以使用dateabbrev
选项biblatex
。
答案2
biblatex
使用多个日期字段。例如,我们希望重新格式化date
字段的输出以及。幸运的是,通过或调用所有这些日期字段,所以这就是我们要查看的。我们还需要计算字段仅包含一年或日期范围的可能性,因此我们需要使用 if-then 结构。urldate
biblatex
\mkbibdatelong
\mkbibdateshort
date
1986/1990
由于文档语言设置为英式英语,因此我们希望以 为基础british.lbx
。它包含以下定义:
\protected\def\mkbibdatelong#1#2#3{%
\iffieldundef{#3}
{}
{\mkbibordinal{\thefield{#3}}%
\iffieldundef{#2}{}{\nobreakspace}}%
\iffieldundef{#2}
{}
{\mkbibmonth{\thefield{#2}}%
\iffieldundef{#1}{}{\space}}%
\stripzeros{\thefield{#1}}}%
我们需要将其复制到我们的序言中,并将其包含在\DefineBibliographyExtras{british}
和的论点中:
biblatex
使用选项告诉我们想要使用更长的日期格式alldates=long
;- 告诉
biblatex
使用选项缩写月份名称dateabbrev=true
; - 删除日期字段中的字母序数(
\mkbibordinal
); - 恢复
\stripzeros
先前由命令触发的\mkbibordinal
; - 用 插入我们的标点序数
\adddot
。
梅威瑟:
\documentclass[a4paper,12pt]{article}
\usepackage{polyglossia}
\setmainlanguage[variant=british]{english}
\usepackage{fontspec}
\usepackage{csquotes}
\usepackage[style=authoryear-ibid,doi=false,isbn=false,url=false,autolang=hyphen,alldates=long,dateabbrev=true]{biblatex}
\addbibresource{Merkliste.bib}
\DefineBibliographyExtras{english}{%
\protected\def\mkbibdatelong#1#2#3{%
\iffieldundef{#3}
{}
{\stripzeros{\thefield{#3}}\adddot%
\iffieldundef{#2}{}{\nobreakspace}}%
\iffieldundef{#2}
{}
{\mkbibmonth{\thefield{#2}}%
\iffieldundef{#1}{}{\space}}%
\stripzeros{\thefield{#1}}}%
}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
您会发现样本书目中的“July”并未缩写,因为四个字母的月份通常不缩写。