有一个类似的问题(biblatex-verbose:版本作为年份前面的上标) 已经有了答案,但解决方案对我没有帮助。我需要参考书目中一个相当奇怪的顺序:
@Book 为:姓氏,名字(版本年份):标题. 地点: 出版商。
@InBook 作为:姓氏,名字(版本年份):“标题。”在:书、名字 [编辑] 姓氏 [编辑](Hrsg.)地点:出版商、页数。
我真的希望能解决这个问题。如果需要更多信息,请随时询问!
编辑:我的序言如下
\documentclass[a4paper,12pt,numbers=endperiod]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc}
\usepackage[russian,ngerman]{babel}
\usepackage{tipa}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{caption}
\usepackage[footskip=1cm]{geometry}
\usepackage[footnote,printonlyused]{acronym}
\usepackage{filecontents}
\usepackage{lipsum}
\usepackage{csquotes}
\usepackage{CJKutf8}
\usepackage[backend=biber,style=authoryear,sorting=nyt]{biblatex}
\addbibresource{graphematik.bib}
\DefineBibliographyStrings{ngerman}{references={Bibliographie}}
\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\printnames[byeditor]{editor}%
\setunit{\addspace}%
\usebibmacro{byeditor+othersstrg}%
\clearname{editor}%
\newunit}%
\usebibmacro{byeditorx}%
\usebibmacro{bytranslator+others}}
\usepackage{xpatch}
\xpatchbibmacro{byeditor+othersstrg}{\printtext}{\printtext[parens]}{}{}
\renewcommand*{\multinamedelim}{/}
\renewcommand*{\finalnamedelim}{/}
\setkomafont{disposition}{\mdseries\rmfamily}
\onehalfspacing
\captionsetup[table]{skip=5pt,font=footnotesize}
\deffootnote[1.0em]{1.0em}{1.0em}
{\textsuperscript{\thefootnotemark}\,\enskip}
\renewcommand{\labelnamepunct}{\addcolon\space}
\renewcommand*{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\DeclareFieldFormat{edition}{\ifinteger{#1}{\textsuperscript{#1}}{#1\isdot\setunit{\addcomma\space}}}
\renewcommand{\baselinestretch}{1.5}
这一切给了我:(问题高炉)
@书籍:Altmann,Hans / Ute Ziegenhain(2010):语音学、音系学和字形学考试。工作技术 – 休假 – 解决方案。3. 哥廷根:Vandenhoeck & Ruprecht。--> 3 应该位于 2010 之前(在括号内)(它已是上标)
@InBook:Bochmann,Klaus(1989):“罗马尼亚语:语言规范和标准语言”。在:罗马语言学词典。第三乐队。单独的罗马语言和复兴时期的语言范围,以对应罗马尼亚语、达尔马提亚语/伊斯特罗姆语、弗拉明戈语、拉脱维亚语、联邦罗马尼亚语。迈克尔·梅策尔丁 / 冈特·霍尔图斯 / 克里斯蒂安·施密特 (時間限制。冯)。图宾根:尼迈耶**,**年代。239–251. --> 应该只说 (Hrsg.),最后一个逗号应该是冒号,并且“S.”必须去掉
@文章:Borgwaldt,Susanne R./Frauke**,**M. Hellwig/Annette**,**MB de Groot (2004):“五种语言中的词首熵。字母到声音,以及声音到字母”。在:书面语言和读写能力 7**,**年代。165–184。--> 就像之前一样,最后一个逗号必须是冒号,并且“S.”必须保留。此外,我刚刚注意到,除第一个作者外,所有作者的姓氏和名字之间的逗号都丢失了,这当然是不可取的。
我真的希望这会有所帮助并且不会造成太多混乱!
答案1
样式authoryear
使用不同的宏来打印年份,所以我们必须修改其他宏
\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iffieldnum{edition}
{\printfield[superedition]{edition}%
\global\clearfield{edition}}
{}%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}}}}
应该足够了。如果版本是数字,则会在上面标中打印版本。代码适用于标准mergedate=compact
设置,对于其他mergedate
设置,需要进行调整。
页面问题可以通过以下方式解决
\renewcommand*{\bibpagespunct}{\addcolon\space}
\DeclareFieldFormat{pages}{#1}
类似于你对 所做的postnote
。
可以使用以下方法更改“Hrsg.”字符串
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\printnames[byeditor]{editor}%
\setunit{\addspace}%
\usebibmacro{byeditor+othersstrg}%
\clearname{editor}%
\newunit}%
\usebibmacro{byeditorx}%
\usebibmacro{bytranslator+others}}
\renewbibmacro*{byeditor+othersstrg}{\usebibmacro{editor+othersstrg}}
\renewbibmacro*{bytranslator+othersstrg}{\usebibmacro{translator+othersstrg}}
\renewbibmacro*{bytypestrg}[2]{%
\iffieldundef{#1type}
{\bibstring{#2}}
{\ifbibxstring{\thefield{#1type}}
{\bibstring{\thefield{#1type}}}
{\printtext{\thefield{#1type}}}}}
那么你就不需要代码了xpatch
。
在 MWE 中我也使用了\DeclareNameAlias{sortname}{family-given}
上述评论。
\documentclass[a4paper,12pt,numbers=endperiod]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,style=authoryear,sorting=nyt]{biblatex}
\addbibresource{biblatex-examples.bib}
\DefineBibliographyStrings{ngerman}{references={Bibliographie}}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\printnames[byeditor]{editor}%
\setunit{\addspace}%
\usebibmacro{byeditor+othersstrg}%
\clearname{editor}%
\newunit}%
\usebibmacro{byeditorx}%
\usebibmacro{bytranslator+others}}
\renewbibmacro*{byeditor+othersstrg}{\usebibmacro{editor+othersstrg}}
\renewbibmacro*{bytranslator+othersstrg}{\usebibmacro{translator+othersstrg}}
\renewbibmacro*{bytypestrg}[2]{%
\iffieldundef{#1type}
{\bibstring{#2}}
{\ifbibxstring{\thefield{#1type}}
{\bibstring{\thefield{#1type}}}
{\printtext{\thefield{#1type}}}}}
\DeclareDelimFormat{multinamedelim}{/}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}
\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\space}
\renewcommand*{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iffieldnum{edition}
{\printfield[superedition]{edition}%
\global\clearfield{edition}}
{}%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}}}}
\renewcommand*{\bibpagespunct}{\addcolon\space}
\DeclareFieldFormat{pages}{#1}
\DeclareNameAlias{sortname}{family-given}
\begin{document}
\nocite{sigfridsson,companion,cotton,iliad,malinowski,
gaonkar:in,westfahl:space,pines,brandt,hyman,kant:kpv}
\printbibliography
\end{document}