The Thanh Han wrote:
Hi,
I have been thinking of the question how to make char protrusion work with the first char of a paragraph. The simplest (and quite robust) solution can be as follows:
when considering whether a marginal kern should be inserted, we skip certain kinds of `invisible' node (like adjust node, penalty node and the like). Now to make it work with the first char of a par, we also skip null boxes (box with zero dimen and empty contents) at the left margin.
The question is whether such behaviour is ``correct'', and what surprises it can bring in certain situations.
there are several solutions possible: <nothing><null box>text text text text here it looks safe to me to do as you suggest, it can of course be made into an option, say \pdfprotrudeparstart=1 or so <something><null box>text text text text is more tricky since one may use the box in order to prevent protruding; on the other hand, if you ignore all null boxes, then it maybe nice to have something \noprotrusion, which introduces a special node, which in itself may be tricky, although pdftex introduces new nodes anyway I can also imagine something \pdfprotrudeleft (and right) that can be inserted manually (or everypar'd; in that case it would be handy to finally have \everyendpar available as well); imagine: \pdfprotrudeleft \hbox {somechar} some text \pdfprotrudeleft \hbox {\hbox {somechar}} some text how difficult is it to let pdftex in that case follow the list until it finds a char (here 's'); this woudl permit things like \pdfprotrudeleft \hbox {x\hskip-2pt x} some text Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------