줄 바꿈에 영향을 주고, 깨지지 않는 긴 텍스트 조각에서 과도한 내용을 피하는 방법에는 여러 가지가 있습니다. 나는 의아해한다. \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
설정을 줄이지 않고 \tolerance
9999로 두었습니다. 이는 아마도 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}