BibTeX (TeX Live 2013) 无法在 URL 中转义 &

BibTeX (TeX Live 2013) 无法在 URL 中转义 &

&BibTeX(Ubuntu上的 TeX Live 2013)无法逃避网址.%逃脱但没有&

例如我有以下参考:

@article{benson1975,
    title = {The Interorganizational Network as a Political Economy},
    volume = {20},
    issn = {00018392},
    url = {http://www.jstor.org/discover/10.2307/2391696?uid=3737664&uid=2134&uid=2129&uid=2&uid=70&uid=4&sid=21102581457607},
    doi = {10.2307/2391696},
    number = {2},
    urldate = {2013-08-25},
    journal = {Administrative Science Quarterly},
    author = {Benson, J. Kenneth},
    month = jun,
    year = {1975},
    pages = {229}
}

当我引用它时,bbl文件保持&完整,如下所示:

\htmladdnormallink{$<$http:\-/\-/www\-.jstor\-.org\-/discover\-/10\-.2307\-/2391696?uid=3737664&uid=2134&uid=2129&uid=2&uid=70&uid=4&sid=21102581457607$>$}{http://www.jstor.org/discover/10.2307/2391696?uid=3737664&uid=2134&uid=2129&uid=2&uid=70&uid=4&sid=21102581457607}.}

当我手动用LaTeX 替换&里面的内容时,编译完美,所以我确信有一种方法可以逃避这个问题&它会像魔法一样发挥作用。\htmladdnormallink\&

请注意,在 BibTeX ( ) 上转义 &\&不起作用(在 URL 之外有效,但在 URL 中无效)。结果bbl是 { \textbackslash}&而不是\&

\htmladdnormallink{$<$http:\-/\-/www\-.jstor\-.org\-/discover\-/10\-.2307\-/2391696?uid=3737664{\textbackslash}&uid=2134{\textbackslash}&uid=2129{\textbackslash}&uid=2{\textbackslash}&uid=70{\textbackslash}&uid=4{\textbackslash}&sid=21102581457607$>$}{http://www.jstor.org/discover/10.2307/2391696?uid=3737664\&uid=2134\&uid=2129\&uid=2\&uid=70\&uid=4\&sid=21102581457607}.}

如果有什么不同的话,我会使用:

\documentclass[
    article,
    11pt,
    oneside,
    a4paper,
    english,
    brazil
    ]{abntex2}

\usepackage{cmap}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{indentfirst}
\usepackage{nomencl}
\usepackage{color}
\usepackage{graphicx}

\usepackage[brazilian,hyperpageref]{backref}
\usepackage[alf]{abntex2cite}

\hypersetup{
    pdftitle={\@title}, 
    pdfauthor={\@author},
    pdfcreator={\@author},
    colorlinks=true,
    linkcolor=blue,
    citecolor=blue,
    filecolor=magenta,
    urlcolor=blue,
    bookmarksdepth=4
}

答案1

因此经过一番摆弄之后,我找到了一个选项,可以将abntex2citeurl 包从 更改hyperrefurl

\usepackage[alf, abnt-url-package=url]{abntex2cite}

这解决了 的问题&,但 又产生了 的相同问题%。幸运的是,可以使用 进行转义\%。其他特殊字符也可能发生同样的情况。

无论如何,当我检查时,.bbl我注意到&那里没有被转义,即使它可以编译:

\url{http://www.jstor.org/discover/10.2307/2391696?uid=3737664&uid=2134&uid=2129&uid=2&uid=70&uid=4&sid=21102581457607}.}

现在我不知道这个错误是否真的来自hyperref(应该能够&随着url包一起逃逸)或者它是否是一个abntex2错误。无论是哪种情况,我都检查了abntex2-alf.bstabntex2,并能够通过在函数中间插入以下行来解决问题filter.url.tex

duplicate$ "&" = {pop$ "\&" } 'skip$ if$

我将在 bugtracker 上发布此错误并进行修复abntex2

相关内容