简称的引用

简称的引用

我使用 biblatex 来引用和参考书目,将引用放在尾注中,并使用 authortitle 样式。我需要在注释中引用一部作品并仅提及作者,但如果该作者在参考书目中有多个作品,则需要在引用中使用作者和简称的组合。

例如:

  1. 史密斯,第 10 页。
  2. 琼斯,《乱世佳人》,第 11 页。
  3. 史密斯,第 23 页。
  4. Jones,《不再有风》,第 2 页。等等

我已经成功实现了 Jones, “Gone with the Wind”, p.11 类型的条目,但我的所有条目(包括 Smith 的条目)都采用这种格式。如何从 Smith 类型的条目(即参考书目中只有一个标题的作者)中删除简称?

谢谢您的帮助。

以下代码显示了我的 biblatex 设置:

\documentclass[11pt, article, oneside]{memoir}
\usepackage{endnotes}
\let\footnote=\endnote
\renewcommand{\notesname}{}
\usepackage[citestyle=authortitle-ibid, bibstyle=authortitle, sorting=nyt, 
block=space, terseinits=true, backend=biber]{biblatex}
\defbibheading{memoir}{}
\bibliography{/Volumes/Current/work/core/biblio14}
\DefineBibliographyStrings{australian}{% 
bibliography = {References},
shorthands = {Abbreviations}, 
editor = {editor}, 
editors = {editors},
techreport = {},
in = {~}, 
}

\newbibmacro*{shorttitle}{%
  \setunit*{\addcomma\space}%
  \printlist{shorttitle}%
  \setunit*{\addcomma\space}
  \newunit}

\begin{document}

blah blah blah \footnote{\cite[247]{Kaufmann2014b}}
blah blah blah


\newpage
\addcontentsline{toc}{chapter}{Notes}
\chapter*{Notes}
% 
\begingroup
\renewcommand{\makeenmark}{\hbox{\theenmark}.\quad}
\parindent 0pt
\parskip 2ex
\def\enotesize{\normalsize}
\theendnotes
\endgroup

\chapter*{References}
\raggedright
\printbibliography[heading=memoir]

\end{document}

答案1

如果我们启用打包选项,singletitle我们可以使用测试\ifsingletitle来检查特定作者是否只有一部作品。

cite:title如果是这种情况,我们可以修改宏,让它不执行任何操作

\renewbibmacro*{cite:title}{%
  \ifsingletitle
    {}
    {\printtext[bibhyperref]{%
       \printfield[citetitle]{labeltitle}}}}

不过,这会导致标点符号有点复杂,所以我们还需要

\renewbibmacro*{cite}{%
  \global\boolfalse{cbx:loccit}%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
       {\usebibmacro{cite:ibid}}
       {\ifnameundef{labelname}
          {}
          {\printnames{labelname}%
           \ifsingletitle{}{\setunit{\nametitledelim}}}%<--- the change is here
        \usebibmacro{cite:title}}}%
    {\usebibmacro{cite:shorthand}}}

请注意,在你的 MWE 中,我改变了你对in抑制“in:”的标准方法,我也使用style=authortitle-ibid而不是更长但等效的citestyle=authortitle-ibid, bibstyle=authortitle。我也不喜欢techreport = {},,但我不完全确定你想在那里做什么,所以我留下了它,也许,只是也许\AtEveryBibitem{\clearfield{type}}可以满足你的要求。我们还使用了\footcite{foo}而不是\footnote{\cite{foo}}

\documentclass[11pt, article, oneside]{memoir}
\usepackage[australian]{babel}
\usepackage{csquotes}
\usepackage{endnotes}
\let\footnote=\endnote
\renewcommand{\notesname}{}
\usepackage[style=authortitle-ibid, terseinits=true, block=space, backend=biber, singletitle]{biblatex}
\defbibheading{memoir}{}

\addbibresource{biblatex-examples.bib}

\DefineBibliographyStrings{australian}{% 
bibliography = {References},
shorthands = {Abbreviations}, 
editor = {editor}, 
editors = {editors},
techreport = {},
}

\renewbibmacro{in:}{}

\renewbibmacro*{cite}{%
  \global\boolfalse{cbx:loccit}%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
       {\usebibmacro{cite:ibid}}
       {\ifnameundef{labelname}
          {}
          {\printnames{labelname}%
           \ifsingletitle{}{\setunit{\nametitledelim}}}%
        \usebibmacro{cite:title}}}%
    {\usebibmacro{cite:shorthand}}}

\renewbibmacro*{cite:title}{%
  \ifsingletitle
    {}
    {\printtext[bibhyperref]{%
       \printfield[citetitle]{labeltitle}}}}


\begin{document}

blah\footcite[12]{sigfridsson} blah\footcite{worman,pines} blah\footcite[34]{knuth:ct:b}
blah\footcite[56]{geer} blah\footcite[78]{knuth:ct:c} blah.


\newpage
\addcontentsline{toc}{chapter}{Notes}
\chapter*{Notes}
% 
\begingroup
\renewcommand{\makeenmark}{\hbox{\theenmark}.\quad}
\parindent 0pt
\parskip 2ex
\def\enotesize{\normalsize}
\theendnotes
\endgroup

\chapter*{References}
\raggedright
\printbibliography[heading=memoir]

\end{document}

示例输出:注释部分的剪切

相关内容