\까다로움, \엉성함, \긴급 신장, \관용, \hbadness의 의미는 무엇입니까?

\까다로움, \엉성함, \긴급 신장, \관용, \hbadness의 의미는 무엇입니까?

줄 바꿈에 영향을 주고, 깨지지 않는 긴 텍스트 조각에서 과도한 내용을 피하는 방법에는 여러 가지가 있습니다. 나는 의아해한다. \sloppy문서 전체를 사용한다는 말을 들었습니다.좋지 않다, 이에 대한 대체 솔루션은 다음 \sloppy과 같습니다.\비상스트레치, 저것microtype 패키지는 줄 바꿈을 조정하는 데 도움이 될 수 있습니다등.

나열된 모든 명령의 효과를 설명할 수 있는 사람이 있습니까?

내 자신의 실험:

\documentclass[12pt]{article}
\usepackage{showframe}
\begin{document}

\fussy
Long made-up words, fussy: 

abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl

\sloppy
Long made-up words, sloppy: 

abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl

\fussy
Long made-up words, textit, fussy: 

\textit{abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl}

\sloppy
Long made-up words, textit, sloppy: 

\textit{abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl}

\fussy
Here is a line with long unbreakable rule, fussy. \rule{3cm}{.2cm} \rule{3cm}{.2cm}

\sloppy
Here is a line with long unbreakable rule, sloppy. \rule{3cm}{.2cm} \rule{3cm}{.2cm}

\fussy
Extreme unbreakable rule, fussy. \rule{8cm}{.2cm} \rule{8cm}{.2cm}

\sloppy
Extreme unbreakable rule, sloppy. \rule{8cm}{.2cm} \rule{8cm}{.2cm}

\end{document}

보시다시피 \sloppy, 과잉을 방지하는 데 도움이 되지만 극단적인 경우에는 그렇지 않습니다. 여기에 이미지 설명을 입력하세요

답변1

\sloppy라텍스 매크로는 다음과 같습니다

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

\fussy값을 라텍스 기본값으로 다시 설정합니다.

\def\fussy{%
  \emergencystretch\z@
  \tolerance 200%
  \hfuzz .1\p@
  \vfuzz\hfuzz}

\tolerance단락을 설정하는 동안 tex가 사용할 수 있는 최대 "불량"을 설정합니다. 즉, 불량이 이 임계값 아래로 유지되는 한 공백을 늘리고 페널티를 받을 수 있도록 중단점을 삽입합니다. 그렇게 할 수 없다면 상자가 너무 가득 차게 됩니다. 따라서 값이 다르면 조판 결과도 달라집니다.

\emergencystretch(TeX3에 추가됨) TeX가 나쁜 점 아래에 단락을 설정할 수 없는 경우에 사용되지만 \tolerance, 상자를 너무 많이 채우는 대신 모든 줄에 \emergencystretch 신축성 있는 접착제가 추가로 있는 것처럼 "가장" 추가 패스를 시도하여 전반적인 나쁜 점을 유지할 수 있습니다. 1000 미만이면 TeX가 "포기"하고 모든 확장을 한 줄에 넣는 것을 중지합니다. 따라서 \emergencystretch"좋은" 단락의 설정은 변경되지 않으며, 상자가 가득 찬 단락의 설정만 변경됩니다. 다음에 대한 경고가 표시됩니다.진짜추가 스트레치 로 재시도하더라도 TeX의 불량 계산은 \emergencystretch조판을 제어하는 ​​데 사용되지만 로깅 목적으로는 좋은 것으로 간주되지 않습니다.

\hfuzz조판에 어떤 식으로든 영향을 미치지 않지만 상자가 약간만 가득 차면 TeX의 불평을 중지합니다.

\hbadness아래의 마지막 예에서는 사용되지 않지만 \sloppy사용됨`은 유사하며 조판에 영향을 주지 않지만 불량률이 주어진 양보다 낮으면 가득 찬 상자에 대한 TeX 경고를 중지합니다.


주요 문제는 거의 무한히 나쁜 9999로 \sloppy설정하는 것입니다 . \tolerance이는 공백을 균등하게 분배하지 않지만 단락의 개별 줄이 공백을 임의로 큰 양으로 늘리도록 장려합니다. 이는 TeX에서 인정된 결함이며 TeX3에 새 매개변수가 \emergencystretch추가된 이유입니다. 불행하게도 LaTeX2e에 \emergencystretch대해 정의할 때 추가할 때 \sloppy설정을 줄이지 않고 \tolerance9999로 두었습니다. 이는 아마도 LaTeX2.09와의 호환성에는 좋지만 다른 모든 것에는 좋지 않습니다.

\emergencystretch최종 설정에 따르면 전혀 변경하지 않고 설정만 하면 더 나은 설정을 얻을 수 있는 경우가 많습니다. \tolerance설정은 두 경우 모두 동일하지만 \hbadness=10000경고가 표시되지 않습니다. 모두가 그렇지는 않을 것이다원하다경고 없이 최종 설정을 변경할 수 있지만 입력 변경이 불가능하고 상자를 너무 많이 채우는 것을 원하지 않는 자동 조판 컨텍스트에서는 이것이 가능합니다.

여기에 이미지 설명을 입력하세요

\documentclass[12pt]{article}
\usepackage{showframe}
\begin{document}

\def\test#1{{#1

\texttt{\detokenize{#1}}

Long made-up words, sloppy: 

abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl

\textit{abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl}

Long made-up words, textit, sloppy: 

\textit{abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl abcdefghijklabcdefghijkl}

Here is a line with long unbreakable math, sloppy. ${a+b+c+d a+b+c+d}$ ${a+b+c+d a+b+c+d }$


Extreme unbreakable math, sloppy. ${a+b+c+d+e a+b+c+d+e a+b+c+d+e a+b+c+d+e }$ break ${a+b+c+d+e a+b+c+d+e a+b+c+d+e a+b+c+d+e }$


\nobreak\bigskip\hrule\filbreak}}

\test{}


\test{\sloppy}

\test{\setlength\emergencystretch{\hsize}}

\test{\setlength\emergencystretch{\hsize}\hbadness=10000}





\end{document}

관련 정보