Arxiv ID 显示在 BibTeX amsref 中,但链接不起作用

Arxiv ID 显示在 BibTeX amsref 中,但链接不起作用

我使用 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}}

将所有eprints 链接到其 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 之外的其他来源获得的任何“电子印刷”条目。

它非常杂乱。如果您能提供任何改进或简化它的建议,我将不胜感激。

相关内容