Biblatex-nature \textcite 带上标参考编号

Biblatex-nature \textcite 带上标参考编号

我的问题与这个问题(无耻地复制 MWE 的内容)。

我希望获得相同的引用样式,因此,\textcite结果是作者后面跟着上标引用。biblatex-nature然而,的标准是“全尺寸”引用

\documentclass{report}

\usepackage[style=nature]{biblatex}
\usepackage{filecontents}

\begin{filecontents}{ABib.bib}
@article {article1,
 AUTHOR = {Author, A. N.},
 TITLE = {A sample paper},
 JOURNAL = {Sample journal},
 VOLUME = {1},
 YEAR = {2013},
 NUMBER = {1},
 PAGES = {1--2}}
\end{filecontents}

\addbibresource{ABib.bib}

\begin{document}
Someone saw something \autocite{article1}.

\textcite{article1} saw something.
\end{document}

但是,前面链接问题的答案与该style=nature命令结合使用时会出现以下错误;

! Package biblatex Error: Bibliography macro 'cite' undefined.

答案1

假设你不想要“自动引用”魔法,那么

\makeatletter
\renewbibmacro*{textcite}{%
  \iffieldequals{namehash}{\cbx@lasthash}
    {\usebibmacro{cite:comp}}
    {\usebibmacro{cite:dump}%
     \ifbool{cbx:parens}
       {\bibclosebracket\global\boolfalse{cbx:parens}}
       {}%
     \iffirstcitekey
       {}
       {\textcitedelim}%
     \usebibmacro{cite:init}%
     \ifnameundef{labelname}
       {\printfield[citetitle]{labeltitle}}
       {\printnames{labelname}}%
     \addspace
     \ifnumequal{\value{citecount}}{1}
       {\usebibmacro{prenote}}
       {}%
     \mkbibsuperscript{\usebibmacro{cite:comp}}%
     \stepcounter{textcitecount}%
     \savefield{namehash}{\cbx@lasthash}}}
\makeatother

可以完成这项工作。这适用于任何派生自numeric-comp(包括nature样式)的样式:压缩样式使用多部分方法处理引用编号,因此“简单”解决方案不适用。

请注意,如果引用出现在句末,则这种方法不会移动标点符号。

相关内容