Yesterday I learned: \startsetups[*default] \widowpenalties 3 10000 1000 0 \clubpenalties 3 10000 1000 0 \orphanpenalties 2 8000 1000 \stopsetups If I want the penalty settings applied to “everything” (after defining the layout, I think?), then I need the setup "*defaults". Since TeX uses a club against orphans (brutal!), I’m not sure what \orphanpenalty is for. I remember \twinpenalty is against doubled words (below each other?), and \toddlerpenalty against single letter words at the end of a line (why “toddler”?). widows and clubs get only 150 in TeX, but 2000 in ConTeXt, as far as I could find. Are there more penalties that make sense to set individually? WRT demerits: Did I understand correctly that demerits are the “sum” (some formula) of badness and penalties in a line or paragraph? Hraban
Henning Hraban Ramm schrieb am 10.10.2024 um 14:54:
Yesterday I learned:
\startsetups[*default] \widowpenalties 3 10000 1000 0 \clubpenalties 3 10000 1000 0 \orphanpenalties 2 8000 1000 \stopsetups
If I want the penalty settings applied to “everything” (after defining the layout, I think?), then I need the setup "*defaults".
Since TeX uses a club against orphans (brutal!), I’m not sure what \orphanpenalty is for.
%%%% begin primitives.tex [...] \startnewprimitive[title={\prm {orphanpenalties}}] This an (single entry) array parameter: first the size is given followed by that amount of penalties. These penalties are injected before spaces, going backward from the end of a paragraph. When we see a math node with a penalty set then we take the max and jump over a (preceding) skip. \stopnewprimitive \startnewprimitive[title={\prm {orphanpenalty}}] This penalty is inserted before the last space in a paragraph, unless \prm {orphanpenalties} mandates otherwise. \stopnewprimitive [...] %%%% end primitives.tex Wolfgang
Hi,
On Thu, Oct 10, 2024 at 2:58 PM Henning Hraban Ramm
Yesterday I learned:
\startsetups[*default] \widowpenalties 3 10000 1000 0 \clubpenalties 3 10000 1000 0 \orphanpenalties 2 8000 1000 \stopsetups
If I want the penalty settings applied to “everything” (after defining the layout, I think?), then I need the setup "*defaults".
Yes, for now, since it got reset when \setuplayout was done. But we are working on making it possible to also setup this with \setupalign, with a few "reasonable" pre-defined setups. So, for example in my math book I currently run \setupalign[lesswidows,lessclubs,lessorphans,strictmath] and that actually makes a few of these setups. It will of course be possible to define your own set of penalties and use them instead.
Since TeX uses a club against orphans (brutal!), I’m not sure what \orphanpenalty is for.
Wolfgang already explained this, but in short they are there to discourage that a paragraph ends with only one word. We looked at it yesterday at the meeting. You saw those penalties in action when you did \showmakeup[hpenalty].
I remember \twinpenalty is against doubled words (below each other?), and \toddlerpenalty against single letter words at the end of a line (why “toddler”?).
Indeed. Well, you can imagine a little toddler not really being able to join the rest, or if you want, tied to the rest.
widows and clubs get only 150 in TeX, but 2000 in ConTeXt, as far as I could find.
Are there more penalties that make sense to set individually?
If you do math there might be more (set above by strictmath), but I think you are fine with the ones above. Since you are finishing a project, please tell if more problems show up. We can have another chat where we try to solve...
WRT demerits: Did I understand correctly that demerits are the “sum” (some formula) of badness and penalties in a line or paragraph?
A bit like that. For each possible breakpoint you get a badness value. Then you can see it as if TeX runs over the paragraph once more, given all possible breakpoints, with or without extra penalties, and builds up a demerits for the different possible solutions. They can come from badness, penalties and additional demerits (adjdemerits not to have incompatible lines for example). Then, at the end, the best solution (least demerits) is the one that will be used. We are currently writing an article on the parbuilder, with and without parpasses. You saw an early draft at the meeting yesterday. /Mikael
Thank you both, that clears up everything I wanted to know (so far). Yesterday it was just too fast to really understand everything, and I got confused since the typographical term is “widows and orphans”, but TeX uses \cubpenalties for orphans. I’m looking forward to the article! I just re-did the page breaking for our current novel, “Gesicht zur Wand”, 452 pages so far; the last third is still in the works between author and editors. With the better penalties setup, I need much less manual tweaking – but of course it’ll never be perfect. (Still better than our printshop’s cutting…) Hraban
participants (3)
-
Henning Hraban Ramm
-
Mikael Sundqvist
-
Wolfgang Schuster