使用 biblatex (@inbook) 更改编辑器的位置

使用 biblatex (@inbook) 更改编辑器的位置

我希望我的引用如下:

克莱恩,迈克尔;尼尔森,米其林:巴黎公社,1871 年。收录于:内斯,伊曼纽尔;赫茨,乔纳 (Hgg.):《国际革命与抗议百科全书》。1500 年至今,第 5 册。奇切斯特 2009 年:2610-2613。

目前它看起来是这样的:

Kline, Michael;Nilsen, Micheline:巴黎公社,1871 年。收录于:《国际革命与抗议百科全书》。1500 年至今。Ness, Immanuel;Herz, Jonah (Hgg.)。Bd. 5。奇切斯特,2009 年,2610-2613。

因此需要改变三件事:

  1. 最重要的是,编辑(Hg./Hgg.)必须位于“In:”和书名之间。

  2. 年份和页码之间应该有一个冒号,而不是逗号

  3. 在卷 (Bd. 5) 之前,我想有一个逗号,没有要点。

我可以在我的序言中做到这一点吗?

如果我的参考书目中有以下内容:

\begin{filecontents}{test.bib}
@inbook{Kline:Commune,
        author = {Kline, Michael and Nilsen, Micheline},
        title = {Paris Commune, 1871},
        editor = {Ness, Immanuel and Herz, Jonah},
        booktitle = {The International Encyclopedia of Revolution and Protest},
        booksubtitle = {1500 to the Present},
        volume = {5},
        pages = {2610--2613},
        date = {2009},
        location = {Chichester},
        }
\end{filecontents}



\documentclass[11pt, a4paper]{scrreprt} %Inhaltsverzeichnis andere Schrift.. bei report normal
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

%=============BIBLIOGRAPHIE, ZITIERWEISE=================== %
\usepackage[babel,german=guillemets]{csquotes}
\usepackage[%
style=alphabetic,
style=verbose-ibid,
labeldate,
dashed=false, %bei mehreren Werken desselben Autors kein Strich
backend=bibtex8,
idemtracker=false,
ibidtracker=constrict,
]{biblatex}

\renewbibmacro*{byeditor+others}{% %Hg. bzw Hgg. in Klammern hinter Herausgeber, statt davor
        \ifnameundef{editor}
        {}
        {\printnames[byeditor]{editor}%
                \setunit{\addspace}%
                \usebibmacro{editor+othersstrg}%
                \clearname{editor}%
                \newunit}%
        \usebibmacro{byeditorx}%
        \usebibmacro{bytranslator+others}}

