티스토리 툴바


A: \nobreak\hskip0pt 와 \nobreak\discretionary{}{}{} 의 다른 점은?

B: \hskip은 글루이고 \discretionary는 하이픈이지.

A: 맞는 말인데 둘다 앞에 \nobreak을 두고 있으므로 이거하고 관련지어 다른 점을 말해야 하지 않겠는가?

B: \nobreak은 \penalty10000을 뜻하지 않나? 줄바꿈하지 말란 말인데...

A: 그렇네. 이것이 그 다음에 오는 글루와 하이픈에 어떤 영향을 미치는가가 핵심이야.

B: 글루든 하이픈이든 다 줄바꿈을 허용하는 명령에 속하는데 그 앞에 \nobreak은 줄바꿈을 금지하고... 아 어렵다. 금지시킨고선 허용하고... 이게 뭔가? 병주고 약주는가?

A: 다른 점은 앞의 꺼는 줄바꿈이 안 일어나는데 뒤에 껀 줄바꿈이 일어날 수 있다는 거다. 뒤에 꺼의 경우 \nobreak이 무의미해진단 말이야.

B: 그... 그게 어떻게 된 거지?

A: 핵심은 글루와 하이픈의 줄바꿈 규칙의 차이야. 글루의 줄바꿈 규칙에는 단서가 있지 않은가? 글루 앞에 non-discardible item이 와야지만 글루에서 줄바꿈이 되는 거...

B:  어... 그래. 맞아. 근데 지금 글루 앞에  \pernalty가 왔단 말이지. 근데 \penalty는 discardible item이고... 그러니 앞의 꺼는 줄바꿈이 안 일어나겠군.

A:  그렇지. \def~{\nobreak\ {}} 알지? 줄바꿈 없는 스페이스 강제로 넣는 거잖아. 물결표에서 줄바꿈 안되는 이유가 바로 그거야. 

B: 그런데 하이픈은 그런 거 따지지 않고 무조건 줄바꿈 허용이란 거지? 그러니 뒤에 껀 줄바꿈이 일어날 수 있게 되겠군.

A: 음... 그래서 \nobreak\discretionary{}{}{}에서 \nobreak은 효력이 없는 거야.

B: \nobreak의 페널티값이 10000이고 \discretionary의 페널티 값은 보통 50이니까 페널티가 중복되는 셈이군. 그럴 때는 항상 작은 값이 적용되게 되지. 그래서 \penalty50인 것과 마찬가지 결과가 되는구먼...

A: 그렇네. 앞의 꺼는 글루가 비록 페널티 0에 해당하긴 하지만 그 앞에 다른 discardible item이 있어 힘을 못쓰지. 근데 뒤의 껀 \discretionary가 여전히 우세하게 작용한다는 게 서로 다른 점이야.
Posted by nomos
TAG