我已经对我的书目风格做了一些改进。但有一件事我搞不清楚。
我想在最后一位作者后面使用冒号@article
而不是逗号。这似乎适用于所有其他条目类型。此外,作者后面没有冒号@online
。
梅威瑟:
\documentclass[11pt, a4paper]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[left=27.5mm,right=16mm,top=30mm,bottom=30mm]{geometry}
\usepackage{filecontents}
\begin{filecontents}{BA.bib}
@online{polymer2020,
title = {Polymer},
author = {{N. N.}},
journaltitle = {Wikipedia},
url = {https://de.wikipedia.org/wiki/Polymer},
urldate = {2020-02-16},
langid = {german}
}
@thesis{kaddar2010,
title = {Die generative Fertigung mittels Laser-Sintern: Scanstrategien, Einfl\"usse verschiedener Prozessparameter auf die mechanischen und optischen Eigenschaften beim LS von Thermoplasten und deren Nachbearbeitungsm\"oglichkeiten},
author = {Kaddar, Wesam},
date = {2010},
institution = {{Universit\"at Duisburg-Essen}},
location = {{Duisburg}},
langid = {german},
type = {Dissertation}
}
@incollection{hans2020,
title = {Ein {{Qualit\"atsicherungskonzept}}},
booktitle = {Additive {{Fertigung}} von {{Bauteilen}}},
author = {Hans, Peter and Werner, Meier},
editor = {Furman, Bernd and Eder, Max},
date = {2020},
publisher = {{Springer}},
location = {{Berlin}}
}
@article{drummer2010,
title = {Untersuchung der Materialalterung bei pulverbasierten Schichtbauverfahren},
author = {Drummer, Dietmar and K\"uhnlein, Florian and Rietzel, Dom and H\"udler, Gerrit},
date = {2010},
journaltitle = {RTejournal - Forum f\"ur Rapid Technologie},
volume = {7},
langid = {german},
number = {1}
}
\end{filecontents}
\usepackage[backend=biber, style=ieee, citestyle=numeric, sorting=nyt, autocite=inline, isbn=false, dashed=false, url=false]{biblatex}
\addbibresource{BA.bib}
\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{default}{family-given}
\DeclareFieldFormat[book,inbook,incollection,inproceedings]{series}{#1}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldFormat*[online]{title}{\textit{#1}}
\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat{journaltitle}{#1}
\DeclareFieldFormat[article]{title}{\textit{#1}\addperiod}
\DeclareFieldFormat[thesis]{title}{\textit{#1}\addperiod}
\renewcommand{\mkbibnamefamily}[1]{\textsc{#1}}
\renewcommand{\multinamedelim}{\addsemicolon\space}
\renewcommand{\finalnamedelim}{\addsemicolon\space}
\renewcommand*{\labelnamepunct}{\addcolon\addspace}
\renewbibmacro*{publisher+location+date}{%
\printunit{\addperiod\space}%
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcolon\space}}%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}
\DeclareFieldFormat[online]{date}{\mkbibparens{#1}}
\usepackage{xpatch}
\xpatchbibdriver{online}
{\printtext[parens]{\usebibmacro{date}}}
{\usebibmacro{date}}
{}{}
\xpatchbibdriver{online}
{\newunit\newblock
\usebibmacro{url+urldate}}
{\setunit{\addperiod\space}\newblock
\usebibmacro{url+urldate}}
{}{}
\begin{document}
\autocite{polymer2020} \autocite{hans2020} \autocite{kaddar2010} \autocite{drummer2010}
\printbibliography
\end{document}
答案1
biblatex-ieee
这里的驱动程序代码有点不一致ieee.bbx
。
\setunit{\labelnamepunct}\newblock
作者和标题之间。(\labelnamepunct
最近被弃用了,现在人们会说\setunit{\printdelim{nametitledelim}}\newblock
改为。)但@article
驱动程序只有\newunit
,而@online
驱动程序有\setunit{\adddot\addspace}%
改为。我理解@online
驱动程序需要有所不同,因为 IEEE 希望在线文档使用句号,而其他所有类型都使用逗号。但我不知道为什么@article
不同。
您必须修补驱动程序@article
并@online
在此处获取冒号。
\xpatchbibdriver{article}
{\usebibmacro{author/translator+others}%
\newunit}
{\usebibmacro{author/translator+others}%
\printunit{\labelnamepunct}\newblock}
{}{}
补丁@online
可以与已有的补丁结合使用
\xpatchbibdriver{online}
{\printtext[parens]{\usebibmacro{date}}%
\setunit{\adddot\addspace}}
{\usebibmacro{date}%
\printunit{\labelnamepunct}\newblock}
{}{}
请注意,通常我不会使用\labelnamepunct
。现代方法是\printdelim{nametitledelim}
,但由于ieee.bbx
仍然使用\labelnamepunct
弃用的命令,因此在这里更容易。
在全
\documentclass[11pt, a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[backend=biber, bibstyle=ieee, citestyle=numeric, sorting=nyt,
autocite=inline,
dashed=false, isbn=false,url=false]{biblatex}
\DeclareNameAlias{default}{family-given}
\DeclareNameAlias{sortname}{default}
\renewcommand{\mkbibnamefamily}[1]{\textsc{#1}}
\DeclareDelimFormat{multinamedelim}{\addsemicolon\space}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}
\renewcommand*{\labelnamepunct}{\addcolon\addspace}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldFormat*[online]{title}{\textit{#1}}
\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat{journaltitle}{#1}
\DeclareFieldFormat[article]{title}{\textit{#1}\addperiod}
\DeclareFieldFormat[thesis]{title}{\textit{#1}\addperiod}
\DeclareFieldFormat[book,inbook,incollection,inproceedings]{series}{#1}
\renewbibmacro*{publisher+location+date}{%
\printunit{\addperiod\space}%
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcolon\space}}%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}
\DeclareFieldFormat[online]{date}{\mkbibparens{#1}}
\usepackage{xpatch}
\xpatchbibdriver{article}
{\usebibmacro{author/translator+others}%
\newunit}
{\usebibmacro{author/translator+others}%
\printunit{\labelnamepunct}\newblock}
{}{}
\xpatchbibdriver{online}
{\printtext[parens]{\usebibmacro{date}}%
\setunit{\adddot\addspace}}
{\usebibmacro{date}%
\printunit{\labelnamepunct}\newblock}
{}{}
\xpatchbibdriver{online}
{\newunit\newblock
\usebibmacro{url+urldate}}
{\setunit{\addperiod\space}\newblock
\usebibmacro{url+urldate}}
{}{}
\begin{filecontents}{\jobname.bib}
@online{polymer2020,
title = {Polymer},
author = {{N.\,N.}},
journaltitle = {Wikipedia},
url = {https://de.wikipedia.org/wiki/Polymer},
urldate = {2020-02-16},
langid = {ngerman}
}
@thesis{kaddar2010,
title = {Die generative Fertigung mittels Laser-Sintern:
Scanstrategien, Einflüsse verschiedener Prozessparameter
auf die mechanischen und optischen Eigenschaften beim
LS von Thermoplasten und deren Nachbearbeitungsmöglichkeiten},
author = {Kaddar, Wesam},
date = {2010},
institution = {Universität Duisburg-Essen},
location = {Duisburg},
langid = {ngerman},
type = {Dissertation},
}
@incollection{hans2020,
title = {Ein Qualitätsicherungskonzept},
booktitle = {Additive Fertigung von Bauteilen},
author = {Hans, Peter and Werner, Meier},
editor = {Furman, Bernd and Eder, Max},
date = {2020},
publisher = {Springer},
location = {Berlin},
}
@article{drummer2010,
title = {Untersuchung der Materialalterung bei pulverbasierten
Schichtbauverfahren},
author = {Drummer, Dietmar and Kühnlein, Florian and Rietzel, Dom and Hüdler, Gerrit},
date = {2010},
journaltitle = {RTejournal - Forum für Rapid Technologie},
volume = {7},
langid = {ngerman},
number = {1},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\autocite{polymer2020,hans2020,kaddar2010,drummer2010}
\printbibliography
\end{document}
我想重复一下评论中我的看法。
您正在申请很多IEEE 样式的修改,所以我想知道是否更容易从不同的样式开始,例如,numeric
或者甚至ext-numeric
:biblatex-ieee
是专门为复制 IEEE 样式而编写的,可定制性是次要的重点(最好)。另一方面,标准样式以及我的样式biblatex-ext
编写捆绑包时充分考虑了可定制性。