
Eu adicionei bibstrings personalizados e usei o idioma ngerman
. Se eu deixar a definição de ngerman
before bibstrings em branco, ele imprimirá o formato da data conforme desejado. DD.MM.AAAA
No entanto, se eu usar LanguageMapping ngerman
ou german
, ele aparecerá como DD/MM/AAAA - por que isso acontece e qual é a maneira correta de exibir o formato correto?
Arquivo LBX:
\ProvidesFile{custombibstrings.lbx}[2019 SoSe]
\DeclareBibliographyStrings{%
inherit = {ngerman},
andothers = {{et al\adddot}{et al\adddot}},
byeditor = {{herausgegeben von}{hg\adddotspace von}},
bytranslator = {{übersetzt von} {{\"u}bers\adddotspace von}},
editor = {{Herausgeber}{Hg\adddot}},
editors = {{Herausgeber}{Hg\adddot}},
urlseen = {{letzter Abruf}{letzter Abruf}},
paragraph = {{Paragraph}{\S}},
subparagraph = {{Absatz}{Abs\adddot}},
article = {{Artikel}{Art\adddot}},
bydirector = {{unter der Regie von}{unter der Regie von}},
byproducer = {{produziert von}{produziert von}},
volume = {{Vol\adddot}{Vol\adddot}},
seriesseason = {{Staffel}{Staffel}},
episode = {{Episode}{Episode}},
duration = {{Spieldauer}{Spieldauer}},
fsk = {{FSK}{FSK}},
}
MWE
% arara: lualatex: { shell: true, synctex: true }
% arara: biber
% arara: lualatex: { shell: true, synctex: true }
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@online{Amano.2011,
author = {Amano, Fumiko},
title = {Testimonial Videos of Survivors},
url = {https://www.global-peace.go.jp/OTHER/ot_german_pic_syousai.php?gbID=920&dt=161012173049},
date = {2011-11-18},
urldate = {2019-08-23},
maintitle = {National Peace Memorial Halls for the Atomic Bomb Victims in Hiroshima and Nagasaki},
organization = {{Net-Gtas Global Network}},
keywords = {primary}
}
\end{filecontents*}
\documentclass[
12pt,
a4paper,
headings=standardclasses,
listof=totoc,
numbers=noenddot
]{scrartcl}
\usepackage{showframe}
\usepackage[left=2.50cm, right=2.50cm, top=2.50cm, bottom=2.00cm, footskip=1cm]{geometry}
\usepackage[onehalfspacing]{setspace}
\usepackage[main=ngerman, english]{babel}
\usepackage[babel, german=quotes]{csquotes}
\usepackage[ngerman]{isodate}
\usepackage[ngerman]{datetime}
\usepackage[match,MogaHMinEx90]{luatexja-preset}
\setmainjfont{MogaHMinEx90}
\usepackage{luatexja-ruby}
\ltjsetparameter{jacharrange={-3}} % punctuation is Latin
\usepackage[
backend=biber,
style=ext-authoryear,
sorting=nyvt,
datamodel=customstyles,
maxnames=25,
innamebeforetitle=true,
usetranslator=true,
alldates=terse,
labeldate=year,
dashed=false,
isbn=false
]{biblatex}
\addbibresource{\jobname.bib}
\usepackage[hidelinks, pdfencoding=auto]{hyperref}
\begin{filecontents}{customstyles.dbx}
\DeclareDatamodelEntrytypes{video}
\DeclareDatamodelFields[type=field,datatype=literal]{
duration,
format,
type,
}
\DeclareDatamodelFields[type=list,datatype=name]{
director,
producer,
}
\DeclareDatamodelFields[type=field, datatype=verbatim]{
fsk,
seriesseason,
episode,
}
\DeclareDatamodelEntryfields[video]{
duration,
director,
episode,
format,
fsk,
producer,
seriesseason,
type,
}
\end{filecontents}
% regarded in custombibstrings
\NewBibliographyString{bydirector,duration,episode,format,fsk,paragraph,subparagraph,article,byproducer,seriesseason}
\DeclareLanguageMapping{german}{custombibstrings}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite=false]{
\pertype{article}
\step[fieldsource=entrysubtype, match=\regexp{\Anewspaper\Z}, final]
\step[fieldsource=journal, final]
\step[fieldset=author, origfieldval, final]
\step[fieldsource=author, match=\regexp{\A(.*)\Z}, replace=\regexp{\{$1\}}]
\step[fieldset=author+an, fieldvalue={1=journalauthor}]
\step[fieldset=options, fieldvalue={journalauthor}]
}
}
}
% smallcaps
\newtoggle{bbx@journalauthor}
\DeclareEntryOption[boolean]{journalauthor}[true]{%
\settoggle{bbx@journalauthor}{#1}}
\renewcommand{\mkbibnamefamily}[1]{%
\ifitemannotation{journalauthor}
{\mkbibemph{#1}}
{\textsc{#1}}}
\newtoggle{bbx@director}
\DeclareEntryOption[boolean]{director}[true]{%
\settoggle{bbx@director}{#1}}
\renewcommand{\mkbibnamefamily}[1]{%
\ifitemannotation{director}
{\mkbibemph{#1}}
{\textsc{#1}}}
\newtoggle{bbx@producer}
\DeclareEntryOption[boolean]{producer}[true]{%
\settoggle{bbx@producer}{#1}}
\renewcommand{\mkbibnamefamily}[1]{%
\ifitemannotation{producer}
{\mkbibemph{#1}}
{\textsc{#1}}}
\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space}
% editor in parentheses
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}
\DeclareFieldAlias{translatortype}{editortype}
\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,online]
{title}{#1\isdot}
\DeclareFieldFormat
[thesis,unpublished]
{title}{\mkbibemph{#1}\isdot} % thesis title italic
% no period after addon titles
\renewcommand*{\titleaddonpunct}{\addspace}
\DeclareFieldFormat{titleaddon}{\mkbibbrackets{#1}}
\DeclareFieldAlias{booktitleaddon}{titleaddon}
\DeclareFieldAlias{maintitleaddon}{titleaddon}
\DeclareFieldAlias{journaltitleaddon}{titleaddon}
\DeclareFieldAlias{lawtitleaddon}{titleaddon}
\DeclareFieldAlias{subtitleaddon}{titleaddon}
\newbibmacro{online:editor+maintitle}{% organization in front of maintitle
\printlist{organization}%
\clearlist{organization}%
\setunit*{\addcolon\space}%
\printnames{editor}%
\setunit*{\addcolon\space}%
\usebibmacro{maintitle}}
\usepackage{xpatch}
\xpatchbibdriver{online}
{\usebibmacro{byeditor+others}}
{\usebibmacro{online:editor+maintitle}}
{}{}
\xpatchbibmacro{editorstrg}{\bibstring}{\bibcpstring}{}{}
\xpatchbibmacro{editorstrg}{\bibstring}{\bibcpstring}{}{}
\renewbibmacro*{in:}{%
\iftoggle{bbx@journalauthor}
{}
{\printtext{%
\bibstring{in}\intitlepunct}}}
\DeclareNameAlias{ineditor}{sortname}
\renewcommand*{\volnumdelim}{\addcomma\space}
% set online sources as per IOA
\renewbibmacro*{addendum+pubstate}{%
\setunit{\space}%
\printfield{addendum}%
\newunit\newblock
\printfield{pubstate}}
\DeclareListFormat[online,law]{organization}{% organization in caps
\textsc{%
\usebibmacro{list:delim}{#1}%
#1\isdot
\usebibmacro{list:andothers}}}
\urlstyle{same}%
\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\addcolon\space#1}}
%----------------------------------------------------------------------------
% CITING
%----------------------------------------------------------------------------
\makeatletter
\renewbibmacro*{cite:labeldate+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[extblx@inner\blx@delimcontext delims]{%
\printtext[bibhyperref]{%
\iftoggle{bbx@journalauthor}
{\printfield{issue}%
\setunit{\addcomma\space}%
\printtext[\blx@delimcontext labeldate]{%
\printdateextra}}
{\printtext[\blx@delimcontext labeldate]{%
\printlabeldateextra}}}}}}
\makeatother
\renewcommand\postnotedelim{\addcolon\addspace}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{multipostnote}{\mknormrange{#1}}
%----------------------------------------------------------------------------
% MAIN
%----------------------------------------------------------------------------
\begin{document}
\nocite{*}
\printbibliography[heading=bibintoc,title={Literaturverzeichnis}]
\end{document}
Responder1
Um .lbx
arquivo deve sempre conter definições para pelo menos duas coisas.
- A bibliografiacordas(com
\DeclareBibliographyStrings
) - e a bibliografiaextras(principalmente manipulação de datas, formato para ordinais, etc. com
\DeclareBibliographyExtras
).
.lbx
Atualmente falta no arquivo uma definição para os extras da bibliografia. Meu biblatex
até reclama disso no.log
Package biblatex Warning: Using fallback definition for \mkbibdateshort. (biblatex) The command should be defined in the .lbx file. (biblatex) If you see this message, the .lbx file could not be (biblatex) loaded, is faulty or does not contain a definition (biblatex) for \mkbibdateshort. Package biblatex Warning: Using fallback definition for \mkbibdateshort. (biblatex) The command should be defined in the .lbx file. (biblatex) If you see this message, the .lbx file could not be (biblatex) loaded, is faulty or does not contain a definition (biblatex) for \mkbibdateshort.
Como você basicamente escreve um novo .lbx
arquivo, você precisará herdar os extras da bibliografia de outro idioma ou definir todos os comandos necessários do zero. No seu caso, herdar de ngerman
with \InheritBibliographyExtras{ngerman}
parece a melhor opção. Você ainda pode substituir as definições por um arquivo \DeclareBibliographyExtras
.
A situação é semelhante com as strings de bibliografia, mas aí a herança é fornecida pelo par chave-valor especial inherit = {ngerman},
em \DeclareBibliographyStrings
.
Eu sugiro fortemente que você faça um favor a si mesmo e adicione o nome do idioma ao nome do arquivo genérico custombibstrings.lbx
para torná-lo legível custombibstrings-ngerman.lbx
(é claro, se você puder criar um nome mais descritivo do que custombibstrings
isso também pode ser útil...)
\ProvidesFile{custombibstrings-ngerman.lbx}[2019 SoSe]
\InheritBibliographyExtras{ngerman}
\DeclareBibliographyStrings{%
inherit = {ngerman},
andothers = {{et al\adddot}{et al\adddot}},
byeditor = {{herausgegeben von}{hg\adddotspace von}},
bytranslator = {{übersetzt von} {übers\adddotspace von}},
editor = {{Herausgeber}{Hg\adddot}},
editors = {{Herausgeber}{Hg\adddot}},
urlseen = {{letzter Abruf}{letzter Abruf}},
paragraph = {{Paragraph}{\S}},
subparagraph = {{Absatz}{Abs\adddot}},
article = {{Artikel}{Art\adddot}},
bydirector = {{unter der Regie von}{unter der Regie von}},
byproducer = {{produziert von}{produziert von}},
volume = {{Vol\adddot}{Vol\adddot}},
seriesseason = {{Staffel}{Staffel}},
episode = {{Episode}{Episode}},
duration = {{Spieldauer}{Spieldauer}},
fsk = {{FSK}{FSK}},
}
Naturalmente você precisará
\DeclareLanguageMapping{ngerman}{custombibstrings-ngerman}
Com este arquivo e esta linha alterada, o MWE produz
editarAlterado {\"u}bers\adddotspace von
para übers\adddotspace von
.