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 hfuzz
está 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 \sloppy
o que é
\DeclareRobustCommand\sloppy{%
\tolerance 9999%
\emergencystretch 3em%
\hfuzz .5\p@
\vfuzz\hfuzz}
Portanto, \hfuzz
é redefinido para 0,5pt na bibliografia. Você poderia redefinir \sloppy
para ter um hfuzz maior ou adicionar
\usepackage{xurl}