hfuzz에도 불구하고 참고문헌 URL의 \hbox가 너무 찼습니다.

hfuzz에도 불구하고 참고문헌 URL의 \hbox가 너무 찼습니다.

(충분히 작은) 상자 가득 참에 대한 경고를 숨기기 위해 사용했음에도 불구하고 hfuzz=…내 참고문헌의 URL에서 상자 가득 참이 발생하면 여전히 경고가 표시됩니다. 왜? 경고를 어떻게 없앨 수 있나요?

설명하기 위해 다음 예에서 주 텍스트의 가득 찬 줄은 경고를 생성하지 않지만(이는 hfuzz실제로 적용됨을 나타냄) 참고 문헌의 (적은) 넘치는 줄은 경고를 생성합니다.

\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}

답변1

추가하면

\show\thebibliography

당신은 볼 것이다

> \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

그래서 그것은 \sloppy그렇습니다

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

따라서 참고 \hfuzz문헌 내에서는 .5pt로 재설정됩니다. \sloppy더 큰 hfuzz를 갖도록 재정의하거나 추가할 수 있습니다 .

\usepackage{xurl}

그래서 줄이 꽉 차있지 않아요 여기에 이미지 설명을 입력하세요

관련 정보