article
Früher habe ich einen Eintragsuntertyp für (genannt ) verwendet newspaper
, um einige Änderungen an den vorzunehmen bibliography
. Genauer gesagt wollte ich, dass die Zeitung kursiv erscheint, wenn kein Autor angegeben ist. Dies scheint jedoch beim Kompilieren nicht mehr berücksichtigt zu werden, und zuerst dachte ich, es läge an meinen benutzerdefinierten Bibstyles, aber als ich sie entfernte, trat das gleiche Problem auf. (Außerdem bin ich mir nicht sicher, warum die japanischen Klammern hier weggelassen werden, aber das ist ein kleines Problem :))
So sah es vorher aus (und so soll es später aussehen):
%----------------------------------------------------------------------------
% COMPILING SORTING
%----------------------------------------------------------------------------
% arara: lualatex: { shell: true, synctex: true }
% arara: biber
% arara: lualatex: { shell: true, synctex: true }
% [arara:] clean: { extensions: [ aux, bbl, bcf, blg, ltjruby, run.xml, synctex.gz, glg, glstex, idx, ilg, ind, log, out, toc ] }
%----------------------------------------------------------------------------
% LAYOUT
%----------------------------------------------------------------------------
\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}
%----------------------------------------------------------------------------
% BIB
%----------------------------------------------------------------------------
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{Asahi.20170220,
journal = {Asahi Shimbun},
entrysubtype = {newspaper},
date = {2017-02-20},
pages = {23},
location = {Pr{\"a}fektur Gunma},
note = {Morgenausgabe},
title = {Onsen m\={a}ku 「ganzo」 o PR},
subtitle = {「Hasshō no ji」 An'naka Isobe onsen ga ibento},
titleaddon = {PR zum \glq Ursprung\grq{} des Onsen-Symbols. Event in den \glq Herkunftsorten\grq{} Annaka und Isobe-Onsen }
}
@article{Baseel.20161208,
author = {Baseel, Casey},
entrysubtype = {newspaper},
title = {Japan's government reconsiders plan to change country's iconic hot spring symbol after backlash},
url = {https://soranews24.com/2016/12/08/japans-government-reconsiders-plan-to-change-countrys-iconic-hot-spring-symbol-after-backlash/},
urldate = {2019-09-01},
journaltitle = {Sora News 24},
date = {2016-12-08}
}
\end{filecontents*}
\begin{filecontents}{customstyles.dbx}
\DeclareDatamodelFields[type=field, datatype=literal]{
journaltitleaddon}
\DeclareDatamodelEntryfields[article,periodical]{
journaltitleaddon}
\DeclareDatamodelEntrytypes{law}
\DeclareDatamodelFields[type=field,datatype=literal]{
lawsubtitle,
lawtitle,
lawtitleaddon,
}
\DeclareDatamodelFields[type=field, datatype=verbatim]{
paragraph,
subparagraph,
article,
}
\DeclareDatamodelEntryfields[law]{
paragraph,
subparagraph,
article,
lawsubtitle,
lawtitle,
lawtitleaddon,
}
\end{filecontents}
\begin{filecontents*}{custombibstring-ngerman.lbx}
\ProvidesFile{custombibstring-ngerman.lbx}[2019/07/26 english with additions for law]
\InheritBibliographyExtras{ngerman}
\DeclareBibliographyStrings{%
inherit = {ngerman},
andothers = {{et al\adddot}{et al\adddot}},
byeditor = {{herausgegeben von}{hg\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}},
}
\end{filecontents*}
\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}
% regarded in custombibstrings
\NewBibliographyString{bydirector,duration,episode,format,fsk,paragraph,subparagraph,article,byproducer,seriesseason}
\DeclareLanguageMapping{ngerman}{custombibstrings-ngerman}
\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}}
% set articles as per IOA
\DeclareListWrapperFormat[article]{parenlocation}{\mkbibparens{#1}}
\DeclareListAlias{parenlocation}{location}
\renewbibmacro*{journal}{%
\ifboolexpr{
(test {\iffieldundef{journaltitle}}
and
test {\iffieldundef{journalsubtitle}})
or
togl {bbx@journalauthor}
}
{\ifboolexpr{
togl {bbx@journalauthor}
and
test {\iffieldequalstr{entrysubtype}{newspaper}}
}
{\printlist{location}}
{}}
{\printtext[journaltitle]{%
\printfield[titlecase]{journaltitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{journalsubtitle}}%
\setunit{\titleaddonpunct}%
\printfield{journaltitleaddon}%
\iffieldequalstr{entrysubtype}{newspaper}
{\setunit{\addspace}%
\printlist[parenlocation]{location}}
{}}}
\renewbibmacro*{issue+date}{%
\usebibmacro{bbx:ifmergeddate}
{}
{\printtext[issuedate]{%
\printdate}}%
\setunit{\addcomma\space}%
\printfield{issue}%
\setunit{\addcomma\space}}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\jourvoldelim}%
\iffieldundef{series}
{}
{\setunit*{\jourserdelim}%
\printfield{series}%
\setunit{\servoldelim}}%
\usebibmacro{volume+number+eid}%
\setunit{\volnumdatedelim}%
\iftoggle{bbx@journalauthor}
{}
{}
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
%----------------------------------------------------------------------------
% 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}
\cite{Asahi.20170220}
\cite{Baseel.20161208}
\printbibliography[heading=bibintoc,title={Literaturverzeichnis}]
\clearpage
\end{document}
Antwort1
In diesem smallcaps
Abschnitt finden wir Folgendes
% 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}}}
Dieser Code definiert dasselbe Makro \mkbibnamefamily
dreimal neu. Nur die letzte Neudefinition hat Gültigkeit. Wenn Sie möchten, dass alle diese Definitionen gleichzeitig gelten, müssen Sie sie zu einer kombinieren. Das könnte mit passieren \ifboolexpr
, wodurch wir beliebige boolesche Ausdrücke auswerten können.
\renewcommand{\mkbibnamefamily}[1]{%
\ifboolexpr{
test {\ifitemannotation{journalauthor}}
or test {\ifitemannotation{director}}
or test {\ifitemannotation{producer}}}
{\mkbibemph{#1}}
{\textsc{#1}}}
Der gesamte Block würde dann lauten
% smallcaps
\newtoggle{bbx@journalauthor}
\newtoggle{bbx@director}
\newtoggle{bbx@producer}
\DeclareEntryOption[boolean]{journalauthor}[true]{%
\settoggle{bbx@journalauthor}{#1}}
\DeclareEntryOption[boolean]{director}[true]{%
\settoggle{bbx@director}{#1}}
\DeclareEntryOption[boolean]{producer}[true]{%
\settoggle{bbx@producer}{#1}}
\renewcommand{\mkbibnamefamily}[1]{%
\ifboolexpr{
test {\ifitemannotation{journalauthor}}
or test {\ifitemannotation{director}}
or test {\ifitemannotation{producer}}}
{\mkbibemph{#1}}
{\textsc{#1}}}
Beachten Sie, dass die Umschalter bbx@director
und zwar bbx@producer
definiert sind, aber im Rest des Dokuments nirgends verwendet werden. Nur bbx@journalauthor
wird später verwendet.
Dies und der Rest Ihres Stils lassen mich daran zweifeln, dass Sie tatsächlichwollendie Definitionen für producer
und director
. Vielleicht möchten Sie also einfach den Code für director
und entfernen producer
und den gesamten Block nur durch ersetzen
\newtoggle{bbx@journalauthor}
\DeclareEntryOption[boolean]{journalauthor}[true]{%
\settoggle{bbx@journalauthor}{#1}}
\renewcommand{\mkbibnamefamily}[1]{%
\ifitemannotation{journalauthor}
{\mkbibemph{#1}}
{\textsc{#1}}}