¿Cómo puedo agregar un comando \ url {} a una función .bst? En este caso, si el campo URL está vacío, quiero que lo llene con datos del campo DOI, vea el código a continuación. Necesito agregar esto a la cuarta línea, pero todas las formas que he intentado solo hacen que se bloquee.

FUNCTION {format.url}
{ is.use.url
    { url empty$
      {"[Online]. Available: https://doi.org/" doi * }
      { this.to.prev.status
        this.status.std
        cap.yes 'status.cap :=
        name.url.prefix " " *
        "\url{" * url * "}" *
        punct.no 'this.status.punct :=
        punct.period 'prev.status.punct :=
        space.normal 'this.status.space :=
        space.normal 'prev.status.space :=
        quote.no 'this.status.quote :=
      }
    if$
    }
    { "" }
  if$
}

Esto proviene del archivo IEEE.bst y se puede encontrar alrededor de la línea 1920

2
Austin Downey 11 oct. 2020 a las 20:41

1 respuesta

La mejor respuesta

Este es el código que desarrollé para autocompletar el campo URL del número DOI o arXiv. Todas las URL tienen hipervínculos.

Debes usar

\ usepackage [hidelinks] {hyperref}

Para que los hipervínculos funcionen. Aquí está el código que hice para el archivo .bst.

FUNCTION {format.url}
{ is.use.url
    { url empty$
        { doi empty$
            { eprint empty$
                { "" 
                }
                { this.to.prev.status
                this.status.std
                cap.yes 'status.cap :=
                "\href{https://arxiv.org/pdf/" eprint * "}{ [Online]. Available: https://arxiv.org/pdf/" * eprint * "}" * output
                punct.no 'this.status.punct :=
                punct.period 'prev.status.punct :=
                space.normal 'this.status.space :=
                space.normal 'prev.status.space :=
                quote.no 'prev.status.quote :=    
                }
              if$
            }
            { this.to.prev.status
            this.status.std
            cap.yes 'status.cap :=
            "\href{http://dx.doi.org/" doi * "}{[Online]. Available: http://dx.doi.org/" * doi * "}" * output
            punct.no 'this.status.punct :=
            punct.period 'prev.status.punct :=
            space.normal 'this.status.space :=
            space.normal 'prev.status.space :=
            quote.no 'this.status.quote :=    
            }
          if$
        }
        { this.to.prev.status
            this.status.std
            cap.yes 'status.cap :=
            name.url.prefix " " *
            "\url{" * url * "}" *
            punct.no 'this.status.punct :=
            punct.period 'prev.status.punct :=
            space.normal 'this.status.space :=
            space.normal 'prev.status.space :=
            quote.no 'this.status.quote :=
        }
    if$
    }
    { "" }
  if$
}
0
Austin Downey 23 nov. 2020 a las 01:36