[OS X TeX] ligaturess

Jonathan Kew jonathan at jfkew.plus.com
Sun Jul 18 07:15:12 CEST 2010


>>> 
>>> Why does TeX ignore the instruction not to use the ff ligature in
>>> 'shelful' when a line break occurs afterwards? And why does it
>>> nonetheless accept the instruction if the f-no-lig-f is typeset in
>>> isolation?
>> 
>> Because it attempted hyphenation, while looking for (and failing to find) a better way to line-break the paragraph.
>> 
>> {} is not a reliable way to prevent a ligature. Use {\kern0pt} or possibly \/. See The TeXbook, p.306.
> 
> Thank you. (I should probably look at The TeXbook sometime...)
> 
> So the compwordmark gets discarded as part of attempting hyphenation?
> Interesting.

{} is not a "compound word mark". It is a "nothing": simply an empty group in your TeX input. As such, it disappears during the process of reading your input and generating the "horizontal list" that subsequently forms the lines of your paragraph; however, it does interrupt the formation of a ligature *at that initial stage*.

However, if TeX later decides to try hyphenation (because it didn't find an acceptable way to break the paragraph into lines on its first attempt), it will insert discretionary breaks into words where hyphenation points are found. Then, after finally choosing line-breaks, it will remove the discretionaries that were not actually chosen, and at that stage it will re-apply ligatures and kerning in those words.

Therefore, if you want to reliably suppress a ligature (or kern) you need to use something like \kern0pt that will actually become a real node in the paragraph's hlist, not an empty group that will "evaporate" during the hlist construction.

JK




More information about the macostex-archives mailing list