Starnkovy zlom u slozitejsich struktur...

Stepan Kasal kasal at matsrv.math.cas.cz
Thu Aug 1 12:21:58 CEST 2002


Dobry den,

On Thu, 25 Jul 2002 18:29:25 +0000 (UTC), Petr Tomasek wrote:
> Mam sazbu, ktera se sestava z (vicemene) nezavislych radek,
...
> Potreboval bych k nim ale pridat urcity vertikalni material asi takto:
>
>
>         +-------------------------------+
>         | radek 1                       |
>         +----------------------------+--+
>         | radek 2                    |  |
>         +----------------------------+  +
>         | radek 3                    |s |
>         |                            |l |
>         +-------------------------+--+o +
>         | radek 4                 |s |u |
>         +-------------------------+l +p +
>         | radek 5                 |. |e |
>         +-------------------------+  +c +
>         | radek 6                 |2 |  |
>         +----------------------+--+  +1 +
>         | radek 7              |sl|  |  |
>         +----------------------+.3+  +  +
>         | radek 8              |  |  |  |
>         +----------------------------+  +
>         | radek 9                    |  |
>         +----------------------------+  +
>         | radek 10                   |  |
>         +-------------------------------+


> Dosud jednoduche. Ale jak udelat, aby se me mohl provest strankovy zlom
> treba mezi 7. a 8. radkem? (Navic v pripade tohoto zlomu budu potrebovat
> jeste mirne zmenit obsah jednotlivych sloupcu).
>
> Nenapada vas nekoho, jak takovou vec resit?

Napada mne, ze by bylo vhodne to resit dvema pruchody TeXem.
V prvnim pruchodu se zjisti strankove zlomy, v druhem se provede
definitivni sazba.

V prvnim pruchodu je nutno vysadit jednotlive radky do samostatnych
hboxu, aby mezi nimi mohl TeX zlomit stranku. Tedy pravy sloupec nemuze
byt vytvoren pomoci nejakeho boxu.  Aby mely radky stejne zalamany text
a tedy stejnou vysku, bude nutne je spravne zuzit.

Pomoci mechanismu \mark lze v tomto pruchodu zjistit strankove zlomy
a zapsat je do pomocneho souboru.

V druhem pruchodu jiz muze TeX nacist a vyuzit informace z tohoto
pomocneho souboru, takze muze formatovat jednotlive spravne.
Koneckoncu muze treba celou stranku udelat jako jeden box.

Nevim, nakolik se citite na nejake vetsi carovani s TeXovymi makry.

Pokud byste sice umel programovat, ale neznal prilis temna zakouti TeXu,
navrhl bych Vam takovyto postup:

1) Vytvorite primarni zdrojak a vytvorite verzi maker, ktera provede
formatovani do jednotlivych radek pro prvni pruchod.

2) Nastudujete, jak pomoci \mark a \write zapsat zlomy do pomocneho
souboru.  To muze byt trochu narocne, ale ostatni alternativy
(prohledat vystup dvitype nebo zapnout v TeXu tracing a prohledat
logovaci soubor) jsou mnohem horsi.

3) Pomoci nejakeho programu vytvorite z primarniho zdrojaku a
z informaci o strankovych zlomech TeXovy soubor velmi podobny
primarnimu zdrojaku, ktery vsak bude v mistech strankovych zlomu
upraven.  Muzete pouzit treba awk.

4) S mirne pozmenenou verzi maker (doporucuji samozrejme pouzit
\if.. v souboru maker) zkompilujete takto vytvoreny TeXovy zdrojak
a mate vysledek.

Doufam, ze Vam me rady pomohou, a preji prekny den,

	Stepan Kasal





More information about the csTeX mailing list