在 biblatex-chicago 中混合注释样式和作者日期样式(以信件为例)

在 biblatex-chicago 中混合注释样式和作者日期样式(以信件为例)

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}

示例输出

相关内容