1

I used to use an entry subtype for article (called newspaper), to make some amendments to the bibliography, precisely, I wanted the newspaper to appear italic, if there's no author. However, this seems not to be regarded when compiling anymore and at first I thought it was due to my custombibstyles, but the same problem occured when I removed them. (Also I am not sure why the japanese parantheses are omitted here, but that's a minor problem :))

This is what it used to look like (and what I wish it to look like): *here* *here*

This is what it looks like now: *here* MWE:

    %----------------------------------------------------------------------------
%   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}
1

In the smallcaps section we find the following

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

This code redefines the same macro \mkbibnamefamily three times. Only the last redefinition will prevail. If you want all those definitions to apply at the same time you would have to combine them into one. That could happen with \ifboolexpr, which lets us evaluate arbitrary boolean expressions.

\renewcommand{\mkbibnamefamily}[1]{%
  \ifboolexpr{
       test {\ifitemannotation{journalauthor}}
    or test {\ifitemannotation{director}}
    or test {\ifitemannotation{producer}}}
    {\mkbibemph{#1}}
    {\textsc{#1}}}

The whole block would then read

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

Note that the toggles bbx@director and bbx@producer are defined, but used nowhere in the rest of the document. Only bbx@journalauthor is used later on.

This and the rest of your style makes me doubt that you actually want the definitions for producer and director. So maybe you just want to remove the code for director and producer and replace the whole block with only

\newtoggle{bbx@journalauthor}
\DeclareEntryOption[boolean]{journalauthor}[true]{%
  \settoggle{bbx@journalauthor}{#1}}

\renewcommand{\mkbibnamefamily}[1]{%
  \ifitemannotation{journalauthor}
    {\mkbibemph{#1}}
    {\textsc{#1}}}
  • Thank you very much for clarifying! I thought they would be regarded in order, however your explanation made sense and helped me a lot! :) – user168390 Aug 14 at 17:44
  • 1
    @user168390 In a way they are regarded in order, but \renewcommand overwrites the previous definition, so only the last definition is active. – moewe Aug 14 at 17:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.