我的书目有点问题。如果我不在这个字段中写日期,那么只有
()
在参考书目中,主要在@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.)”;否则,打印一对带有年份的括号。”