Используя biblatex-chicago
, я хотел бы @bookinbook
действовать аналогично @incollection
использованию in shorttitle
и только фамилии редактора для @book
in , 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}
Выходной ток:
Желаемый результат:
Иоанн Дамаскин.Die Schriften des Johannes von Damaskos. Под редакцией Бонифаса Коттера. 7 томов. Берлин: de Gruyter, 1969–2013.
——.Expositio fidei. В Коттере,Шрифты, том. 2. Берлин: де Грюйтер, 1973.
——.Institutio elementaris. Capita philosophica (Диалектика). В Коттере,Шрифты, том. 1. Берлин: де Грюйтер, 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
.
Другие вещи можно обойти с помощью некоторого сохранения и восстановления значений полей. Внутренне short 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}