引用名称而非数字

引用名称而非数字

假设我的参考书目中有一条条目,如下所示

@book{BOSCH,
    Author = {Bosch and Lutkebohmert and Raynaud},
    Publisher = {Springer},
    Title = {N{\'e}ron Models},
    Year = {1990}}

当我引用它时,\cite{BOSCH}我得到[1]了 PDF。

相反,我希望得到[BOSCH]。这可能吗?

答案1

编辑

更简单的解决方案是修改alphabetic样式。只需强制label将 设置为 即可citekey

\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{citekey}
  }
}

我们就完成了。

\documentclass{article}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,url=true,style=alphabetic]{biblatex}
\usepackage{filecontents}
\addbibresource{biblatex-examples.bib}

\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{citekey}
  }
}

\begin{document}
  \cite{wilde,westfahl:space}
  \printbibliography
\end{document}

在此处输入图片描述


初步解决方案

您也许会喜欢这种numeric风格的细微修改。

我们让citebibmacro 只打印entrykey

\DeclareFieldFormat{key}{#1}
\renewbibmacro*{cite}{%
  \printtext[bibhyperref]{\printfield[key]{entrykey}}}

我们还必须重新定义书目。

\defbibenvironment{bibliography}
  {\list
     {\printtext[labelnumberwidth]{%
        \printfield[key]{entrykey}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}
  {\item}

我不禁觉得标签宽度的问题可以改进,但对于很长的标签来说,这也可能会出错。

\documentclass{article}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,url=true,style=numeric]{biblatex}
\usepackage{filecontents}
\addbibresource{biblatex-examples.bib}

\defbibenvironment{bibliography}
  {\list
     {\printtext[labelnumberwidth]{%
        \printfield[key]{entrykey}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}
  {\item}

\DeclareFieldFormat{key}{#1}
\renewbibmacro*{cite}{%
  \printtext[bibhyperref]{\printfield[key]{entrykey}}}

\begin{document}
  \cite{wilde,westfahl:space}
  \printbibliography
\end{document}

在此处输入图片描述

相关内容