biblatex 处理 crossref 的方式很棒……但总是有新的愿望/问题。我觉得参考书目把书和它们的章节(条目)混在一起有点尴尬@inbook
。有没有办法组织它们?
喜欢
- 作者、书籍
- 作者的另一本书包含:
- 第1章
- 第五章
- 作者,文章
其中“第 1 章”和“第 5 章”是@inbook
与“另一本书”交叉引用的条目。我使用的是philosophy-verbose
或verbose-trad2
样式。
谢谢,Jos
编辑:我按照 moewe 的建议更改了 (M)WE 以使用该related
字段:谢谢!效果很好,但用于格式化参考书目中打印的字段的语法有点难。如何让它打印每章的页数而不是出版年份?
\documentclass[ngerman,french]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\makeatletter
\usepackage{lmodern}
\usepackage{perpage}
\MakePerPage{footnote}
%% Biblatex %%
\usepackage[language=french,%
autopunct=true,%
style=verbose-trad2,%
strict,%
related=true,
backend=biber]%
{biblatex}%
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{MH_Holzwege,
keywords = {MH,D},
author = {Martin Heidegger},
title = {Holzwege},
publisher = {Vittorio Klostermann},
address = {Frankfurt a. M.},
year = 2003,
series = {Einzelausgabe des Bd. 5 der Gesamtausgabe},
edition = {8., unver\"{a}nderte Auflage},
addendum = {1. Publikation: 1950},
related = {MH_Kunstwerk,MH_NietzscheGott,MH_Weltbild},
relatedtype = {multivolume}
}
@InBook{MH_Kunstwerk,
keywords = {MH,D},
author = {Martin Heidegger},
title = {Der Ursprung des Kunstwerkes},
pages = {1--74},
crossref = {MH_Holzwege}
}
@InBook{MH_NietzscheGott,
keywords = {MH,D},
author = {Martin Heidegger},
title = {Nietzsches Wort `{Gott} ist tot'\,},
pages = {193--247},
crossref = {MH_Holzwege}
}
@InBook{MH_Weltbild,
keywords = {MH,D},
author = {Martin Heidegger},
title = {Die Zeit des Weltbildes},
pages = {69--104},
crossref = {MH_Holzwege}
}
@Book{MH_SZ,
keywords = {MH,D},
author = {Martin Heidegger},
title = {{Sein und Zeit}},
address = {T\"{u}bingen},
publisher = {Max Niemeyer},
year = 2001,
edition = {18. Auflage},
addendum = {1. Publikation: 1927}}
\end{filecontents}
\addbibresource{\jobname.bib}
\makeatother
\usepackage{babel}
\addto\extrasfrench{\providecommand{\og}{\leavevmode\flqq~}\providecommand{\fg}{\ifdim\lastskip>\z@\unskip\fi~\frqq}}
\begin{document}
\title{Titre}
\author{A. Teur}
\maketitle
Texte\footcite[20]{MH_Kunstwerk}.
% Plus de texte \footcite{MH_Weltbild}.
Et hop \footcite{MH_SZ}
Une derni\`ere\footcite{MH_NietzscheGott}
\printbibliography[title={Oeuvres de Martin Heidegger},keyword=MH,keyword=D,nottype=inbook]
\end{document}
答案1
感谢 moewe 对使用该related
字段的建议,以及在这个网站上的一些浏览,我发现我可以relatedtype
根据multivolume
类型(从复制biblatex.def
)定义一个新的,只需\usebibmacro{chapter+pages}
在末尾添加即可:
\newbibmacro*{related:bookchapters}[1]{%
\entrydata*{#1}{%
\usebibmacro{title}%
\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}%
\printdate
\usebibmacro{chapter+pages}
}}
在我的工作示例中,结果如下:
\documentclass[ngerman,french]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\makeatletter
\usepackage{lmodern}
\usepackage{perpage}
\MakePerPage{footnote}
%% Biblatex %%
\usepackage[language=french,%
autopunct=true,%
style=verbose-trad2,%
strict,%
related=true,
backend=biber]%
{biblatex}%
\newbibmacro*{related:bookchapters}[1]{%
\entrydata*{#1}{%
\usebibmacro{title}%
\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}%
\printdate
\usebibmacro{chapter+pages}
}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{MH_Holzwege,
keywords = {MH,D},
author = {Martin Heidegger},
title = {Holzwege},
publisher = {Vittorio Klostermann},
address = {Frankfurt a. M.},
year = 2003,
edition = {8},
related = {MH_Kunstwerk,MH_NietzscheGott,MH_Weltbild},
relatedtype = {bookchapters},
relatedstring = {chapitres :}
}
@InBook{MH_Kunstwerk,
keywords = {MH,D},
author = {Martin Heidegger},
title = {Der Ursprung des Kunstwerkes},
pages = {1--74},
crossref = {MH_Holzwege}
}
@InBook{MH_NietzscheGott,
keywords = {MH,D},
author = {Martin Heidegger},
title = {Nietzsches Wort `{Gott} ist tot'\,},
pages = {193--247},
crossref = {MH_Holzwege}
}
@InBook{MH_Weltbild,
keywords = {MH,D},
author = {Martin Heidegger},
title = {Die Zeit des Weltbildes},
pages = {69--104},
crossref = {MH_Holzwege}
}
@Book{MH_SZ,
keywords = {MH,D},
author = {Martin Heidegger},
title = {{Sein und Zeit}},
address = {T\"{u}bingen},
publisher = {Max Niemeyer},
year = 2001,
edition = {18},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\makeatother
\usepackage{babel}
\addto\extrasfrench{\providecommand{\og}{\leavevmode\flqq~}\providecommand{\fg}{\ifdim\lastskip>\z@\unskip\fi~\frqq}}
\begin{document}
\title{Titre}
\author{A. Teur}
\maketitle
Texte\footcite[20]{MH_Kunstwerk}.
% Plus de texte \footcite{MH_Weltbild}.
Et hop \footcite{MH_SZ}
Une derni\`ere\footcite{MH_NietzscheGott}
\printbibliography[title={Oeuvres de Martin Heidegger},keyword=MH,keyword=D,nottype=inbook]
\end{document}
我还没有找到将第一个包含的章节放在新行上的方法...这个命令是什么?