![在 biblatex-chicago 中混合注释样式和作者日期样式(以信件为例)](https://linux22.com/image/324260/%E5%9C%A8%20biblatex-chicago%20%E4%B8%AD%E6%B7%B7%E5%90%88%E6%B3%A8%E9%87%8A%E6%A0%B7%E5%BC%8F%E5%92%8C%E4%BD%9C%E8%80%85%E6%97%A5%E6%9C%9F%E6%A0%B7%E5%BC%8F%EF%BC%88%E4%BB%A5%E4%BF%A1%E4%BB%B6%E4%B8%BA%E4%BE%8B%EF%BC%89.png)
biblatex-chicago
我对的authordate
风格和引用s有意见@letter
。为了符合芝加哥格式手册的一般准则,我不会@letter
在参考书目中列出。相反,我给他们options = {skipbib=true}
。但是我也不能将它们引用为“De Sévigné 1750a”、“De Sévigné 1750b”等,因为这样还不够参考。
我已经阅读了在该论坛上能找到的相关问题,但据我所知,没有一个问题能回答我的问题。
我的问题是:
我能否@letter
按照notes
风格引用 s ,而其余部分则按照 引用authordate
?
我怀疑可以通过为包含 的项目的引用指定不同的格式来实现这一点options = {skipbib=true}
。但我不知道该怎么做。
然而,重要的是,引用的其余部分必须符合authordate
格式,例如,@book
出现 a 的@letter
仍将按照 出现authordate
。例如:
塞维涅夫人致塞维涅先生,巴黎,1750 年 1 月 29 日,《塞维涅》(2015 年)第 100–110 页。
De Sévigné 2015
在参考书目中出现的内容为:
德塞维涅,夫人。 2015 年。信件.牛津:牛津大学出版社。
书目信息:
@book{DeSevigne2015,
bookauthor = {{De Sévigné}, Madame},
title = {Letters},
address = {Oxford},
publisher = {Oxford University Press},
date = {2015}
}
@letter{DeSevigne1750,
options = {skipbib=true},
crossref = {DeSevigne2015},
bookauthor = {{De Sévigné}, Madame},
title = {Madame de Sévigné to Monsieur de Sévigné},
shorttitle = {to Monsieur de Sévigné},
origdate = {1750-01-29},
origlocation = {Paris},
pages = {100--110}
}
可以吗?提前谢谢。
答案1
这不是特别漂亮,但修改高度定制的风格,比如biblatex-chicago
很快就会变得不那么漂亮。
主要思想是执行条目的书目驱动程序,@letter
并进行一些临时修改
\usedriver
{\clearname{author}%
\renewbibmacro{cmsbibsortdate}{}%
\renewbibmacro{bibprexref}{\addcomma\space}}
{letter}
这在宏中完成cite
如下
\makeatletter
\renewbibmacro*{cite}{%
\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\usebibmacro{cite:ibid}}%
{\ifentrytype{letter}
{\usedriver
{\clearname{author}%
\renewbibmacro{cmsbibsortdate}{}%
\renewbibmacro{bibprexref}{\addcomma\space}}
{letter}}
{\iffieldequalstr{entrysubtype}{classical}% Similar to notes+bib
{\iffieldundef{shorthand}%
{\ifthenelse{\ifnameundef{labelname}\OR
\ifentrytype{inreference}\OR
\ifentrytype{reference}\OR
\ifentrytype{mvreference}}% Simplified for CMS
{\usebibmacro{cite:label}%
\setunit{\addspace}%
\usebibmacro{cite:reinit}}
{\iffieldequals{namehash}{\cbx@lasthash}%
{\iffieldundef{postnote}%
{\setunit{\compcitedelim}}%
{}%
\usebibmacro{cite:label}}
{\iffieldequals{namehash}{\cbx@lastyear}%
{}%
{\usebibmacro{cmsbracketname}% For names in []
\ifentrytype{customc}%
{\newcunit}%
{\setunit{\addspace}}}%
\usebibmacro{cite:label}%
\iffieldundef{postnote}%
{\savefield{namehash}{\cbx@lasthash}}%
{\savefield{namehash}{\cbx@lastyear}}}}}%
{\usebibmacro{cite:shorthand+title}}}
{\iffieldundef{shorthand}%
{\ifthenelse{\ifnameundef{labelname}\OR
\ifentrytype{inreference}\OR
\ifentrytype{reference}\OR
\ifentrytype{mvreference}}% Simplified for CMS
{\usebibmacro{cite:label}%
\setunit{\addspace}%
\usebibmacro{cmscitesortdate}%
\usebibmacro{cite:reinit}}
{\iffieldequals{namehash}{\cbx@lasthash}%
{\iffieldundef{postnote}%
{\setunit{\compcitedelim}}%
{}%
\usebibmacro{cmscitesortdate}}
{\iffieldequals{namehash}{\cbx@lastyear}% Is this right?
{}%
{\usebibmacro{cmsbracketname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cmscitesortdate}%
\iffieldundef{postnote}%
{\savefield{namehash}{\cbx@lasthash}}%
{\savefield{namehash}{\cbx@lastyear}}}}}%
{\usebibmacro{cite:shorthand}}}}}%
\setunit{\multicitedelim}}% ???
\makeatother
请注意,您需要mincrossrefs=1
确保此功能绝对顺利运行。
然后我们得到
\documentclass[british]{article}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[authordate,mincrossrefs=1]{biblatex-chicago}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{DeSevigne2015,
author = {{De Sévigné}, Madame},
title = {Letters},
address = {Oxford},
publisher = {Oxford University Press},
date = {2015}
}
@letter{DeSevigne1750,
options = {skipbib=true,skiplab=true},
crossref = {DeSevigne2015},
title = {Madame de Sévigné to Monsieur de Sévigné},
shorttitle = {to Monsieur de Sévigné},
origdate = {1750-01-29},
origlocation = {Paris},
pages = {100--110}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\makeatletter
\renewbibmacro*{cite}{%
\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\usebibmacro{cite:ibid}}%
{\ifentrytype{letter}
{\usedriver
{\clearname{author}%
\renewbibmacro{cmsbibsortdate}{}%
\renewbibmacro{bibprexref}{\addcomma\space}}
{letter}}
{\iffieldequalstr{entrysubtype}{classical}% Similar to notes+bib
{\iffieldundef{shorthand}%
{\ifthenelse{\ifnameundef{labelname}\OR
\ifentrytype{inreference}\OR
\ifentrytype{reference}\OR
\ifentrytype{mvreference}}% Simplified for CMS
{\usebibmacro{cite:label}%
\setunit{\addspace}%
\usebibmacro{cite:reinit}}
{\iffieldequals{namehash}{\cbx@lasthash}%
{\iffieldundef{postnote}%
{\setunit{\compcitedelim}}%
{}%
\usebibmacro{cite:label}}
{\iffieldequals{namehash}{\cbx@lastyear}%
{}%
{\usebibmacro{cmsbracketname}% For names in []
\ifentrytype{customc}%
{\newcunit}%
{\setunit{\addspace}}}%
\usebibmacro{cite:label}%
\iffieldundef{postnote}%
{\savefield{namehash}{\cbx@lasthash}}%
{\savefield{namehash}{\cbx@lastyear}}}}}%
{\usebibmacro{cite:shorthand+title}}}
{\iffieldundef{shorthand}%
{\ifthenelse{\ifnameundef{labelname}\OR
\ifentrytype{inreference}\OR
\ifentrytype{reference}\OR
\ifentrytype{mvreference}}% Simplified for CMS
{\usebibmacro{cite:label}%
\setunit{\addspace}%
\usebibmacro{cmscitesortdate}%
\usebibmacro{cite:reinit}}
{\iffieldequals{namehash}{\cbx@lasthash}%
{\iffieldundef{postnote}%
{\setunit{\compcitedelim}}%
{}%
\usebibmacro{cmscitesortdate}}
{\iffieldequals{namehash}{\cbx@lastyear}% Is this right?
{}%
{\usebibmacro{cmsbracketname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cmscitesortdate}%
\iffieldundef{postnote}%
{\savefield{namehash}{\cbx@lasthash}}%
{\savefield{namehash}{\cbx@lastyear}}}}}%
{\usebibmacro{cite:shorthand}}}}}%
\setunit{\multicitedelim}}% ???
\makeatother
\begin{document}
Beispieltext\footcite{DeSevigne1750}
\printbibliography
\end{document}