6

I use BibDesk to manage my references for the standard AMS article. Here's a typical 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}}

So there are both URL and Eprint fields. In the output I get this

Alexander Braverman and Pavel Etingof, Instanton counting via affine Lie algebras II: from Whittaker vectors to the Seiberg-Witten prepotential, available at math/0409441.

where arxiv ID math/0409441 is clickable, but the browser thinks that math/0409441 is the full path, so it cannot open the page. I could add by hand the complete url

https://arxiv.org/pdf/math/0409441

but then I'll have 100+ https://.... in my reference list which makes no sense. They add half a page or so to the paper and obscure the view of the reference list.

What is a quick fix without changing every entry (I have hundreds) so that only the arxiv ID will be displayed, and yet, when I click on it the browser would know where to go? Equivalently, how to hide https://arxiv.org/pdf/ ?

1
  • 2
    \renewcommand{\eprint}[1]{\url{https://arxiv.org/abs/#1}} or \renewcommand{\eprint}[1]{\href{https://arxiv.org/abs/#1}{arXiv:#1}}. But that assumes that all your eprints are arXiv identifiers and that all are valid when linked.
    – moewe
    Apr 28, 2018 at 7:03

2 Answers 2

11

amsrefs uses the command \eprint to format the eprint field, its standard definition is \newcommand{\eprint}[1]{\url{#1}}. You can redefine the command to your liking. Assuming you load hyperref

\renewcommand{\eprint}[1]{\href{https://arxiv.org/abs/#1}{arXiv:#1}}

links all eprints to their arXiv page, but only displays the short "arXiv:math/0409441" designator in the bibliography.

3

How about the following. First, this goes in your preamble:

\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}
}

Then you can write entries like

\bib{citekey}{arxiv}{
      author={Author, Name},
       title={Title},
        date={2018},
      arxiveprint={
        arxivid={1899.1234},
        arxivclass={math.XY},
      },
}

This way

  • It correctly links to the arxiv preprint.
  • It shows the subject class.
  • For whatever reason, Arxiv wants the subject class to not be part of the link (thanks a lot for making it simple, Arxiv), this achieves that.
  • It doesn't interfere with any 'eprint' entries you may have from other sources besides Arxiv.

It's very much hacked together. I would be grateful for any suggestions how to improve or simplify it.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .