我使用 biblatex 来引用和参考书目,将引用放在尾注中,并使用 authortitle 样式。我需要在注释中引用一部作品并仅提及作者,但如果该作者在参考书目中有多个作品,则需要在引用中使用作者和简称的组合。
例如:
- 史密斯,第 10 页。
- 琼斯,《乱世佳人》,第 11 页。
- 史密斯,第 23 页。
- 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}