【问题标题】:adding \url link to function in .bst file在 .bst 文件中添加 \url 链接到函数
【发布时间】:2021-01-26 03:15:09
【问题描述】:

如何将 \url{} 命令添加到 .bst 函数。在这种情况下,如果 URL 字段为空,我希望它用 DOI 字段中的数据填充它,请参见下面的代码。我需要将此添加到第 4 行,但我尝试的每一种方法都会导致它崩溃。

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

这来自 IEEE.bst 文件,可以在 1920 行附近找到

【问题讨论】:

    标签: latex tex bibtex biblatex


    【解决方案1】:

    这是我开发的用于从 DOI 或 arXiv 编号自动填充 URL 字段的代码。所有 URL 都带有超链接。

    你必须使用

    \usepackage[隐藏链接]{hyperref}

    让超链接正常工作。这是我为 .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$
    }
    

    【讨论】:

      猜你喜欢
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多