请考虑以下条目作为参考:
@reference{rlw,
publisher = {{De Gruyter}},
title = {Reallexikon der deutschen Literaturwissenschaft},
subtitle = {Neubearbeitung des Reallexikons der deutschen Literaturgeschichte},
shorttitle = {RLW},
year = {2003},
location = {Berlin/New York},
edition = {3 Bde. 3., neubearb. Aufl. (1997-2003). Bd. I (1997) hrsg. v. Klaus Weimar u. a. Bd. II (2000) hrsg. v. Harald Fricke u. a. Bd. III (2003) hrsg. v. Jan-Dirk M{\"u}ller u. a.},
keywords = {lex}
}
这是呈现三卷作品的一种非常不寻常的方式,我需要摆弄 bibdriver 才能“正确”地显示它
\DeclareBibliographyDriver{reference}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\iffieldundef{shorttitle}
{}%
{\printfield{shorttitle} =}%
\iffieldundef{editor}
{}{
\usebibmacro{editor+others}%
\setunit{\labelnamepunct}\newblock
}
\usebibmacro{maintitle+title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
MLLK 条目只是装饰性的,用于在相关条目旁边显示“正确”定义的条目。不要介意开头的缩写和等号,这与我的另一个问题。我想知道的是以下内容: - 为了使一切无懈可击,我需要为每一卷制作一个书目条目,以便我可以分别指定每卷的编辑 - 这会使我的参考书目变得相当臃肿,因为在这种情况下,我将有 3 个不同的条目 - 尽管不同,但这三个条目仍然需要归纳为一个缩写,因为人们会将整个作品称为“RLW”而不是单个卷 - 具体引用哪一卷在子条目中给出(与 crossref 一起使用)
有没有办法将作品指定为@reference
(就像我使用自定义显示一样),但有三个不同的条目(理想情况下可以交叉引用,并且它们本身可以交叉引用 @ThisIsAnEntryForTheWholeShelfInTheLibraryTheseBooksRestOn)直接出现在此主条目下(最好是缩进)?我不太担心各个文章到各个卷的交叉引用部分,这已经在起作用了。我更想寻找一种好方法,将一部作品的单独卷列在其“主条目”下。Word 中的快速模型:
答案1
这应该可以帮助您入门,但可能需要进一步定制。
我已使用related
字段和relatedtype={multivolume}
来设置主多卷条目与每个卷之间的关系。我已重新定义宏related:multivolume
以按照您想要的格式打印每个卷。
我还对您的驱动程序做了一些其他更改,reference
这样您就不必将所有内容都放在该edition
字段中。
我修改了 的列表分隔符location
,这样你就可以使用正确的location = {Berlin and New York}
而不是错误的location = {Berlin/New York}
。De Gruyter 周围的额外括号是不必要的。我使用了biblatex
date
允许正确指定日期范围的字段。
笔记:您必须biber
,而不是 才能bibtex(8)
使此示例正常工作。具体而言, 不支持相关条目bibtex
。
平均能量损失
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@mvreference{rlw,
title = {Reallexikon der deutschen Literaturwissenschaft},
subtitle = {Neubearbeitung des Reallexikons der deutschen Literaturgeschichte},
shorttitle = {RLW},
volumes = {3},
edition = {3\addcomma\space\bibstring{revision}\space\bibstring{edition}},
location = {Berlin and New York},
publisher = {De Gruyter},
date = {1997/2003},
keywords = {lex},
related = {rlw:1,rlw:2,rlw:3},
relatedtype = {multivolume}
}
@reference{rlw:1,
title = {A--G},
editor = {Weiman, Klaus and others},
volume = {I},
date = {1997},
crossref = {rlw}
}
@reference{rlw:2,
title = {H--O},
editor = {Fricke, Harald and others},
volume = {II},
date = {2000},
crossref = {rlw}
}
@reference{rlw:3,
title = {P--Z},
editor = {M\"uller, Jan-Dirk and others},
volume = {III},
date = {2003},
crossref = {rlw}
}
\end{filecontents}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[style=authoryear,sorting=nyt,mincrossrefs=1]{biblatex}
\addbibresource{\jobname.bib}
\DeclareDelimFormat{multilistdelim}{\slash}
\DeclareDelimFormat{finallistdelim}{\slash}
\DeclareBibliographyDriver{reference}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\renewbibmacro*{date}{\printdate}% ← treat dates specially for references
\iffieldundef{shorttitle}
{}%
{\printfield{shorttitle}\printtext{ = }}%
\iffieldundef{editor}
{}
{\usebibmacro{editor+others}%
\setunit{\labelnamepunct}\newblock}%
\usebibmacro{maintitle+title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit
\printfield{edition}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\newbibmacro*{publisher+location+date}{%
\printtext[parens]{\usebibmacro{date}}%
\setunit*{\addspace}%
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcolon\space}}%
\printlist{publisher}%
\newunit}
\renewbibmacro*{related:multivolume}[1]{%
\entrydata*{#1}{%
\printtext{%
\printfield{volume}%
\printfield{part}}%
\setunit*{\space}%
\printtext[parens]{\printdate}%
\setunit*{\space}%
\printtext[parens]{\usebibmacro{title}}%
\setunit*{\addspace}%
\ifboolexpr{
test {\ifnamesequal{author}{savedauthor}}
or
test {\ifnameundef{author}}
}
{}
{\usebibmacro{bytypestrg}{author}{author}%
\setunit{\addspace}%
\printnames[byauthor]{author}
\newunit\newblock}%
\ifboolexpr{
test {\ifnamesequal{editor}{savededitor}}
or
test {\ifnameundef{editor}}
}
{}
{\usebibmacro{byeditor+others}%
\newunit\newblock}}}
\NewBibliographyString{revision}
\DefineBibliographyStrings{ngerman}{%
byeditor = {hrsg\adddotspace v\adddot},
revision = {neubearb\adddot},
}
\begin{document}
\nocite{*}
\printbibliography
\end{document}