我正在使用该biblatex-dw
软件包来编制我的参考书目,并且几乎已经根据我的需求(或者说大学的需要)完成了配置。
但是,我仍需要做一些小改动以遵守大学指导方针。具体来说,我需要更改字体布局@incollection
。
总结一下:
, in:
应改为. In:
- 字段的位置
editor
需要title
交换 - 而不是
(Hgg.)
(如果有多个编辑者)或(Hg.)
(如果有单个编辑者)在编辑者名字后面,我希望它总是显示为hg. von <Editors name(s)>
我已经想出了如何使用来实现第一点
\renewbibmacro{in:}{. In:}
。但是,我不确定这是否是在 biblatex 中执行此操作的“正确”方法。
这是MWE:
\documentclass[oneside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{filecontents}
\usepackage[style=authortitle-dw,
namefont=bold,
firstnamefont=bold,
firstfull=true,
citeauthor=normalfont,
editorstringfont=namefont,
autocite=footnote,
addyear=true]{biblatex}
% String modifications
\DefineBibliographyStrings{ngerman}{phdthesis = {phil. Diss.}}
\DefineBibliographyStrings{ngerman}{editors = {Hgg.}}
\DefineBibliographyStrings{german}{urlseen = {Datum des Zugriffs:}}
% Sort bibliography by last name
\DeclareNameAlias{sortname}{last-first}
\AtBeginBibliography{% change name delimiter from "," to "/" in bibliography
\renewcommand*{\multinamedelim}{/}%
\renewcommand*{\finalnamedelim}{/}%
}
\begin{filecontents}{literatur.bib}
@incollection{Metzler-Boheme,
Title = {Bohème},
Author = {Boerner, Maria-Christina},
Booktitle = {Metzler Lexikon Literatur. Begriffe und Definitionen},
Edition = {3., völlig neu bearb. Aufl.},
Editor = {Burdorf, Dieter and Fasbender, Christoph and Moennighoff, Burkhard},
Pages = {95},
Publisher = {Metzler},
Address = {Stuttgart},
Year = {2007}}
\end{filecontents}
\addbibresource[]{literatur.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
在此先非常感谢您的帮助!
答案1
恐怕这本质上是一个相当无聊的问题:这只是一个黑客问题incollection
驱动程序的问题,以及一个相关的宏。在这种情况下,恐怕破解这个词才是关键——我基本上采用了特别指定解决方案来处理本质上特别指定问题。
我唯一想指出的是:(1) 我不会说德语,所以我希望我输入的字符串是正确的;(2) 您的示例中的编辑姓名采用普通字体而非粗体,但您的评论并未引起人们的注意。如果您希望将其采用粗体,请删除两个\renewcommand
s(然后您也可以删除 `\makeatletter ... \makeatother\ “guard”);(3) 任何时候您摆弄这样的驱动程序,都可能会发现一些极端情况(没有编辑器,只有翻译器或其他东西)导致驱动程序崩溃,您必须改进驱动程序。
\documentclass[oneside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{filecontents}
\usepackage[style=authortitle-dw,
namefont=bold,
firstnamefont=bold,
firstfull=true,
citeauthor=normalfont,
editorstringfont=namefont,
autocite=footnote,
addyear=true]{biblatex}
% String modifications -- we add also a modification for "by editor"
\DefineBibliographyStrings{ngerman}{phdthesis = {phil. Diss.}}
\DefineBibliographyStrings{ngerman}{editors = {Hgg.}}
\DefineBibliographyStrings{german}{urlseen = {Datum des Zugriffs:}}
\DefineBibliographyStrings{german}{byeditor = {hg\adddot\ von}}
% The only modification to this is to substitute one piece of punctuation
% and use our new bibmacro
\DeclareBibliographyDriver{incollection}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\ifbool{cbx:idemfull}
{}
{\usebibmacro{author/translator+others}%
\ifnameundef{labelname}
{}
{\setunit{\labelnamepunct}\newblock}}%
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\setunit{\addperiod\space}%
\usebibmacro{in:}%
\usebibmacro{authedxrefcheck}%
\ifbool{cbx:authedxref}
{\booltrue{xrefidem}}
{\boolfalse{xrefidem}}%
\ifbool{bbx:xref}
{\iffieldundef{xref}
{% Code, wenn kein xref vorhanden
\usebibmacro{noxref:incollection}}
{\printtext{\bbx@xref{\thefield{xref}}}% xref
\usebibmacro{xrefvolume}%
\usebibmacro{pages}}}%
{\usebibmacro{noxref:incollection}}% bei xref=false
\usebibmacro{finentry}}
% Here we simply eliminate the original call to print editors, and
% substitute one later -- but we hackily redefine the name font within
% a group to prevent the names being bold
\makeatletter
\renewbibmacro{noxref:incollection}{%
\usebibmacro{maintitle+booktitle}%
\newunit
{\renewcommand\bbx@namefont{}%
\renewcommand\bbx@firstnamefont{}%
\usebibmacro{byeditor+others}}%
\ifbool{bbx:seriesbeforeedition}
{\setunit{\addspace}%
\usebibmacro{series+number}}
{}%
\newunit\newblock
\usebibmacro{edition}%
\usebibmacro{volumes+volume+part}%
\ifbool{bbx:seriesstandard}
{\setunit{\addspace}%
\usebibmacro{series+number}}
{}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\ifbool{bbx:seriesafteryear}
{\setunit{\addspace}%
\usebibmacro{series+number}}
{}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\newunit\newblock
\usebibmacro{pageref}}
\makeatother
% Sort bibliography by last name
\DeclareNameAlias{sortname}{last-first}
\AtBeginBibliography{% change name delimiter from "," to "/" in bibliography
\renewcommand*{\multinamedelim}{/}%
\renewcommand*{\finalnamedelim}{/}%
}
\begin{filecontents}{literatur.bib}
@incollection{Metzler-Boheme,
Title = {Bohème},
Author = {Boerner, Maria-Christina},
Booktitle = {Metzler Lexikon Literatur. Begriffe und Definitionen},
Edition = {3., völlig neu bearb. Aufl.},
Editor = {Burdorf, Dieter and Fasbender, Christoph and Moennighoff, Burkhard},
Pages = {95},
Publisher = {Metzler},
Address = {Stuttgart},
Year = {2007}}
\end{filecontents}
\addbibresource[]{literatur.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}