\hbox cheio demais no URL da bibliografia, apesar do hfuzz

\hbox cheio demais no URL da bibliografia, apesar do hfuzz

Apesar de usar hfuzz=…para ocultar avisos para caixas excessivamente cheias (suficientemente pequenas), uma caixa excessivamente cheia acontecendo em uma URL na minha bibliografia ainda exibe um aviso. Por que? Como posso me livrar do aviso?

Para ilustrar, no exemplo a seguir, a linha cheia demais no texto principal não gera nenhum aviso (o que mostra que hfuzzestá em vigor), mas a linha (menos) cheia demais na bibliografia sim.

\begin{filecontents}{example.bib}
  @techreport{report,
    author = {Unknown, U. and Unknown, U.},
    institution = {Institution},
    title = {Some title},
    url = {https://www.example.com/some-very-long-url-with-much-text/and-a-second-part-that-is-overly-long-as-well-and-fills-the-line/},
    year = {2015}
  }
\end{filecontents}
 
\documentclass{article}
\usepackage{natbib}
\usepackage{hyperref}
\bibliographystyle{abbrvnat}

\hfuzz=4cm

\begin{document}
This url \url{http://www.example.com/is-overly-long-but-raises-no-warnings/is-overly-long-but-raises-no-warnings/is-overly-long-but-raises-no-warnings} 
\citep{report}.

\bibliography{example}

\end{document}

Responder1

Se você adicionar

\show\thebibliography

Você verá

> \thebibliography=\long macro:
#1->\bibsection \parindent \z@ \bibpreamble \bibfont \list {\@biblabel {\the \c
@NAT@ctr }}{\@bibsetup {#1}\global \c@NAT@ctr \z@ }\ifNAT@openbib \renewcommand
 \newblock {\par }\else \renewcommand \newblock {\hskip .11em \@plus .33em \@mi
nus .07em}\fi \sloppy \clubpenalty 4000\widowpenalty 4000 \sfcode `\.\@m \let \
NAT@bibitem@first@sw \@firstoftwo \let \citeN \cite \let \shortcite \cite \let 
\citeasnoun \cite .
l.18 \show\thebibliography

então acontece \sloppyo que é

\DeclareRobustCommand\sloppy{%
  \tolerance 9999%
  \emergencystretch 3em%
  \hfuzz .5\p@
  \vfuzz\hfuzz}

Portanto, \hfuzzé redefinido para 0,5pt na bibliografia. Você poderia redefinir \sloppypara ter um hfuzz maior ou adicionar

\usepackage{xurl}

então a linha não está muito cheia insira a descrição da imagem aqui

informação relacionada