![Arxiv ID 显示在 BibTeX amsref 中,但链接不起作用](https://linux22.com/image/375061/Arxiv%20ID%20%E6%98%BE%E7%A4%BA%E5%9C%A8%20BibTeX%20amsref%20%E4%B8%AD%EF%BC%8C%E4%BD%86%E9%93%BE%E6%8E%A5%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我使用 BibDesk 来管理标准 AMS 文章的参考文献。以下是典型的 Bibentry
@article{Braverman:ab,
Author = {Alexander Braverman and Pavel Etingof},
Date-Added = {2018-04-13 00:34:57 +0000},
Date-Modified = {2018-04-28 05:17:44 +0000},
Eprint = {math/0409441},
Title = {{Instanton counting via affine Lie algebras II: from Whittaker vectors to the Seiberg-Witten prepotential}},
Url = {https://arxiv.org/pdf/math/0409441},
Bdsk-Url-1 = {https://arxiv.org/abs/math/0409441},
Bdsk-Url-2 = {https://arxiv.org/pdf/math/0409441}}
因此,有 URL 和 Eprint 字段。在输出中,我得到了这个
Alexander Braverman 和 Pavel Etingof,通过仿射李代数进行瞬子计数 II:从 Whittaker 向量到 Seiberg-Witten 预势,可在 math/0409441 获得。
其中 arxiv ID math/0409441 是可点击的,但浏览器认为 math/0409441 是完整路径,因此无法打开页面。我可以手动添加完整的 url
https://arxiv.org/pdf/math/0409441
但这样我的参考文献列表中就会有 100 多个 https://....,这毫无意义。它们会给论文增加半页左右,并遮挡参考文献列表的视图。
有什么快速解决方案可以解决此问题,而无需更改每个条目(我有数百个条目),这样只会显示 arxiv ID,而且当我单击它时,浏览器会知道该去哪里?同样,如何隐藏https://arxiv.org/pdf/?
答案1
amsrefs
使用命令\eprint
格式化字段eprint
,其标准定义是\newcommand{\eprint}[1]{\url{#1}}
。您可以根据自己的喜好重新定义命令。假设您加载hyperref
\renewcommand{\eprint}[1]{\href{https://arxiv.org/abs/#1}{arXiv:#1}}
将所有eprint
s 链接到其 arXiv 页面,但仅在参考书目中显示简短的“arXiv:math/0409441”指示符。
答案2
那么下面这个怎么样?首先,这写在你的序言中:
\usepackage{amsrefs}
\DefineSimpleKey{bib}{arxiveprint}
\DefineSimpleKey{bib}{arxivid}
\DefineSimpleKey{bib}{arxivclass}
\makeatletter
\catcode`\'=11 % letter; it was originally 12
\def\arxiveprint{%
\resolve@inner{\bib@arxiveprint}
}
\def\bib@arxiveprint#1{%
\begingroup
#1\relax
\bib@resolve@xrefs
\bib@field@patches
\bib'setup
\let\PrintPrimary\@empty
{%
\IfEmptyBibField{arxivid}{\url{https://arxiv.org/}}
{%
\href{https://arxiv.org/abs/\bib'arxivid}{\nolinkurl{arXiv:\bib'arxivid}}%
\IfEmptyBibField{arxivclass}{}{~\nolinkurl{[\bib'arxivclass]}}% \nopunct
}
}\bib'transition
\setbib@@
\endgroup
}
\catcode`\'=12 % other
\makeatother
\BibSpec{arxiv}{%
+{} {\PrintAuthors} {author}
+{,} { \textit} {title}
+{.} { } {part}
+{:} { \textit} {subtitle}
+{,} { \PrintContributions} {contribution}
+{.} { \PrintPartials} {partial}
+{,} { } {journal}
+{} { \textbf} {volume}
+{} { \PrintDatePV} {date}
+{,} { \issuetext} {number}
+{,} { \eprintpages} {pages}
+{,} { } {status}
+{,} { \PrintDOI} {doi}
+{,} { available at \eprint} {eprint}
+{,} { available at \arxiveprint} {arxiveprint}
+{} { \parenthesize} {language}
+{} { \PrintTranslation} {translation}
+{;} { \PrintReprint} {reprint}
+{.} { } {note}
+{.} {} {transition}
+{} {\SentenceSpace \PrintReviews} {review}
}
然后你可以写入类似的条目
\bib{citekey}{arxiv}{
author={Author, Name},
title={Title},
date={2018},
arxiveprint={
arxivid={1899.1234},
arxivclass={math.XY},
},
}
这边走
- 它正确链接到 arxiv 预印本。
- 它显示了主题类别。
- 无论出于什么原因,Arxiv 都希望主题类别不是成为链接的一部分(非常感谢 Arxiv 让它变得简单),这样就实现了这一点。
- 它不会干扰您从 Arxiv 之外的其他来源获得的任何“电子印刷”条目。
它非常杂乱。如果您能提供任何改进或简化它的建议,我将不胜感激。