使用 biblatex-chicago 引用中世纪文本版本

使用 biblatex-chicago 引用中世纪文本版本

在引用中世纪文本时使用biblatex-chicago,我经常想引用一本书的作者和书名,然后打印章节或段落编号,然后打印这本书的编辑(即整理手稿并制作我使用的文本版本的现代编辑),然后才显示页码,或者在多卷版的(常见)情况下,显示卷号和页码。是否有引用命令可以让我这样做(类似于芝加哥格式手册14.260)?

以下是我正在寻找的示例。第一个引用应该是:

福蒂奥斯,图书馆,鳕鱼。 172,编辑勒内·亨利(巴黎:Les Belles Lettres,1959–1991),第一卷2,页169.

那么后续的引用应该是:

福蒂奥斯,图书馆,编 172,Henry 主编,第 2 卷,第 169 页。

为此,我希望能够写下:

Photios, \emph{Bibliotheca}, cod.\ 172, \editorvolcite{2}[169]{photios:bibliotheca:henry}.

文件.bib包含以下内容:

@book{photios:bibliotheca:henry,
Address = {Paris},
Author = {Photios},
Booktitle = {Bibliothèque},
Editor = {Henry, René},
Entrysubtype = {primary},
Note = {index by Jacques Schamp},
Publisher = {Les Belles Lettres},
Title = {Bibliothèque},
Volumes = {9},
Year = {1959--1991}}

也许已经有类似的命令了\editorvolcite

(同样,对于单卷作品的情况,会有一个\editorcite仅打印“ editor, p. pagenumber”的命令。)


更新 2017-09-09

MWE(使用\volcite而不是期望的\editorvolcite以满足 MWE 的“W”部分):

\documentclass{article}

\usepackage[notes]{biblatex-chicago}
\addbibresource{editor-cite.bib}

\begin{document}

Photios, \emph{Bibliotheca}, cod.\ 172,\mancite{}
\volcite{2}[169]{photios:bibliotheca:henry}.

Photios, \emph{Bibliotheca}, cod.\ 172,\mancite{}
\volcite{2}[169]{photios:bibliotheca:henry}.

\end{document}

更新 2017-09-10

根据评论,我研究biblatex-source-division打印编号段落并尝试实现它。但它仍然没有完全实现我想要的功能。

这是我的 MWE 版本 2:

\documentclass{article}

\usepackage[notes]{biblatex-chicago}
\usepackage{biblatex-source-division}

\renewcommand*\newunitpunct{\addcomma\space}
\begin{filecontents*}{\jobname.bib}
@book{photios:bibliotheca:henry,
    Address = {Paris},
    Author = {Photios},
    Booktitle = {Bibliothèque},
    Editor = {Henry, René},
    Entrysubtype = {primary},
    Note = {index by Jacques Schamp},
    Publisher = {Les Belles Lettres},
    Title = {Bibliothèque},
    Volumes = {9},
    Year = {1959--1991}}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}

1st time:
\volcite{2}[(cod.\ 172)169]{photios:bibliotheca:henry}.

2nd time:
\volcite{2}[(cod.\ 172)169]{photios:bibliotheca:henry}.

\mancite{}

Again after \verb`\mancite`:
\volcite{2}[(cod.\ 172)169]{photios:bibliotheca:henry}.

\end{document}

第一次引用的结果是完美的。但我认为下面的引用应该只是“ibid。”虽然“ibid., cod. 172”也不错。但真正的问题是后面的(完整)简短引用缺少\mancite编辑器。这是我的结果的一个片段:

MWE v2 的结果

有没有办法将最后一个变成以下内容?

福蒂奥斯,图书馆,编 172,Henry 主编,第 2 卷,第 169 页。


更新 2017-09-21

正如我在下面的评论中提到的,@moewe 提出的解决方案在与 的复杂功能(biblatex-chicago尤其是 )交互时会产生轻微错误shorthandibid。这是一个新的 MWE,它会产生一个虚假的逗号,导致

同上,

应该只是

同上。

\documentclass{article}

\usepackage[notes,
        alldates=       comp,
        backend=        biber,
        bibwarn=        false,
        cmsdate=        both, % reprints: print `origdate` as well as `year`
        compresspages=  true,
        doi=            false,
        eprint=     false,
        ibidtracker=        true,
        inheritshorthand,       % feature added for me by D.Fussner
        isbn=           false,
        mincrossrefs =  2,
        shorthandibid,
        strict=     true,
        url=            false,
        usetranslator=  true,
        uniquename= true
    ]{biblatex-chicago}
\usepackage{biblatex-source-division}

