我需要使用面向德国 DIN1505 的引用样式(请参阅链接了解说明https://de.wikipedia.org/wiki/DIN_1505-2#Aufbau_eines_Zitates抱歉,只有德语版本)。
您可以在这里找到一种书内格式的示例:
施密特,克尔斯滕;海曼,伯恩哈德; Zhou, Ling: 配送质量:仅限期限选择。引自:Ziems, Dietrich (Hrsg.) ;诺伊曼,加比(Hrsg.);因德弗特,卡尔 (Hrsg.) ;申克,迈克尔 (Hrsg.) ;沃舍尔(Wäscher),格哈德(Gerhard)(Hrsg.);马格德堡大学 (Veranst.): 物流质量专业会议 (10. 马格德堡物流会议“来自技术和经济视角的物流”马格德堡 2004 年 11 月 18 日至 19 日)。马格德堡:LOGiSCH,2004,第 51-66 页
您可以注意到,每位编辑的名字后面都有一个缩写(Hrsg.)(Hrsg. = 德语中的 Herausgeber/Editor)。
我理解以下命令定义编辑器字符串:
\DefineBibliographyStrings{german}{
byeditor = {(Hrsg\adddot)},
editor = {(Hrsg\adddot)}
}
使用 biblatex 打印编辑器应该是:
\renewbibmacro*{editor+others}{
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\printnames{editor}%
\setunit{\space}%
\usebibmacro{editor+othersstrg}%
\clearname{editor}}
{}
}
我该如何修改宏,即每次编辑后打印“(Hrsg.)”?我真的很喜欢 biblatex,但有时它太复杂了,所以感谢您对特定格式主题的评论。
答案1
最简单的方法可能是直接在名称格式中插入编辑器字符串。为此,我们必须复制所有相关的名称格式代码,并对其进行修改,使其附加编辑器字符串。
\newrobustcmd*{\editorsep}{\addspace}
\newrobustcmd*{\editorwrap}{\mkbibparens}
\DeclareNameFormat{family-given-ed}{%
\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
\editorsep%
\editorwrap{%
\iffieldundef{editortype}
{\bibstring{editor}}
{\ifbibxstring{\thefield{editortype}}
{\bibstring{\thefield{editortype}}}
{\thefield{editortype}}}}%
\usebibmacro{name:andothers}}
以下是格式family-given-ed
的详细副本,仅添加了从 开始的最后几行。biblatex.def
family-given
\editorsep
然后我们将此格式用于编辑
\DeclareNameAlias{editor}{family-given-ed}
最后,我们需要摆脱在
\renewbibmacro*{editor}{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\printnames{editor}%
\clearname{editor}}
{}}
\renewbibmacro*{editor+others}{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\printnames{editor}%
\clearname{editor}}
{}}
完毕!
数学家协会
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@collection{Katmis2016,
editor = {Katmis, Ferhat and Lauter, Valeria and Nogueira, Flavio S.},
title = {Alternative Modernities},
date = 2001,
publisher = {Duke University Press},
location = {Durham and London},
}
\end{filecontents*}
\usepackage[backend=biber, style=authoryear]{biblatex}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\newrobustcmd*{\editorsep}{\addspace}
\newrobustcmd*{\editorwrap}{\mkbibparens}
\DeclareNameFormat{family-given-ed}{%
\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
\editorsep%
\editorwrap{%
\iffieldundef{editortype}
{\bibstring{editor}}
{\ifbibxstring{\thefield{editortype}}
{\bibstring{\thefield{editortype}}}
{\thefield{editortype}}}}%
\usebibmacro{name:andothers}}
\DeclareNameAlias{editor}{family-given-ed}
\renewbibmacro*{editor}{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\printnames{editor}%
\clearname{editor}}
{}}
\renewbibmacro*{editor+others}{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\printnames{editor}%
\clearname{editor}}
{}}
\begin{document}
Whatever \cite{Katmis2016,gaonkar}
\printbibliography
\end{document}
然后给出
Gaonkar,Dilip Parameshwar(编辑)。另类现代性。达勒姆和伦敦:杜克大学出版社。ISBN:0-822-32714-7。
Katmis, Ferhat (编辑)、Lauter, Valeria (编辑) 和 Nogueira, Flavio S. (编辑)。另类现代性。达勒姆和伦敦:杜克大学出版社。