是否有可能有一个单一标题选项的增强版本?

是否有可能有一个单一标题选项的增强版本?

我在使用 biblatex 时遇到以下问题:我使用的引用样式在脚注中提供了完整的引用,后续引用则引用第一个脚注(类似于 verbose-note/verbose-inote)。这些后续引用应仅包含作者的姓氏和对首次引用该脚注的引用,除非此脚注中有此作者的多个作品。因此,我正在寻找类似于“单一标题”选项的功能,但不针对所有引用的作品,而仅限于一个脚注。

为了说明问题,我举了一个最小的例子。“Nachname”不应该有简称,因为对相应脚注的引用已经很明确了。它应该看起来像“Dritter”的简称。但“Buchautor”应该有一个简称,因为脚注中有两部这位作者的作品,第一部分是引用。顺便说一句,“singletitle”选项是由verbose-note和verbose-inote设置的,所以这里不需要明确给出它。

\documentclass[ngerman]{scrartcl}
\listfiles
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@ARTICLE{Nachname1,
  author = {Nachname, Vorname},
  title = {Titel des Zeitschriftenartikels},
 shorttitle = {Titel},
  journal = {Zeitschrift},
  date = {2006},
  volume = {6},
  pages = {19--75}
}
@BOOK{Buchautor1,
  author = {Buchautor, Hans-Wilhelm},
  title = {Irgendein Buch},
 shorttitle = {Irgendein},
  location = {Buch am Wald},
  date = {2000}
}
@BOOK{Nachname2,
  author = {Nachname, Vorname},
  title = {Ein Buch},
 shorttitle = {Buch},
  date = {2004},
 location = {Berlin}
}
@BOOK{Buchautor2,
  author = {Buchautor, Hans-Wilhelm},
  title = {Ein weiteres Buch},
 shorttitle = {Weiteres},
  location = {München},
  date = {2002} 
}
@ARTICLE{Dritter,
 author = {Dritter, Dieter},
 title = {Der Dreisprung in Geschichte und Gegenwart},
 shorttitle = {Dreisprung},
 date = {2010},
 journal = {Dynamik}
}
\end{filecontents}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel,csquotes}

\usepackage[
  style=verbose-inote
]{biblatex}
\bibliography{\jobname}

\begin{document}
\footcite{Nachname1,Dritter}
\footcite{Nachname2}
\footcite{Buchautor1,Buchautor2}
\footcite{Dritter}
\footcite{Nachname2}
\footcite{Buchautor2}
\footcite{Buchautor1}
\footcite{Nachname1}
\end{document}

有人知道我该从哪里开始吗?

答案1

我想我已经明白了。:-)

singletitle在后续引用中打印短标题由引用 bbl 文件中数据的布尔开关控制。必须用更复杂的方法替换此开关。

  • 我创建了一个新的计数器,每当使用citecommand类似的命令时,它就会递增。\footcite

  • 每次第一次引用条目时,都会调用宏footcite:full和。我添加了一些功能,以便它 a) 保存当前的值和 b) 创建一个从值和条目字段(每个作者的唯一哈希字符串)派生的唯一命令。如果第一次定义此命令,它将扩展为“single”,之后扩展为“multi”。footcite:savefootcite:savecitecommandcitecommandfullhash

  • footcite:note在用于后续引用的宏中,我\ifsingletitle用相应的“first-cite”唯一命令的状态测试替换了该测试。

必须在 domwass 最小示例的序言中添加以下内容:

\newcounter{citecommand}% NEW

\renewbibmacro*{prenote}{%
  \stepcounter{citecommand}% NEW
  \iffieldundef{prenote}
    {}
    {\printfield{prenote}%
     \setunit{\prenotedelim}}}

\makeatletter

\renewbibmacro*{footcite:save}{%
  \csxdef{cbx@f@\thefield{entrykey}}{\the\value{instcount}}%
  \label{cbx@\the\value{instcount}}%
  \csxdef{cbx@g@\thefield{entrykey}}{\the\value{citecommand}}% NEW
  \ifcsdef{cbx@\the\value{citecommand}@\thefield{fullhash}}{% NEW
    \csxdef{cbx@\the\value{citecommand}@\thefield{fullhash}}{multi}% NEW
  }{% NEW
    \csxdef{cbx@\the\value{citecommand}@\thefield{fullhash}}{single}% NEW
  }% NEW
}

\renewbibmacro*{footcite:note}{%
  \ifnameundef{labelname}
    {\printfield{label}}
    {\printnames{labelname}}%
%   \ifsingletitle% DELETED
  \ifcsstring{cbx@\csuse{cbx@g@\thefield{entrykey}}@\thefield{fullhash}}{single}% NEW
    {}
    {\setunit*{\nametitledelim}%
     \printfield[title]{labeltitle}}%
  \setunit*{\addcomma\space}%
  \printtext{%
    \bibstring{seenote}\addnbspace
    \ref{cbx@\csuse{cbx@f@\thefield{entrykey}}}%
    \iftoggle{cbx:pageref}
      {\ifsamepage{\the\value{instcount}}
                  {\csuse{cbx@f@\thefield{entrykey}}}
         {}
     {\addcomma\space\bibstring{page}\addnbspace
      \pageref{cbx@\csuse{cbx@f@\thefield{entrykey}}}}}
      {}}}

\makeatother

编辑:由于不需要(直接)引用的值citecommand\stepcounter{citecommand}所以就足够了。

相关内容