我目前正在使用 biblatex 格式化参考书目。对于作为系列丛书的一部分出版的书籍,我希望参考书目中的结果如下:
爱因斯坦,A. (1937):一些书。乌尔姆(=爱因斯坦书籍 134)
其中“Einstein book”是系列,“134”是编号。我该如何实现这种格式?以下是 MWE:
\documentclass[oneside, a4paper,11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[
backend=biber, % Stellt die backend ein, BibTeX-Engine muss auch entsprechend umgestellt werden
style=authoryear-ibid, % "Author, Jahr"-Zitierweise mit "ebd."-Option
isbn=false, % keine ISBN, ISSN o. ä. im Literaturverzeichnis
url=false, % keine URL im Literaturverzeichnis, außer bei Online-Quellen
doi=false, % keine DOI im Literaturverzeichnis
giveninits=true, % nur Initialen der Autoren im Literaturverzeichnis
date=year,% keine Monatsangabe im Literaturverzeichnis
maxbibnames=99
]{biblatex}
\addbibresource{cbba_li.bib}
\begin{document}
\newgeometry{left=2.5cm}
\include{cbba_ts}
\clearpage\maketitle
\thispagestyle{empty}
\restoregeometry
\tableofcontents
\thispagestyle{empty}
\newpage
%Optional: switch on line numbering in pdf.
% \linenumbers
%\include{Content} % \include{file} starts on a new page.
\input{cbba_el} % \input{file} does not start on a new page.
\include{cbba_od} % Hier kommen jetzt alle Kapitel als einzelne Dateien zusammen
\printbibliography
\end{document}
。围兜:
@book{einstein,
address = {Ulm},
author = {Einstein, Albert},
title = {{Some book}},
series = {Einstein books},
number = {134},
year = {1937}
}
答案1
最直接的方法是将series+number
宏(从standard.bbx
)重新定义为首先打印publisher+location+date
,然后(=series number)
。publisher+location+date
然后可以在其中重新定义宏,series+number
以便稍后调用时它不执行任何操作。
\renewbibmacro*{series+number}{%
\iffieldundef{series}
{}
{\usebibmacro{publisher+location+date}%
\renewbibmacro*{publisher+location+date}{}%
\setunit{\addspace}%
\printtext[parens]{%
\printtext{$=$}%
\printfield{series}%
\setunit*{\addspace}%
\printfield{number}}%
\newunit}}
可以通过重新定义添加标题前的冒号\nametitledelim
:
\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\space}
平均能量损失
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{einstein,
location = {Ulm},
author = {Einstein, Albert},
title = {Some book},
series = {Einstein books},
number = {134},
date = {1937}
}
\end{filecontents}
\usepackage[
style=authoryear-ibid,
isbn=false,
url=false,
doi=false,
giveninits=true,
date=year,
maxbibnames=99
]{biblatex}
\addbibresource{\jobname.bib}
\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\space}
\renewbibmacro*{series+number}{%
\iffieldundef{series}
{}
{\usebibmacro{publisher+location+date}%
\renewbibmacro*{publisher+location+date}{}%
\setunit{\addspace}%
\printtext[parens]{%
\printtext{$=$}%
\printfield{series}%
\setunit*{\addspace}%
\printfield{number}}%
\newunit}}
\begin{document}
\nocite{*}
\printbibliography
\end{document}