使用,当有多个条目指向同一本书时biblatex-chicago
,我希望@bookinbook
表现得类似于@incollection
使用 ,shorttitle
并且只使用编辑者的姓氏。@book
crossref
梅威瑟:
\documentclass{article}
\usepackage[notes]{biblatex-chicago}
\begin{filecontents*}{\jobname.bib}
@book{kotter:schriften.jdam,
Address = {Berlin},
Author = {{John of Damascus}},
Date = {1969/2013},
Editor = {Kotter, Bonifaz},
Publisher = {de Gruyter},
Shorttitle = {Schriften},
Title = {Die Schriften des Johannes von Damaskos},
Volumes = {7}}
@bookinbook{jdam:expositio.fidei:kotter1973,
Crossref = {kotter:schriften.jdam},
Entrysubtype = {primary},
Title = {Expositio fidei},
Volume = {2},
Year = {1973}}
@bookinbook{jdam:instit.element:dialectica:kotter1969,
Crossref = {kotter:schriften.jdam},
Entrysubtype = {primary},
Title = {Institutio elementaris. Capita philosophica (Dialectica)},
Volume = {1},
Year = {1969}}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{kotter:schriften.jdam,jdam:instit.element:dialectica:kotter1969,jdam:expositio.fidei:kotter1973}
\printbibliography
\end{document}
电流输出:
期望输出:
大马士革的约翰。约翰·冯·达马斯科斯的著作。Bonifaz Kotter 编辑。共 7 卷。柏林:de Gruyter,1969–2013 年。
——。信仰阐释在科特,写作,第 2 卷。柏林:de Gruyter,1973 年。
——。基本原则。哲学人格(辩证法)在科特,写作,第 1 卷。柏林:de Gruyter,1969 年。
答案1
biblatex-chicago
有一个名为的选项booklongxref
,可以帮助您缩短此处的参考书目条目。
\documentclass{article}
\usepackage[notes,booklongxref=false]{biblatex-chicago}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{kotter:schriften.jdam,
Address = {Berlin},
Author = {{John of Damascus}},
Date = {1969/2013},
Editor = {Kotter, Bonifaz},
Publisher = {de Gruyter},
Shorttitle = {Schriften},
Title = {Die Schriften des Johannes von Damaskos},
Volumes = {7}}
@bookinbook{jdam:expositio.fidei:kotter1973,
Crossref = {kotter:schriften.jdam},
Entrysubtype = {primary},
Title = {Expositio fidei},
Volume = {2},
Year = {1973}}
@bookinbook{jdam:instit.element:dialectica:kotter1969,
Crossref = {kotter:schriften.jdam},
Entrysubtype = {primary},
Title = {Institutio elementaris. Capita philosophica (Dialectica)},
Volume = {1},
Year = {1969}}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{kotter:schriften.jdam,jdam:instit.element:dialectica:kotter1969,jdam:expositio.fidei:kotter1973}
\printbibliography
\end{document}
输出并不完全符合您的想象,但希望它足够接近。
当主要与其 相关时,在@bookinbook
条目中找到有关editor
该作品的简短引用对我来说似乎特别具有挑战性。@book
@book
author
其他问题可以通过保存和恢复字段值来解决。内部的简短内容crossref
由引用命令生成。可以通过将字段保存在宏中并在稍后恢复宏的方式将附加信息传递给该引用命令。
\documentclass{article}
\usepackage[notes,booklongxref=false]{biblatex-chicago}
\usepackage{xpatch}
\xapptobibmacro{crossref:volume+postnote}{%
\newunit\newblock
\usebibmacro{saved:publ+loc+year}%
}{}{}
\makeatletter
\xapptobibmacro{xrefprenote}{%
\iflistundef{publisher}
{\undef\cbx@incollpublisher}
{\savelist{publisher}{\cbx@incollpublisher}}%
\iflistundef{location}
{\undef\cbx@incolllocation}
{\savelist{location}{\cbx@incolllocation}}%
\iffieldundef{year}
{\undef\cbx@incollyear}
{\savefield{year}{\cbx@incollyear}}%
\iffieldundef{endyear}
{\undef\cbx@incollendyear}
{\savefield{endyear}{\cbx@incollendyear}}%
}{}{}
\newbibmacro*{saved:publ+loc+year}{%
\ifboolexpr{
not test {\iflistequals{publisher}{\cbx@incollpublisher}}
or
not test {\iflistequals{location}{\cbx@incolllocation}}
or
not test {\iffieldequals{year}{\cbx@incollyear}}
or
not test {\iffieldequals{endyear}{\cbx@incollendyear}}
}
{\restorelist{publisher}{\cbx@incollpublisher}%
\restorelist{location}{\cbx@incolllocation}%
\restorefield{year}{\cbx@incollyear}%
\restorefield{endyear}{\cbx@incollendyear}%
\printlist{location}%
\iflistundef{publisher}%
{\setunit*{\addcomma\addspace}}%
{\setunit*{\addcolon\addspace}}%
\printlist{publisher}%
\setunit*{\addcomma\addspace}%
\usebibmacro{date}}
{}}%
\makeatother
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{kotter:schriften.jdam,
Address = {Berlin},
Author = {{John of Damascus}},
Date = {1969/2013},
Editor = {Kotter, Bonifaz},
Publisher = {de Gruyter},
Shorttitle = {Schriften},
Title = {Die Schriften des Johannes von Damaskos},
Volumes = {7}}
@bookinbook{jdam:expositio.fidei:kotter1973,
Crossref = {kotter:schriften.jdam},
Entrysubtype = {primary},
Title = {Expositio fidei},
Volume = {2},
pages = {2-200},
Year = {1973}}
@bookinbook{jdam:instit.element:dialectica:kotter1969,
Crossref = {kotter:schriften.jdam},
Entrysubtype = {primary},
Title = {Institutio elementaris. Capita philosophica (Dialectica)},
Volume = {1},
pages = {1-100},
Year = {1969}}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{kotter:schriften.jdam,jdam:instit.element:dialectica:kotter1969,jdam:expositio.fidei:kotter1973}
\printbibliography
\end{document}