我必须再次询问才能获得论文所需的参考书目格式——不幸的是,这不会是最后一个问题:D
这是关于书名和系列之间的点的问题。我该如何删除它?
因此在上面的例子中它实际上应该是“符号学/符号学。 2. 泰尔班德(语言与通信学手册)”。
您可以在以下 MWE 中看到我的尝试:
\documentclass[a4paper, 12pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[french, ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[autostyle]{csquotes}
\usepackage[backend=biber, style=ext-authoryear, innamebeforetitle=true, innameidem=true, maxcitenames=2, dashed=false]{biblatex}
\DefineBibliographyExtras{french}{\restorecommand\mkbibnamefamily}
\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{ineditor}{sortname}
\DeclareDelimFormat[bib]{multinamedelim}{\addspace\slash\space}
\DeclareDelimAlias*[bib]{finalnamedelim}{multinamedelim}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}
\DeclareDelimFormat[bib]{nametitledelim}{\adddot\space}
\DeclareDelimFormat{multinamedelim}{\slash}
\DeclareDelimFormat{finalnamedelim}{\slash}
\renewbibmacro*{in:}{%
\setunit{\addcomma\space}%
\bibstring{in}%
\printunit{\intitlepunct}}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit*{\addnbthinspace}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\DeclareFieldFormat[article]{number}{\mkbibparens{#1}}
\urlstyle{same}
\DeclareFieldFormat{url}{URL: <\url{#1}>}
\DeclareFieldFormat{urldate}{\mkbibbrackets{#1}}
\DefineBibliographyStrings{german}{
editor = {Hrsg\adddot},
editors = {Hrsg\adddot},
}
\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\makeatletter
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[\blx@delimcontext labeldate]{%
\printfield[superedition]{edition}%
\global\clearfield{edition}%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}}}}
\makeatother
\DeclareFieldFormat{series}{\mkbibparens{#1}}
\renewbibmacro*{booktitle+series}{%
\printfield{booktitle}%
\setunit{\space}%
\printfield{series}%
}
\begin{filecontents}{literatur.bib}
@incollection{Baldinger,
author = {Baldinger, Kurt},
title = {Semasiologie und Onomasiologie},
booktitle = {2. Teilband},
publisher = {De Gruyter Mouton},
year = {2008},
editor = {Posner, Roland and Robering, Klaus and Sebeok, Thomas},
edition = 3
series = Handbücher zur Sprach- und Kommunikationswissenschaft 13/2
}
\end{filecontents}
\bibliography{literatur}
\begin{document}
\cite{Baldinger}
\printbibliography
\end{document}
肯定有什么地方出了问题renewbibmacro*{booktitle+series}{…}
。
答案1
没有称为 的 bibmacro booktitle+series
。更一般地说,不需要为字段的每种可能组合都设置一个 bibmacro。
最终,参考书目中的呈现方式由参考书目驱动程序控制。对于你的风格(style=ext-authoryear,
以及所有biblatex-ext
风格),驱动程序位于ext-standard.bbx
@incollection
。可以在以下位置找到相关的驱动程序第 355-386 行 [v0.13]。打印该系列的位在incollection:parent
(第 388-405 行 [v0.13])并且它有
\newunit\newblock
\usebibmacro{series+number}%
影响格式的最简单方法series
是修改 bibmacro。
满足您的需求
\renewbibmacro*{series+number}{%
\setunit{\addspace}%
\iffieldundef{series}
{}
{\printtext[parens]{%
\printfield{series}%
\setunit*{\sernumdelim}%
\printfield{number}}}%
\newunit}
应该做正确的事。
\documentclass[a4paper, 12pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[french, ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[autostyle]{csquotes}
\usepackage[
backend=biber,
style=ext-authoryear,
innamebeforetitle=true,
innameidem=true,
maxcitenames=2,
dashed=false,
]{biblatex}
\DefineBibliographyExtras{french}{\restorecommand\mkbibnamefamily}
\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{ineditor}{sortname}
\DeclareDelimFormat{multinamedelim}{\slash}
\DeclareDelimFormat[bib]{multinamedelim}{\addspace\slash\space}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}
\DeclareDelimFormat[bib]{nametitledelim}{\adddot\space}
\renewbibmacro*{in:}{%
\setunit{\addcomma\space}%
\bibstring{in}%
\printunit{\intitlepunct}}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit*{\addnbthinspace}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\DeclareFieldFormat[article]{number}{\mkbibparens{#1}}
\urlstyle{same}
\DeclareFieldFormat{url}{URL: <\url{#1}>}
\DeclareFieldFormat{urldate}{\mkbibbrackets{#1}}
\DefineBibliographyStrings{german}{
editor = {Hrsg\adddot},
editors = {Hrsg\adddot},
}
\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\makeatletter
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[\blx@delimcontext labeldate]{%
\printfield[superedition]{edition}%
\global\clearfield{edition}%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}}}}
\makeatother
\renewbibmacro*{series+number}{%
\setunit{\addspace}%
\iffieldundef{series}
{}
{\printtext[parens]{%
\printfield{series}%
\setunit*{\sernumdelim}%
\printfield{number}}}%
\newunit}
\begin{filecontents}{\jobname.bib}
@incollection{Baldinger,
author = {Baldinger, Kurt},
title = {Semasiologie und Onomasiologie},
maintitle = {Semiotik / Semiotics},
booktitle = {2.~Teilband},
publisher = {De Gruyter Mouton},
year = {2008},
editor = {Posner, Roland and Robering, Klaus and Sebeok, Thomas},
edition = 3,
series = {Handbücher zur Sprach- und Kommunikationswissenschaft},
number = {13/2},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{Baldinger}
\printbibliography
\end{document}
请注意,我改变了
series = Handbücher zur Sprach- und Kommunikationswissenschaft 13/2
在.bib
文件中
series = {Handbücher zur Sprach- und Kommunikationswissenschaft},
number = {13/2},
没有括号的非数字值会导致错误,系列中书籍的编号应该填入该number
字段。还请注意,我添加了缺失的
maintitle = {Semiotik / Semiotics},