Prvni radka v italice

Zdenek Wagner wagner at cesnet.cz
Mon Feb 23 11:50:58 CET 2004


On Sat, 21 Feb 2004, Petr Novotny wrote:

> Dobry den,
>
> narazil jsem ted na jednu zajimavou knihu, ktera me krome nanejvys
> poutaveho obsahu zaujala jeste tim, ze kazda prvni (cela) radka po
> nadpisu kapitoly byla v italice. A zaujalo me to z pohledu "jak to udelat
> v TeXu", pokud mozno automaticky?
>
> Mate nekdo nejaky napad? (Zajima me spis princip - jak na to? - nez
> technicka realizace.)
>
Neni to jednoducha uloha. Melo by to jit v XSL-FO, tusim, ze jsou tam
nejake objekty first-line-*, ale z hlavy to nevim. V TeXu je potiz v tom,
ze cely odstavec se nejprve vlozi do horizontalniho seznamu, ktery se pak
podle aktualniho nastaveni ruznych parametru (viz TeXbook nebo TBN) nalame
na radky. Sice bych mohl text vysadit do \vboxu a pomoci \vsplit odseknout
prvni radek, ale ten uz nemohu presadit jinym fontem. Navic kursiva muze
mit jinou metriku. Pokud mam bezny odstavec (tj. nepouzivam \parshape,
\hangindent a nemam pruzne \leftskip a \rightskip), pak mohu rekurzivne
odebirat slova (tj. parametr ukonceny mezerou), takze makro by bylo
definovano jako \def\ItFirstLine#1 {...

Predpokladejme, ze uz jsem podobnym zpusobem naplnil \LineContent prvnim
slovem. Pak by ta definice mohla vypadat takto (pisu to rovnou do mailu
bez vyzkouseni, mozna to nebude fungovat, ale ideove by to chodit melo):

\def\ItFirstLine#1 {\ifdim\wd\hbox{\it\LineContent\space#1}<\hsz
  \edef\LineContent{\Linecontent\space#1}\let\next\ItFirstLine
  \else \leavevmode{\it\LineContent\parfillskip0mm\par\noindent}%
  \def\next{#1\space\ignorespaces}\fi\next}

Jeste potrebujeme rozmerovy registr \newdimen\hsz \hsz\hsize
\advance\hsz-\parindent

Je pomerne dost moznosti, jak toto makro "rozbit" nevhodnym vstupem.
Nebude ani fungovat deleni slov, takze lze ocekavat underfull \hbox.

> Poznamka: Tim nerikam, ze je to typograficky dobry napad.
>
> Dekuji,*-- Do what thou wilt shall be the whole of the Law.  [A. Crowley]
> --*
> *            Petr Novotny | <Novotny.Petr at volny.cz>                  *
> *                         |  Prague, The Czech Republic              *
> *                         |  http://www.volny.cz/novotny.petr        *
>

Zdenek Wagner
e-mail: wagner at cesnet.cz

see also http://hroch486.icpf.cas.cz/wagner/
         http://icebearsoft.euweb.cz




More information about the csTeX mailing list