使用 BibLaTeX 和 XeLaTeX 以及包 abntex2 和 biblatex-abnt 时,URL 不会出现在参考书目中或无法正常工作

使用 BibLaTeX 和 XeLaTeX 以及包 abntex2 和 biblatex-abnt 时,URL 不会出现在参考书目中或无法正常工作

我使用 Biblatex (biber 2.12)、XeLaTeX (XeteX 3.1415) 和软件包abntex2biblatx-abntex2在 macOS High Sierra 10.13.6 上。[我也使用 Linux]

在此图像中,请注意< >URL 不存在或消失的位置。

消失链接的示例

这是一个最小代码(您可以在最后获取我的完整压缩文件):

% !TeX program = xelatex
\documentclass[10pt, a4paper, brazil]{abntex2}

\usepackage[alf]{abntex2cite}
\usepackage[autostyle]{csquotes}
\usepackage[backend = biber, alldates=long, hyperref, justify, language = brazil, scbib, sorting = none, style = abnt, url = true]{biblatex}
\usepackage[brazil]{babel}
\usepackage[math-style=ISO, bold-style=ISO, mathrm=sym]{unicode-math}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{caption}
\usepackage{color}
\usepackage{comment}
\usepackage{environ}
\usepackage{filecontents}
\usepackage{fixltx2e}
\usepackage{fontspec}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{indentfirst}
\usepackage{lastpage}
\usepackage{lipsum}
\usepackage{listings}
\usepackage{mfirstuc}
\usepackage{microtype}
\usepackage{minted}
\usepackage{multicol}
\usepackage{nomencl}
\usepackage{polyglossia}
\usepackage{svg}
\usepackage{xcolor}

% ...

\addbibresource{referencias.bib}

