A pesar de utilizar hfuzz=…
para ocultar advertencias para cuadros demasiado llenos (suficientemente pequeños), un cuadro demasiado lleno que ocurre en una URL de mi bibliografía todavía muestra una advertencia. ¿Por qué? ¿Cómo puedo deshacerme de la advertencia?
Para ilustrar, en el siguiente ejemplo, la línea demasiado llena en el texto principal no genera ninguna advertencia (lo que demuestra que hfuzz
está vigente), pero la línea (menos) demasiado llena en la bibliografía sí lo hace.
\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}
Respuesta1
si agregas
\show\thebibliography
Ya verás
> \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
entonces lo hace \sloppy
cual es
\DeclareRobustCommand\sloppy{%
\tolerance 9999%
\emergencystretch 3em%
\hfuzz .5\p@
\vfuzz\hfuzz}
Por lo tanto, \hfuzz
se restablece a 0,5 puntos dentro de la bibliografía. Podrías redefinir \sloppy
para tener un hfuzz más grande o agregar
\usepackage{xurl}