\DefineBibliographyStrings{german}{%
        andothers = {et\ al\adddot}, %et al. statt u.a.
        editor = {\mkbibparens{Hg\adddot}}, %Hg. statt Hrsg.
        editors = {\mkbibparens{Hgg\adddot}}, %Hgg. plural
        byeditor = {\mkbibparens {Hg\adddot}},
}
\DeclareFieldFormat{postnote}{#1} %unterdrückt Präfix S.
\DeclareFieldFormat{multipostnote}{#1} %unterdrückt Präfix S.
\DeclareNameAlias{default}{last-first} %Autoren immer Nachname, Vorname sortieren
\renewbibmacro*{cite:short}{%
        \printnames{labelname}%
        \setunit*{\nameyeardelim}%
        \iffieldundef{labelyear}
        {}
        {\printtext[\addcolon]{\printtext[bibhyperlink]{%
                                \printfield{labelyear}%
                                \printfield{extrayear}}}}}
%\DeclareNameFormat{default}{%
%\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}%
%\usebibmacro{name:andothers}}
\renewcommand{\multinamedelim}{\addsemicolon\space} %Semikolon zum trennen der Autoren
\renewcommand{\finalnamedelim}{\addsemicolon\space}
\renewcommand{\labelnamepunct}{\addcolon\space} %Zwischen Autor und Titel Doppelpunkt, kein Punkt
\renewcommand{\postnotedelim}{\addcolon\space} %Zwischen Jahrzahl und Seitenzahl Doppelpunkt, kein Komma
\renewcommand{\nametitledelim}{\addspace}
\renewbibmacro*{publisher+location+date}{% %Zwischen Ort und Jahr kein Komma
        \printlist{location}%
        {\setunit*{\addspace}}
        \usebibmacro{date}%
        \newunit}

\DeclareFieldFormat[inbook]{title}{#1} %Titel nicht in Anführungszeichen
\DeclareFieldFormat[inbook]{pages}{#1}% S. vor Seitenangabe entfernen
\DeclareFieldFormat[article]{title}{#1} %Titel nicht in Anführungszeichen
\DeclareFieldFormat[article]{pages}{#1}% S. vor Seitenangabe entfernen

%\renewcommand{\nametitledelim}{\space}

\bibliography{test} %name des .bib-Files

% Titel nicht schräg
\DeclareFieldFormat{title}{#1}
\DeclareFieldFormat{citetitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat{maintitle}{#1}

% Journal Titel nicht schräg
\DeclareFieldFormat{journaltitle}{#1}

%=============ENDE BIBLIOGRAPHIE, ZITIERWEISE=================== %
\begin{document}
Test\footcite{Kline:Commune}
\end{document}

有人能帮我吗?那就太好了 :)

它现在的样子如下: 在此处输入图片描述

答案1

xpatch这是使用包及其命令的解决方案\xpatchbibdriver。如果您想要使用 incollection 条目类型,则应以模拟方式修补“ncollection”bib 驱动程序。

\documentclass[11pt, a4paper]{scrreprt} %Inhaltsverzeichnis andere Schrift.. bei report normal
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{filecontents}
\begin{filecontents}{test.bib}
@inbook{Kline:Commune,
        author = {Kline, Michael and Nilsen, Micheline},
        title = {Paris Commune, 1871},
        editor = {Ness, Immanuel and Herz, Jonah},
        booktitle = {The International Encyclopedia of Revolution and Protest},
        booksubtitle = {1500 to the Present},
        volume = {5},
        pages = {2610--2613},
        date = {2009},
        location = {Chichester},
        }
\end{filecontents}

%=============BIBLIOGRAPHIE, ZITIERWEISE=================== %
\usepackage[babel,german=guillemets]{csquotes}
\usepackage[%
style=alphabetic,
style=verbose-ibid,
labeldate,
dashed=false, %bei mehreren Werken desselben Autors kein Strich
backend=biber, %bibtex8,
idemtracker=false,
ibidtracker=constrict,
]{biblatex}
\renewbibmacro*{byeditor+others}{% %Hg. bzw Hgg. in Klammern hinter Herausgeber, statt davor
 \ifnameundef{editor}
 {}
 {\printnames[byeditor]{editor}%
 \setunit{\addspace}%
 \usebibmacro{editor+othersstrg}%
 \clearname{editor}%
 \newunit}%
 \usebibmacro{byeditorx}%
 \usebibmacro{bytranslator+others}}

\DefineBibliographyStrings{german}{%
 andothers = {et\ al\adddot}, %et al. statt u.a.
 editor = {\mkbibparens{Hg\adddot}}, %Hg. statt Hrsg.
 editors = {\mkbibparens{Hgg\adddot}}, %Hgg. plural
 byeditor = {\mkbibparens {Hg\adddot}},
}
\DeclareFieldFormat{postnote}{#1} %unterdrückt Präfix S.
\DeclareFieldFormat{multipostnote}{#1} %unterdrückt Präfix S.
\DeclareNameAlias{default}{last-first} %Autoren immer Nachname, Vorname sortieren
\renewbibmacro*{cite:short}{%
 \printnames{labelname}%
 \setunit*{\nameyeardelim}%
 \iffieldundef{labelyear}
 {}
 {\printtext[\addcolon]{\printtext[bibhyperlink]{%
 \printfield{labelyear}%
 \printfield{extrayear}}}}}
%\DeclareNameFormat{default}{%
%\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}%
%\usebibmacro{name:andothers}}
\renewcommand{\multinamedelim}{\addsemicolon\space} %Semikolon zum trennen der Autoren
\renewcommand{\finalnamedelim}{\addsemicolon\space}
\renewcommand{\labelnamepunct}{\addcolon\space} %Zwischen Autor und Titel Doppelpunkt, kein Punkt
\renewcommand{\postnotedelim}{\addcolon\space} %Zwischen Jahrzahl und Seitenzahl Doppelpunkt, kein Komma
\renewcommand{\nametitledelim}{\addspace}
\renewbibmacro*{publisher+location+date}{% %Zwischen Ort und Jahr kein Komma
 \printlist{location}%
 {\setunit*{\addspace}}
 \usebibmacro{date}%
 \newunit}

\DeclareFieldFormat[inbook]{title}{#1} %Titel nicht in Anführungszeichen
\DeclareFieldFormat[inbook]{pages}{#1}% S. vor Seitenangabe entfernen
\DeclareFieldFormat[article]{title}{#1} %Titel nicht in Anführungszeichen
\DeclareFieldFormat[article]{pages}{#1}% S. vor Seitenangabe entfernen

%%\renewcommand{\nametitledelim}{\space}

\addbibresource{test.bib} %name des .bib-Files

% Titel nicht schräg
\DeclareFieldFormat{title}{#1}
\DeclareFieldFormat{citetitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat{maintitle}{#1}

% Journal Titel nicht schräg
\DeclareFieldFormat{journaltitle}{#1}

\usepackage{xpatch}
\xpatchbibdriver{inbook}{%
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
}%
  {%
  \usebibmacro{byeditor+others}%
  \setunit{\addcolon\space}\newblock
  \usebibmacro{maintitle+booktitle}%
  }%
  {}{}%

\xpatchbibdriver{inbook}{%
 \newunit\newblock
 \usebibmacro{chapter+pages}%
}%
{%
\addcolon\space
 \usebibmacro{chapter+pages}%
}%
{}{}

\xpatchbibdriver{inbook}{%
  \newunit
  \iffieldundef{maintitle}
}%
{%
  \setunit{\addcomma\space}
  \iffieldundef{maintitle}
}%
{}{}
%=============ENDE BIBLIOGRAPHIE, ZITIERWEISE=================== %
\begin{document}
Test\footcite{Kline:Commune}

\printbibliography
\end{document}

在此处输入图片描述

答案2

这重新定义了@incollection格式。它只解决了第 1 点和第 2 点,因为与 Bernard 不同,我没有足够的信心解决第 3 点。(我担心我的解决方案会对其他条目产生不良影响。)

Bernard 的可能更好,但我已经解决了这个问题,所以我还是发布了:

\begin{filecontents}{\jobname.bib}
@incollection{Kline:Commune,
        author = {Kline, Michael and Nilsen, Micheline},
        title = {Paris Commune, 1871},
        editor = {Ness, Immanuel and Herz, Jonah},
        booktitle = {The International Encyclopedia of Revolution and Protest},
        booksubtitle = {1500 to the Present},
        volume = {5},
        pages = {2610--2613},
        date = {2009},
        location = {Chichester},
        }
\end{filecontents}



\documentclass[11pt, a4paper]{scrreprt} %Inhaltsverzeichnis andere Schrift.. bei report normal
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[babel,german=guillemets]{csquotes}
\usepackage[%
  style=alphabetic,
  style=verbose-ibid,
  labeldate,
  dashed=false, %bei mehreren Werken desselben Autors kein Strich
  backend=bibtex8,
  idemtracker=false,
  ibidtracker=constrict,
  ]{biblatex}

\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\renewbibmacro*{byeditor+others}{% %Hg. bzw Hgg. in Klammern hinter Herausgeber, statt davor
        \ifnameundef{editor}
        {}
        {\printnames[byeditor]{editor}%
                \setunit{\addspace}%
                \usebibmacro{editor+othersstrg}%
                \clearname{editor}%
                \newunit}%
        \usebibmacro{byeditorx}%
        \usebibmacro{bytranslator+others}}

\DefineBibliographyStrings{german}{%
        andothers = {et\ al\adddot}, %et al. statt u.a.
        editor = {\mkbibparens{Hg\adddot}}, %Hg. statt Hrsg.
        editors = {\mkbibparens{Hgg\adddot}}, %Hgg. plural
        byeditor = {\mkbibparens {Hg\adddot}},
}
\DeclareFieldFormat{postnote}{#1} %unterdrückt Präfix S.
\DeclareFieldFormat{multipostnote}{#1} %unterdrückt Präfix S.
\DeclareNameAlias{default}{last-first} %Autoren immer Nachname, Vorname sortieren
\renewbibmacro*{cite:short}{%
        \printnames{labelname}%
        \setunit*{\nameyeardelim}%
        \iffieldundef{labelyear}
        {}
        {\printtext[\addcolon]{\printtext[bibhyperlink]{%
                                \printfield{labelyear}%
                                \printfield{extrayear}}}}}
\renewcommand{\multinamedelim}{\addsemicolon\space} %Semikolon zum trennen der Autoren
\renewcommand{\finalnamedelim}{\addsemicolon\space}
\renewcommand{\labelnamepunct}{\addcolon\space} %Zwischen Autor und Titel Doppelpunkt, kein Punkt
\renewcommand{\postnotedelim}{\addcolon\space} %Zwischen Jahrzahl und Seitenzahl Doppelpunkt, kein Komma
\renewcommand{\nametitledelim}{\addspace}
\renewcommand{\bibpagespunct}{\addcolon\space}
\renewbibmacro*{publisher+location+date}{% %Zwischen Ort und Jahr kein Komma
        \printlist{location}%
        {\setunit*{\addspace}}
        \usebibmacro{date}%
        \newunit}

\DeclareFieldFormat[incollection]{title}{#1} %Titel nicht in Anführungszeichen
\DeclareFieldFormat[incollection]{pages}{#1}% S. vor Seitenangabe entfernen

\bibliography{\jobname} %name des .bib-Files

\DeclareFieldFormat{title}{#1}
\DeclareFieldFormat{citetitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat{maintitle}{#1}


\begin{document}
Test\footcite{Kline:Commune}

\fullcite{Kline:Commune}

\printbibliography
\end{document}

相关内容