使用 BibLaTeX 括号表示引用编号

使用 BibLaTeX 括号表示引用编号

对于使用 BibLaTeX 包的科学论文,我被要求将引用编号格式化如下:

  • 引用参考文献时,在文末右上角用上标数字和半角右括号“)”表示:“此方法1)在过去被研究过”;
  • 在书目中打印参考文献时,使用数字和半角括号:“(1)作者等”。

给定一种任意风格,我该如何实现这一点?

以下是 MWE:

\documentclass{article}
\usepackage[style=numeric, sorting=none]{biblatex}
\addbibresource{\jobname.bib}

\begin{filecontents}{\jobname.bib}
@book{key,
  author = {Author, A.},
  year = {2001},
  title = {Title},
  publisher = {Publisher},
}
\end{filecontents}

\begin{document}

This method was investigated\cite{key} in the past.

\printbibliography

\end{document}

答案1

引用参考

答案取决于我们使用什么引用命令。

BibLaTeX 提供了上标引用的命令\supercite,我们可以重新定义(从这个答案):

\DeclareCiteCommand{\supercite}[\mkbibsuperscript]
{\iffieldundef{prenote}
  {}
  {\BibliographyWarning{Ignoring prenote argument}}%
  \iffieldundef{postnote}
  {}
  {\BibliographyWarning{Ignoring postnote argument}}}
{\usebibmacro{citeindex}%
  \usebibmacro{cite})}
{\supercitedelim}
{}

可以替换其他引用命令(例如\parencite)。

\textcite更加复杂,我们必须重新定义这个宏(从这个答案):

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

可以通过在连续的引用之间添加空格来改进此解决方案:

\renewcommand{\supercitedelim}{, }

但是,此解决方案使用了由参考书目样式本身定义的 BibLaTeX 宏(例如\usebibmacro{cite}),该宏numeric在此处。如果不进行调整,它可能无法与其他样式一起使用。

印刷参考

灵感来自这个答案。我们简单改变一下字段格式:

\DeclareFieldFormat{labelnumberwidth}{(#1)}

将 MWE 的结果替换\cite\supercite

相关内容