biblatex:在线 -> “o. J.”当日期 = {}

biblatex:在线 -> “o. J.”当日期 = {}

我的书目有点问题。如果我不在这个字段中写日期,那么只有

()

在参考书目中,主要在@online 引用中。

Tex 文件:

\documentclass[12pt]{scrartcl}                      
\usepackage[T1]{fontenc}            
\usepackage[utf8]{inputenc}         
\usepackage[ngerman]{babel}         
\usepackage{lmodern}            
\usepackage{siunitx}                
\usepackage{url}                    
\usepackage[hidelinks]{hyperref}    

%% Literatur Allgemein
\usepackage[babel,german=quotes]{csquotes}
\usepackage[
style=numeric,                                          
sorting=none,                                           
maxbibnames=3,                                          
]{biblatex} 
\addbibresource{latexlit.bib}

%% Definiert Online Eintrag
\DefineBibliographyStrings{german}{ 
    andothers = {{et\,al\adddot}},                      % et al. an Stelle von u.a.
    urlseen = {Abruf am},                               % Url-Notiz ändern
}

\DeclareBibliographyDriver{online}{% 
    \printnames{author}% 
    \iffieldundef{year} 
    {} 
    { \mkbibparens{% 
            \printfield{year}} 
    } 
    \newunit\newblockpunct 
    \printfield{title}% 
    \setunit*{.\space}% 
    %\newunit\newblock 
    \printfield{url}% 
    \setunit*{.\space}% 
    \printurldate% 
    \finentry
}

\DeclareFieldFormat{url}{\newline URL: \url{#1}}        % URL mit \newline ausgeben

\begin{document}
    Dies ist ein Test \autocite{traeger}.               
    \printbibliography
\end{document}

围兜文件:

@Online{traeger,
    author = {Geldsetzer und Schäfers GmbH},
    title = {WG-Stahlschieber online},
    date = {},
    url = {https://www.geldsetzer.de/stahlschieber/online/itraegerschmal.html},
    urldate =   {2019-04-09}
}

结果:

在此处输入图片描述

如何在 () 中打印“o. J.”?

答案1

这里有两个问题。

在您对@online引用的重新定义中,您有(我添加的评论):

\iffieldundef{year}% if the year of publication is undefined,
    {}             %   do nothing;
    { \mkbibparens{% otherwise, print a pair of parentheses
            \printfield{year}} % with the year inside
    }

意思是:“如果出版年份未定义,则不执行任何操作;否则,打印一对带有年份的括号。”

但是,在您的引用示例中,年份是不是未定义,它只是空的(date = {}),所以它使用第二个选项。

所以你需要

  • 从 bib 文件中删除date = {},以便将其计为“未定义年份”,并且

  • 将“未定义年份”分支更改为您想要的行为 - 通过将上面的代码替换为

\iffieldundef{year}% if the year of publication is undefined,
    { \mkbibparens{% print parentheses
            o. J.}% with "o. J." inside
    }
    { \mkbibparens{% otherwise, print a pair of parentheses
            \printfield{year}}% with the year inside
    }

“如果出版年份未定义,则打印“(o. J.)”;否则,打印一对带有年份的括号。”

相关内容