\AtEveryCite{\renewcommand*\newunitpunct{\addcomma\space}}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{photios:bibliotheca:henry,
    Address = {Paris},
    Author = {Photios},
    Booktitle = {Bibliothèque},
    Editor = {Henry, René},
    Entrysubtype = {primary},
    Note = {index by Jacques Schamp},
    Publisher = {Les Belles Lettres},
    Title = {Bibliothèque},
    Volumes = {9},
    Year = {1959--1991},
    options = {medinfo},
}
@book{loci:communes:ihm,
    Author = {{ps.-Maximos the Confessor}},
    Booktitle = {Erste kritische Edition einer Redaktion des sacro-profanen Florilegiums Loci communes},
    Editor = {Ihm, Sibylle},
    Entrysubtype = {primary},
    Keywords = {Loci communes},
    Publisher = {Franz Steiner Verlag},
    Shorthand = {\emph{Loc.comm.}\ Ihm},
    Shorttitle = {Loci communes},
    Sortname = {Maximos the Confessor},
    Title = {Erste kritische Edition einer Redaktion des sacro-profanen Florilegiums Loci communes},
    Year = {2001}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\newtoggle{bbx:ar:medinfo}
\togglefalse{bbx:ar:medinfo}
\DeclareEntryOption[boolean]{medinfo}[true]{\settoggle{bbx:ar:medinfo}{#1}}

\makeatletter
\renewbibmacro*{cite:short}{%
  \usebibmacro{allshort+firstcite+xref}%
  \ifthenelse{\ifnameundef{labelname}\OR%
    \ifentrytype{inreference}\OR%
    \ifentrytype{reference}\OR%
    \ifentrytype{mvreference}}%
  {\ifthenelse{\iffieldequalstr{entrysubtype}{magazine}\AND\NOT%
      \ifentrytype{periodical}}% Simplify .bib creation
    {\ifuseauthor%
      {\ifboolexpr{%
          not test {\iffieldundef{shortjournal}}%
          and
          ((
          test {\ifcitation}%
          and
          togl {cms@citejtabb}%
          )
          or
          (
          test {\ifbibliography}%
          and
          togl {cms@bibjtabb}%
          ))
        }%
        {\printfield[shortjournal]{shortjournal}\newcunit}%
        {\printfield[journaltitle]{journaltitle}\newcunit}}%
      {}}%
    {\ifentrytype{manual}%
      {\printlist{organization}\isdot\newcunit}%
      {}}}%
  {\ifboolexpr{%
      test {\ifciteidem}%
      and
      not test {\ifbibliography}%
      and
      not test {\iffirstonpage}%
      and
      not togl {cms@noidem}%
      and
      not togl {cms@headlessnote}%
    }%
    {\bibstring[\mkibid]{idem\thefield{gender}}%
      \classicpunct}%
    {\iffieldequalstr{authortype}{anon}%
      {\bibleftbracket\printnames{labelname}%
        \bibrightbracket\classicpunct}%
      {\iffieldequalstr{authortype}{anon?}%
        {\bibleftbracket\printnames{labelname}?%
          \bibrightbracket\classicpunct}%
        {\printnames{labelname}%\usebibmacro{choose+labelname}%
          \isdot\classicpunct}}}}%
  \ifboolexpr{%
    togl {cms@allshort}%
    or
    test {\ifbibliography}%
  }%
  {\printtext[bibhyperref]{%
    \printfield[citetitle]{labeltitle}}}%
  {\printtext[cmshyperlink]{%
    \printfield[citetitle]{labeltitle}}}%#
  \iftoggle{bbx:ar:medinfo}
    {\newcunit
     \printfield{titleaddon}%
     \newcunit
     \usebibmacro{cbyeditor:short}}
  {}}

\DeclareNameFormat{family}{%
  \usebibmacro{name:family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \usebibmacro{name:andothers}}

\renewbibmacro*{cbyeditor:short}{%
  \ifnameundef{editor}%
    {}%
    {\usebibmacro{cbytypestrg}{editor}{editor}%
     \setunit{\addspace}%
     \printnames[family]{editor}%
     \newcunit}%
  \usebibmacro{cbyeditorx:short}}

\renewbibmacro*{cbyeditorx:short}{%
  \ifnameundef{editora}%
    {}%
    {\usebibmacro{cbytypestrg}{editora}{editor}%
     \setunit{\addspace}%
     \printnames[family]{editora}%
     \newcunit}%
  \ifnameundef{editorb}%
    {}%
    {\usebibmacro{cbytypestrg}{editorb}{editor}%
     \setunit{\addspace}%
     \printnames[family]{editorb}%
     \newcunit}%
  \ifnameundef{editorc}%
    {}%
    {\usebibmacro{cbytypestrg}{editorc}{editor}%
     \setunit{\addspace}%
     \printnames[family]{editorc}%
     \newcunit}}
\makeatother

\begin{document}

\section{editor-cite with volume}

1st time:
\volcite{2}[(cod.\ 172)169]{photios:bibliotheca:henry}.

2nd time:
\volcite{2}[(cod.\ 172)169]{photios:bibliotheca:henry}.

After \mancite\verb`\mancite`:
\volcite{2}[(cod.\ 172)169]{photios:bibliotheca:henry}.

Again: \volcite{2}[(cod.\ 172)169\textsubscript{11}]{photios:bibliotheca:henry}.

\section{problem with shorthand/ibid}

1st time: \cite[3]{loci:communes:ihm}.

2nd time: \cite[3]{loci:communes:ihm}.

After \mancite\verb`\mancite`: \cite[3]{loci:communes:ihm}.

Again: \cite[3]{loci:communes:ihm}.

Without final period in source: \cite[3]{loci:communes:ihm}

\printbibliography
\end{document}

答案1

根据您上次使用 MWE,biblatex-source-division我们可以实现一个名为 的新选项,medinfo它可以与编辑器交互biblatex-source-division并打印编辑器。

biblatex-chicago由于宏非常复杂,因此必要的更改非常长。

\documentclass{article}

\usepackage[notes]{biblatex-chicago}
\usepackage{biblatex-source-division}

\renewcommand*\newunitpunct{\addcomma\space}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{photios:bibliotheca:henry,
    Address = {Paris},
    Author = {Photios},
    Booktitle = {Bibliothèque},
    Editor = {Henry, René},
    Entrysubtype = {primary},
    Note = {index by Jacques Schamp},
    Publisher = {Les Belles Lettres},
    Title = {Bibliothèque},
    Volumes = {9},
    Year = {1959--1991},
    options = {medinfo},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\newtoggle{bbx:ar:medinfo}
\togglefalse{bbx:ar:medinfo}
\DeclareEntryOption[boolean]{medinfo}[true]{\settoggle{bbx:ar:medinfo}{#1}}

\makeatletter
\renewbibmacro*{cite:short}{%
  \usebibmacro{allshort+firstcite+xref}%
  \ifthenelse{\ifnameundef{labelname}\OR%
    \ifentrytype{inreference}\OR%
    \ifentrytype{reference}\OR%
    \ifentrytype{mvreference}}%
  {\ifthenelse{\iffieldequalstr{entrysubtype}{magazine}\AND\NOT%
      \ifentrytype{periodical}}% Simplify .bib creation
    {\ifuseauthor%
      {\ifboolexpr{%
          not test {\iffieldundef{shortjournal}}%
          and
          ((
          test {\ifcitation}%
          and
          togl {cms@citejtabb}%
          )
          or
          (
          test {\ifbibliography}%
          and
          togl {cms@bibjtabb}%
          ))
        }%
        {\printfield[shortjournal]{shortjournal}\newcunit}%
        {\printfield[journaltitle]{journaltitle}\newcunit}}%
      {}}%
    {\ifentrytype{manual}%
      {\printlist{organization}\isdot\newcunit}%
      {}}}%
  {\ifboolexpr{%
      test {\ifciteidem}%
      and
      not test {\ifbibliography}%
      and
      not test {\iffirstonpage}%
      and
      not togl {cms@noidem}%
      and
      not togl {cms@headlessnote}%
    }%
    {\bibstring[\mkibid]{idem\thefield{gender}}%
      \classicpunct}%
    {\iffieldequalstr{authortype}{anon}%
      {\bibleftbracket\printnames{labelname}%
        \bibrightbracket\classicpunct}%
      {\iffieldequalstr{authortype}{anon?}%
        {\bibleftbracket\printnames{labelname}?%
          \bibrightbracket\classicpunct}%
        {\printnames{labelname}%\usebibmacro{choose+labelname}%
          \isdot\classicpunct}}}}%
  \ifboolexpr{%
    togl {cms@allshort}%
    or
    test {\ifbibliography}%
  }%
  {\printtext[bibhyperref]{%
    \printfield[citetitle]{labeltitle}}}%
  {\printtext[cmshyperlink]{%
    \printfield[citetitle]{labeltitle}}}%#
  \iftoggle{bbx:ar:medinfo}
    {\newcunit
     \printfield{titleaddon}%
     \newcunit
     \usebibmacro{cbyeditor}}
  {}}
\makeatother

\begin{document}
1st time:
\volcite{2}[(cod.\ 172)169]{photios:bibliotheca:henry}.

2nd time:
\volcite{2}[(cod.\ 172)169]{photios:bibliotheca:henry}.

\cite{sigfridsson}

Again after \verb`\mancite`:
\volcite{2}[(cod.\ 172)169]{photios:bibliotheca:henry}.
\end{document}

后续非同上引文“Photios,*Bibliothèque*,cod. 172,ed. René Henry,第 2 卷,第 169 页。”

如果你只想要姓氏,请将\makeatletter...\makeatother块替换为更长的

\makeatletter
\renewbibmacro*{cite:short}{%
  \usebibmacro{allshort+firstcite+xref}%
  \ifthenelse{\ifnameundef{labelname}\OR%
    \ifentrytype{inreference}\OR%
    \ifentrytype{reference}\OR%
    \ifentrytype{mvreference}}%
  {\ifthenelse{\iffieldequalstr{entrysubtype}{magazine}\AND\NOT%
      \ifentrytype{periodical}}% Simplify .bib creation
    {\ifuseauthor%
      {\ifboolexpr{%
          not test {\iffieldundef{shortjournal}}%
          and
          ((
          test {\ifcitation}%
          and
          togl {cms@citejtabb}%
          )
          or
          (
          test {\ifbibliography}%
          and
          togl {cms@bibjtabb}%
          ))
        }%
        {\printfield[shortjournal]{shortjournal}\newcunit}%
        {\printfield[journaltitle]{journaltitle}\newcunit}}%
      {}}%
    {\ifentrytype{manual}%
      {\printlist{organization}\isdot\newcunit}%
      {}}}%
  {\ifboolexpr{%
      test {\ifciteidem}%
      and
      not test {\ifbibliography}%
      and
      not test {\iffirstonpage}%
      and
      not togl {cms@noidem}%
      and
      not togl {cms@headlessnote}%
    }%
    {\bibstring[\mkibid]{idem\thefield{gender}}%
      \classicpunct}%
    {\iffieldequalstr{authortype}{anon}%
      {\bibleftbracket\printnames{labelname}%
        \bibrightbracket\classicpunct}%
      {\iffieldequalstr{authortype}{anon?}%
        {\bibleftbracket\printnames{labelname}?%
          \bibrightbracket\classicpunct}%
        {\printnames{labelname}%\usebibmacro{choose+labelname}%
          \isdot\classicpunct}}}}%
  \ifboolexpr{%
    togl {cms@allshort}%
    or
    test {\ifbibliography}%
  }%
  {\printtext[bibhyperref]{%
    \printfield[citetitle]{labeltitle}}}%
  {\printtext[cmshyperlink]{%
    \printfield[citetitle]{labeltitle}}}%#
  \iftoggle{bbx:ar:medinfo}
    {\newcunit
     \printfield{titleaddon}%
     \newcunit
     \usebibmacro{cbyeditor:short}}
  {}}

\DeclareNameFormat{family}{%
  \usebibmacro{name:family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \usebibmacro{name:andothers}}

\newbibmacro*{cbyeditor:short}{%
  \ifnameundef{editor}%
    {}%
    {\usebibmacro{cbytypestrg}{editor}{editor}%
     \setunit{\addspace}%
     \printnames[family]{editor}%
     \newcunit}%
  \usebibmacro{cbyeditorx:short}}

\newbibmacro*{cbyeditorx:short}{%
  \ifnameundef{editora}%
    {}%
    {\usebibmacro{cbytypestrg}{editora}{editor}%
     \setunit{\addspace}%
     \printnames[family]{editora}%
     \newcunit}%
  \ifnameundef{editorb}%
    {}%
    {\usebibmacro{cbytypestrg}{editorb}{editor}%
     \setunit{\addspace}%
     \printnames[family]{editorb}%
     \newcunit}%
  \ifnameundef{editorc}%
    {}%
    {\usebibmacro{cbytypestrg}{editorc}{editor}%
     \setunit{\addspace}%
     \printnames[family]{editorc}%
     \newcunit}}
\makeatother

'ibid.' 后面的额外逗号是由 引入的biblatex-source-division。我认为这个包biblatex-chicago在编写时并没有考虑到这一点。

事实证明,这可能被视为 中的一个错误biblatex-source-division。我已将这个问题报告给了https://github.com/maieul/biblatex-source-division/issues/2Maïeul 的反应非常迅速。该软件包的 2.4.2 版本已修复此问题,此版本现已在 MikTeX 和 TeX live 中可用。

(该答案的早期版本包含针对该问题的临时修复。在更新版本后,该修复不再需要biblatex-source-division,因此我将其删除,可以在编辑历史记录中找到。)

相关内容