![在 biblatex 中更改作者和位置分隔符](https://linux22.com/image/399782/%E5%9C%A8%20biblatex%20%E4%B8%AD%E6%9B%B4%E6%94%B9%E4%BD%9C%E8%80%85%E5%92%8C%E4%BD%8D%E7%BD%AE%E5%88%86%E9%9A%94%E7%AC%A6.png)
我正在尝试将以下分隔符从句点更改为逗号:
Tex 文件:
\documentclass[paper=A4,12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{setspace}
\usepackage{lmodern}
\usepackage[left=25mm, right=50mm, top=25mm, bottom=20mm]{geometry}
\setlength{\parindent}{0pt}
\onehalfspacing
\usepackage[
backend=biber,
style=ext-verbose-inote,
autocite=footnote,
sortlocale=de_DE,
innamebeforetitle=true,
natbib=true,
url=false,
doi=true,
eprint=false
]{biblatex}
\addbibresource{literatur.bib}
\DeclareFieldFormat[incollection]{title}{#1}
\DeclareFieldFormat[incollection]{booktitle}{#1}
\renewcommand{\multinamedelim}[0]{ / }
\renewcommand{\finalnamedelim}[0]{ / }
\DeclareNameAlias{sortname}{last-first}
\DeclareNameAlias{default}{last-first}
%\usepackage{xpatch}
%\def\dopatchbibdrivereditorcomma#1{%
% \xpatchbibdriver{#1}
% {\usebibmacro{maintitle+booktitle}%
% \newunit\newblock}
% {\usebibmacro{maintitle+booktitle}%
% \setunit{\addcomma\space}\newblock}
% {}
% {\typeout{failed to patch driver for type #1}}}
%\forcsvlist{\dopatchbibdrivereditorcomma}{inbook,incollection,inproceedings}
\begin{document}
\begin{titlepage}
\begin{spacing}{1}
Some Text
\end{spacing}
\end{titlepage}
\newpage
\tableofcontents
\addtocontents{toc}{\protect\thispagestyle{empty}}
\newpage
\setcounter{page}{1}
\section{Erster Abschnitt}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua\Footcite[Vgl.][]{dbwnf}. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua\Footcite[Vgl.][]{dbwnf}. .. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
\printbibliography[keyword=pl, title={Primärliteratur}]
\end{document}
围兜文件:
@book{test,
Author = {Test},
Booktitle = {test},
Date-Added = {2019-08-04 15:48:27 +0200},
Date-Modified = {2019-08-04 15:48:37 +0200},
Publisher = {test},
Title = {test},
Year = {2019}}
@incollection{dbwnf,
Address = {M{\"u}nchen},
Author = {Dietrich Bonhoeffer},
Booktitle = {Dietrich Bonnhoeffer Werke},
Date-Added = {2019-08-04 14:01:21 +0200},
Date-Modified = {2019-08-04 14:54:00 +0200},
Editor = {Kuske, Martin and T{\"o}dt, Ilse},
Keywords = {pl},
Title = {Nachfolge},
Year = {1989}}
我已检查过biblatex-ext
文档但无法识别相关的分隔符以及如何更改它们。
答案1
作者(或编辑)姓名和标题之间的分隔符称为nametitledelim
。可以使用以下方式更改
\DeclareDelimFormat[bib]{nametitledelim}{\addcomma\space}
位置前的分隔符没有特殊名称。biblatex
只是打印通常的\newunitpunct
。我们可以在此处修改ext-standard
的pubinstorg+location+date
宏,以在location
\renewbibmacro*{pubinstorg+location+date}[1]{%
\setunit{\addcomma\space}%
\printlist{location}%
\iflistundef{#1}
{\setunit*{\locdatedelim}}
{\setunit*{\locpubdelim}}%
\printlist{#1}%
\setunit*{\pubdatedelim}%
\usebibmacro{date}%
\newunit}
然而,在我看来,除了“in:”之前,几乎所有地方都希望使用逗号,因此也许以下想法(其中\newunitpunct
设置为逗号并且我们只在“in:”之前添加一个句号)更适合您。
\documentclass[paper=A4,12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage[
backend=biber,
style=ext-verbose-inote,
autocite=footnote,
innamebeforetitle=true,
natbib=true,
url=false,
doi=true,
eprint=false
]{biblatex}
\renewcommand*{\newunitpunct}{\addcomma\space}
\renewbibmacro*{in:}{%
\setunit{\addperiod\space}%
\printtext{%
\bibstring{in}\intitlepunct}}
\DeclareNameAlias{default}{family-given}
\DeclareNameAlias{sortname}{default}
\DeclareDelimFormat{multinamedelim}{\addspace\slash\space}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}
\DeclareFieldFormat[incollection]{title}{#1}
\DeclareFieldFormat[incollection]{booktitle}{#1}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{test,
Author = {Test},
Booktitle = {test},
Publisher = {test},
Title = {test},
Year = {2019},
}
@incollection{dbwnf,
Address = {München},
Author = {Dietrich Bonhoeffer},
Booktitle = {Dietrich Bonnhoeffer Werke},
Editor = {Kuske, Martin and Tödt, Ilse},
Keywords = {pl},
Title = {Nachfolge},
Year = {1989},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem\Footcite[Vgl.][]{dbwnf}.
Ipsum\Footcite[Vgl.][]{test}.
\printbibliography[keyword=pl, title={Primärliteratur}]
\end{document}
无论如何,您可能希望看看我在上面的 MWE 中应用的代码的轻微现代化修改。