假设我有一个如下所示的参考书目条目(我正在使用biblatex
):
@article{foo,
author = {A. Author},
title = {Super article},
archivePrefix = "arXiv",
eprint = "3301.1234",
primaryClass = "hep-ex"
}
我想创建一个命令\arxiv
,可以使用它来
\arxiv{foo}
打印
[1][arXiv:3301.1234]
where[1]
与 what 的作用相同\cite
,第二部分将链接到文章的 arXiv 页面,例如http://arxiv.org/abs/3301.1234
。
可以这样做吗?我想要这个,这样我就可以在 beamer 中引用 arXiv 论文,而且如果有人(或我后来)拆开幻灯片,即使没有参考书目幻灯片,引用也是有用的。
答案1
您可以定义\arxivcite
。这是正常的,并且如果可用,\cite
还会打印信息eprint
\DeclareCiteCommand{\arxivcite}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}%
\newunit
\usebibmacro{eprint}}
{\multicitedelim}
{\usebibmacro{postnote}}
对于numeric-comp
,尝试
\makeatletter
\DeclareFieldFormat{eprint:cite:arxiv}{%
arXiv\addcolon\space
\ifhyperref
{\href{http://arxiv.org/\abx@arxivpath/#1}{%
\nolinkurl{#1}}}
{\nolinkurl{#1}}}
\makeatother
\newbibmacro*{cite:eprint}{%
\iffieldundef{eprinttype}
{\printfield{eprint}}
{\printfield[eprint:cite:\strfield{eprinttype}]{eprint}}}
\DeclareCiteCommand{\arxivcite}
{}
{\printtext[labelnumberwidth]{%
\usebibmacro{prenote}%
\usebibmacro{citeindex}%
\printtext[bibhyperref]{%
\printfield{labelprefix}%
\printfield{labelnumber}}%
\usebibmacro{postnote}}%
\printtext[brackets]{\usebibmacro{cite:eprint}}}
{\multicitedelim}
{}
这会禁用此特定命令的所有功能。对于要使用的每种类型-comp
,您都必须有一个。\DeclareFieldFormat{eprint:cite:<type>}
eprint