在脚注中仅显示一次信息

在脚注中仅显示一次信息

我正在使用citestyle=authortitle-ibid,但我必须使其按照以下规则工作:

  1. 第一次引用时,脚注中应包含所有信息(包括出版商、作者、编辑、包含书籍、年份等)。
  2. 第二次使用同一参考资料时,即使位于另一页,脚注也应包含作者、年份和页码,除非没有标题信息会含糊不清。在后一种情况下,也应包含标题。

我想知道如何才能做到这一点。就我个人而言,我认为把所有信息都放在脚注里是个坏主意,但是,有人告诉我这样做。

答案1

更新答案

我最初的回答使用了chicago,因为这是一种高度发达的风格,我认为它接近于想要的风格。然而,回复中的一条评论表明,提问者已经.bbx根据 开发了自己的自定义风格authortitle-ibid,我认为那里可能会有冲突。

坦率地说,我不认为authortitle-ibid这是开始的地方:你想要的风格的一个关键特征是(a)满的首先引用 (b)短的后续使用时引用。接近此标准的样式是verbose-ibid,这可能是正确的起点。它仍然更倾向于与您的自定义调整兼容,因为authortitle-ibid就完整引用而言,它不会离 太远,而且肯定会比 更接近chicago。如果您从 开始,authortitle您将不得不重新创建 中已经存在的完整引用等所有结构verbose,这是毫无意义的。

verbose-ibid样式中,缩短引用的排版由 处理bibmacro cite:short,因此我们重新定义了它。

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{author1,
  author    = {Author, A.},
  title     = {First Work},
  date      = {2010},
  publisher = {Publisher},
}
@book{author2,
  author    = {Author, A.},
  title     = {Second Work},
  date      = {2010},
  publisher = {Publisher},
}
@book{author3,
  author    = {Author, A.},
  title     = {Third Work},
  date      = {2011},
  publisher = {Publisher},
}
\end{filecontents}
\setlength{\textheight}{2in}

\usepackage[style=verbose-ibid,labeldate=true]{biblatex}
\makeatletter
\renewbibmacro*{cite:short}{%
  \printnames{labelname}%
  \iffieldundef{extrayear}%
    {\setunit*{\addspace}%
     \printtext[bibhyperlink]{%
     \mkbibparens{\printdatelabel}}}
    {\setunit*{\nametitledelim}%
     \printtext[bibhyperlink]{%
     \printfield[citetitle]{labeltitle}%
     \setunit*{\addspace}%
     \printtext{\mkbibparens{\printdatelabel}}}}}
\makeatother

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}

We use \texttt{verbose-ibid} as our style, setting \texttt{labeldate}
true so as to have a hook to decide if we have multiple works by the
same author(s) in the same year.

We revise the \texttt{cite:short} macro. On the first occasion
something is printed, we will have full citations.\footcite{author1,
  author2, author3} On subsequent occasions they will be shortened,
with titles added only if necessary for
disambiguation.\footcite{author1, author2, author3}

\end{document}

制作:

结果

原始答案

您想要的效果几乎是biblatex-chicago样式的默认效果,带有notes选项:它(不寻常地)作为独立包而不是样式加载,但它充分利用了biblatex。文档很详尽。

确实,我一开始以为这只是你想要的:但我读得太快了——默认是后续引用采用作者/标题样式,而不是你建议的作者/年份和标题的混合。然而,这可以通过重新定义一个来相当容易地实现bibmacro:我们还需要添加选项labeldate,不是因为我们以这种方式添加了任何其他标签,而是因为它是一种方便的方式来biber告诉我们在给定年份是否有多个相关引用。我认为,基本技术可以很容易地适应标准样式。

以下是一个简单示例:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{author1,
  author = {Author, A.},
  title  = {First Work},
  date   = {2010},
}
@book{author2,
  author = {Author, A.},
  title  = {Second Work},
  date   = {2010},
}
@book{author3,
  author = {Author, A.},
  title  = {Third Work},
  date   = {2011},
}
\end{filecontents}

\usepackage[notes,labeldate=true]{biblatex-chicago}
\makeatletter
\renewbibmacro*{cite:short}{%
  \ifthenelse{\ifnameundef{labelname}\OR%
    \ifentrytype{inreference}\OR%
    \ifentrytype{reference}\OR%
    \ifentrytype{mvreference}}%
  {\iffieldequalstr{entrysubtype}{magazine}% Simplify .bib creation
    {\ifuseauthor%
      {\printfield[journaltitle]{journaltitle}\isdot\newcunit}%
      {}}%
    {\ifentrytype{manual}%
      {\printlist{organization}\isdot\newcunit}%
      {}}}%
  {\iffieldequalstr{authortype}{anon}%
    {\bibleftbracket\printnames{labelname}%
      \bibrightbracket\classicpunct}%
    {\iffieldequalstr{authortype}{anon?}%
      {\bibleftbracket\printnames{labelname}?%
        \bibrightbracket\classicpunct}%
      {\usebibmacro{choose+labelname}%\printnames{labelname}%
        \isdot\classicpunct}}}%
  \iffieldundef{extrayear}% Is the reference unique?
    {\setunit*{\addspace}}% No: change punctuation from comma to space ready for year
    {\printfield[citetitle]{labeltitle}% Yes: print the title
     \setunit*{\addspace}}%
  \ifboolexpr{%
    togl {cms@allshort}%
    or
    test {\ifbibliography}
  }%
  {\printtext[bibhyperref]{%
    \mkbibparens{\printdatelabel}}}% We want the date label not the title
  {\printtext[cmshyperlink]{%
    \mkbibparens{\printdatelabel}}}% We want the date label not the title
}%:\thefield{entrytype}?
\makeatother

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}

With \texttt{biblatex-chicago} with the \texttt{notes} option, the
default is for citation to appear in footnotes, with a full citation
on the first occasion and an abbreviated citation on subsequent occasions. 

So the first citation is full,\footcite{author1} an immediately
following citation will use \emph{ibid}\footcite[Thus:][]{author1},
(unless \texttt{ibidtracker} is set false) but otherwise later
citations will be abbreviated.

We do, however, have to make minor modifications to one macro, because
by default the package assumes author/title citations, but we have to
provide author/year citations, with the date printed only if there is
more than one work in the relevant year. We thus get all our full
citations out,\footcite{author1, author2, author3} and then
demonstrate that happening.\footcite{author1, author2, author3}

\end{document}

修改结果

相关内容