KTUGFaq

KTUG FAQ

"badness and tolerance"에 댓글 더하기

로그인:
비밀번호:
가입
Might as well be frank, monsieur. It would take a miracle to get you out of Casablanca.
FrontPage › LittleTree/ReadingTeXbook/2006-03
Mar 19, 2006
badness and tolerance
Submitted by 작은나무 @ 03-19 [01:33 am]
28~29, 96~97쪽: penalty 설명에서 breakpoint의 설정은 만들어진 줄들이 최대한 우리 눈에 보기좋게 하는 곳으로 설정된다고 했습니다. 그렇다면, 어떤 줄들이 보기 좋은 것일까요? 그리고 그 기준은 무엇일까요? TeX은 이에 대한 수학적 기준으로 badness라는 것을 도입했습니다. 각각의 줄은 badness라는 값을 가지고 있습니다. badness는 주어진 줄에서 단어들 사이의 간격을 수치화한 값입니다. badness 굳이 우리말로 하자면 '나쁨정도'쯤 되므로, 그 값이 작을 수록 좋은 것이겠지요. 그래서 어떤 줄의 badness가 0일때, 그 줄의 단어들 사이의 간격이 매우 적절하여 우리 눈에 퍼펙트하게 보입니다. 따라서 badness는 0과 무한대인 10000 사이의 값을 갖습니다. badness를 구하는 식은 대략 min(100r^3, 10000)입니다. 여기서 r은 어떤 비율(ratio)을 나타내는데, 자세한 설명은 생략하겠습니다. (자세한 수식보다는 badness의 의미를 파악하는 것이 더 중요합니다.)

Plain TeX에서는 각 줄의 badness가 200을 넘어서는 안되도록 정하고 있습니다. 이 말은 Plain TeX은 자기 기준에서는 badness가 200을 넘으면 그 줄에서 단어들 사이의 간격이 너무 좁거나, 넓어서 안 예뻐보이므로, badness가 200이 될 때 까지는 참아줄 수 있다는 것입니다. badness가 200을 넘는 순간 Plain TeX은 그 줄의 단어 사이의 간격들을 차마 눈뜨고 볼 수 없을 정도여서, 더이상 참지 못하고, 못생긴 줄이라고 불평을 합니다.

Plain TeX은 "나는 badness가 200까지 참을 수 있어."는 표시로 \tolerance=200 이라고 정합니다. primitive \tolerance의 뜻을 아시겠죠? 한가지 더 알아 두어야 할 것은 영어에는 hyphenation을 이용해서 영어 단어가 두 줄에 걸쳐 나올 경우, 그 단어를 쪼갤 수 있습니다. Plain TeX은 일단 hyphenation을 이용하지 않고, 줄을 만들 수 있는지 먼저 체크합니다. 이처럼 먼저 확인 한다는 의미에서 접두어 'pre'를 사용하여, 이때의 badness의 값을 \pretolerance로 설정합니다. Plain TeX은 \pretolerance=100으로 정합니다. 즉, 먼저 badness 100으로 정하고 영어 단어를 쪼개는 일 없이 줄들을 만들수 있는지 체크하고, 안된다면 hyphenation을 이용하면서 badness를 200으로 하고 다시 확인합니다.

잘 보고 있습니다. 좋은 글 감사합니다. ^^ -- Karnes 2006-03-19 02:48:05
이름:

서명하지 않기
 

^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-06-06 22:54:57
Processing time 0.0345 sec