
He añadido baberos personalizados y lenguaje usado ngerman
. Si dejo ngerman
en blanco la definición de before bibstrings, imprimirá el formato de fecha como desee. DD.MM.AAAA
Sin embargo, si uso LanguageMapping ngerman
o german
, aparecerá como DD/MM/AAAA. ¿Por qué es así y cuál es la forma correcta de mostrar el formato correcto?
Archivo 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}
Respuesta1
Un .lbx
archivo siempre debe contener definiciones para al menos dos cosas.
- La bibliografíainstrumentos de cuerda(con
\DeclareBibliographyStrings
) - y la bibliografiaextras(principalmente manejo de fechas, formato para ordinales, etc. con
\DeclareBibliographyExtras
).
Actualmente al .lbx
archivo le falta una definición para los extras de bibliografía. Incluso me biblatex
quejo de esto en el.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.
Dado que básicamente escribes un .lbx
archivo nuevo, necesitarás heredar los extras de bibliografía de otro idioma o definir todos los comandos necesarios desde cero. En su caso, heredar de ngerman
with \InheritBibliographyExtras{ngerman}
parece la mejor opción. Aún puedes sobrescribir las definiciones con un archivo \DeclareBibliographyExtras
.
La situación es similar con las cadenas de bibliografía, pero allí la herencia la proporciona el par clave-valor especial inherit = {ngerman},
en \DeclareBibliographyStrings
.
Le sugiero encarecidamente que se haga un favor y agregue el nombre del idioma al nombre de archivo genérico custombibstrings.lbx
para que se pueda leer custombibstrings-ngerman.lbx
(por supuesto, si puede encontrar un nombre más descriptivo, custombibstrings
también podría 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 entonces necesitarás
\DeclareLanguageMapping{ngerman}{custombibstrings-ngerman}
Con este archivo y esta línea cambiada, el MWE produce
editarCambiado {\"u}bers\adddotspace von
a übers\adddotspace von
.