\begin{filecontents}{referencias.bib}
@Book{IAEA_est_2050,
  publisher = {International Atomic Energy Agency},
  title     = {Energy, Electricity and Nuclear Power Estimates for the Period up to 2050},
  year      = {2015},
  series    = {Reference Data Series 1},
  edition   = {2015},
  note      = {RDS - 1/35},
  isbn      = {978-92-0-105915-4},
  groups    = {IAEA},
  url       = {http://www-pub.iaea.org/books/IAEABooks/7857/Estimation-of-Global-Inventories-of-Radioactive-Waste-and-Other-Radioactive-Materials},
  urldate   = {2015-10-15},
}

@thesis{eliseu84,
    title       = {Verbos ergativos do Português},
    subtitle    = {descrição e análise},
    author      = {André Manuel Godinho Simões Eliseu},
    type        = {Dissertação (Mestrado em Linguística)},
    institution = {Universidade de Lisboa},
    location    = {Lisboa},
    eventyear   = {1985},
}

@online{google,
    doi             = {docs},
    organization    = {Google},
    title           = {Documentação do Google Cloud SDK},
    url             = {https://cloud.google.com/sdk/docs},
    urldate         = {2018-10-26}
}
\end{filecontents}

% ...

\begin{document}
\selectlanguage{brazil}
\frenchspacing
\maketitle
\pagenumbering{gobble}
\newpage
\pagenumbering{arabic}

\textual

\section{Configurar a conta do Google e o Google Cloud Platform}

% ...

\citetitle{google}
\cite{IAEA_est_2050}
\cite{eliseu84}

\section{Configurar a executar os \textit{containers} do Docker no mecnaismo de \textit{containers} do Google}

\bookmarksetup{startatroot}% 
\postextual

\printbibliography

\end{document}

我跑得像这样:

xelatex -synctex=1 -interaction=nonstopmode -file-line-error -shell-escape relatório
biber relatorio
xelatex -synctex=1 -interaction=nonstopmode -file-line-error -shell-escape relatorio
xelatex -synctex=1 -interaction=nonstopmode -file-line-error -shell-escape relatório

我还对从中获取的最小基本代码进行了测试@xR2和 URL 都有效,但我的“relatório”文件无效。以下是有效的代码:

\documentclass[a4paper]{abntex2}
\usepackage[autostyle]{csquotes}
\usepackage[backend=biber,style=abnt,language=brazilian,alldates=long,sorting=none,scbib,hyperref]{biblatex}
\usepackage[brazil]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\usepackage{hyperref}
\usepackage{lmodern}

\addbibresource{shortbib.bib}

\begin{filecontents}{shortbib.bib}
@Book{IAEA_est_2050,
  publisher = {International Atomic Energy Agency},
  title     = {Energy, Electricity and Nuclear Power Estimates for the Period up to 2050},
  year      = {2015},
  series    = {Reference Data Series 1},
  edition   = {2015},
  note      = {RDS - 1/35},
  isbn      = {978-92-0-105915-4},
  groups    = {IAEA},
  url       = {http://www-pub.iaea.org/books/IAEABooks/7857/Estimation-of-Global-Inventories-of-Radioactive-Waste-and-Other-Radioactive-Materials},
  urldate   = {2015-10-15},
}
@thesis{eliseu84,
    title       = {Verbos ergativos do Português},
    subtitle    = {descrição e análise},
    author      = {André Manuel Godinho Simões Eliseu},
    type        = {Dissertação (Mestrado em Linguística)},
    institution = {Universidade de Lisboa},
    location    = {Lisboa},
    eventyear   = {1985},
}
\end{filecontents}
\begin{document}

    \cite{eliseu84}

    \cite{IAEA_est_2050}
    \printbibliography
\end{document}

您可以获取我的完整压缩文件:我的项目

答案1

正如评论中提到的那样,你的第二个较小的代码示例编译时没有错误,并且如果xstring加载则显示正常(请参阅https://github.com/abntex/biblatex-abnt/issues/39,这只是因为biblatex3.12 中的变化而有必要,并且不应该持续太长时间,biblatex-abnt已经有代码可以处理该问题)。

加载仍然是错误的lmodernfontenc如果inputenc你使用 XeLaTeX 进行编译,你肯定应该删除对这些包的调用,但至少在我的计算机上输出似乎没问题。另请参阅经常加载的包:pdfLaTeX 和 XeLaTeX 之间的区别(尽管我不同意polyglossia并且babelbabel与 XeLaTeX 完全没问题)。

另一方面,您的第一个较长的示例产生了大量错误消息。永远不要忽视错误!每当 TeX 遇到错误时,它都会进入错误恢复模式,并尽力检查剩余文件的语法。如果文档有错误,则不能保证获得任何有用的输出(或任何输出)。使用 编译会诱使您-interaction=nonstopmode简单地忽略错误消息,因为 TeX 会滚动跳过它们(“-interaction=nonstopmode”和“-halt-on-error”之间有什么区别?),但它们仍然存在,确实需要修复。请记住,一个错误可能会导致进一步的连锁反应以及以后的其他错误和警告,因此您应该始终先处理第一个错误。使固定全部从一开始,您就会遇到错误。

  • abntex2citebiblatex不兼容。您只能使用两个包中的一个。同时使用这两个包(按abntex2cite,的顺序biblatex)会导致以下错误:

    ! LaTeX Error: Command \biblabelsep already defined.
    

    解决方法是删除\usepackage[alf]{abntex2cite}

  • 您不应该\usepackage[T1]{fontenc}使用 XeLaTeX 进行加载。事实上,似乎从序言中删除此包会使 URL 出现。当在 WE 中加载包时,您会收到错误

    ! Math formula deleted: Insufficient symbol fonts.
    \Url@FormatString ...\Url@String \UrlRight \m@th $
    

    每当 TeX 尝试排版 URL 时。

  • 不要\usepackage[utf8]{inputenc}使用 XeLaTeX 加载。

  • color以后还要加载的时候就不要加载xcolor,加载xcolor就够了。

  • unicode-mathamsmath应在其他字体包之后加载。文档第 4 页说

    [ unicode-math] 应该在任何其他数学或字体相关的包之后加载,以防需要覆盖它们的定义。

  • fixltx2e三年内不需要,包装上也以警告的形式告诉你

    Package fixltx2e Warning: fixltx2e is not required with releases after 2015
    (fixltx2e)                All fixes are now in the LaTeX kernel.
    (fixltx2e)                See the latexrelease package for details.
    
  • hyperref通常应该是您加载的最后一个包(有几个记录在案的(!)例外情况cleveref需要在之后加载hyperref,但一般经验法则认为这hyperref应该是最后一个)。

  • lipsum可能不是您实际文档中需要的包。

  • 加载listings乍一看minted似乎过多,我建议您从两者中选择一个作为您的源代码列表。

  • 您不能同时加载babelpolyglossia。这些软件包完成的任务大致相同,同时加载这两个软件包将导致不兼容,并争夺哪个软件包控制本地化。您应该只加载两个软件包中的一个。我建议您使用babel,因为polyglossia近年来开发似乎停滞不前。(事实上,许多软件包在选择语言版本时遇到困难poylglossia- 有时甚至polyglossia会出现这个问题 - 这可能与巴西葡萄牙语有关,在这种情况下,选择语言babel版本变得更具吸引力。)

    • babel我还建议尽早加载- 当然是在csquotes和之前biblatex,但这只是我的个人喜好。
  • 您正在加载许多其他包:您真的需要它们全部吗?environ,,,,,comment...我强烈建议只有当您真正需要它们并且您知道(至少大致)它们的作用时才加载包indentfirstlastpagesmfirstucsvg

  • memoir(基于abntex2)对使用 发出警告caption。加载 并不是错误caption,但memoir已经有一些处理字幕的工具,caption只有当这些工具不足以满足您的需求时,您才应该加载。如果您加载,caption您应该意识到memoir的字幕设置可能不再按预期工作。

即便是使用 Unicode 机器(如 XeLaTeX),我也会对使用包含非 ASCII 字符的文件名持谨慎态度,但这可能是个人喜好问题。例如,Biber 在某些系统上曾经存在(现在仍然存在?)非 ASCII 文件名问题。

就目前而言,当您加载时biblatex该选项language = brazil应该是不必要的babel,并且该选项在加载时hyperref只执行默认操作,因此也可以将其删除。hyperref=autohyperef

相关内容