[cstex] Plain: jak na postranní čářu přes více stránek?

Zdenek Wagner zdenek.wagner at gmail.com
Thu Sep 1 11:54:10 CEST 2011


2011/9/1 Jan Matejka <moskyto at atrey.karlin.mff.cuni.cz>:
> Dobrý den
>
>> Idea je mít "exkurz" v rámečku, nebo alespoň vyznačený
>> čarou postraně. V obou případech je problémem ona čára
>> postraně.
>
> Nečetl jsem článek pana Zýky, nicméně napadá mě ještě vysázet celý
> exkurs do \vboxu, který se pak v output rutině \vsplitne, pokud by
> přetekl stránku. Podobné řešení se používá třeba ve dvojsloupcové sazbě
> podle Knutha (nějaký appendix TeXbooku).
>
Tohle nepůjde. Pokud to udělám jako \vbox, který se bude rovnou sázet
a zrovna se na stránku nevejde, pak TeX zlomí stránku nad ním, nahlásí
případně underful \vbox, \output tento box vůbec neuvidí. Ten \vbox se
dostane na další stránku. Pokud se tam nevejde, TeX jej tan stejně
strčí a nahlásí overful \vbox, ale tady asi máte v \output možnost
udělat \vsplit a nepoužitý materiál vrátit do \box255. Vícesloupcová
sazba se řeší tak, že se \vsize nastaví na požadovanou výšku zrcadla *
počet sloupců a \hsize na šířku sloupce, takže \output vidí dlouhou
stranu, kterou lze pomocí \vsplit překousat a umístit do sloupců. Dal
by se ale udělat jiný trik, exkurz vysadit do \vboxu, který se nebude
hned sázet. Pak bude třeba vyvolat algoritmus plnění strany. Ten se
vyvolá buď v okamžiku, kdy je již stránka zaplněna, nebo když je
vynucen pomocí \penalty. \break je vlastně \penalty -10000 a při
penalizaci -1000 a nižší se cena stránkového zlomu nepočítá a rovnou
se vyvolá algoritmus plnění stránky. Lze využít obdobný mechanismus,
jaký používá LaTeX při umísťování plovoucích objektů. Jakmile je
exkurs ve \vboxu, vloží se ve vertikálním režimu \penatty -10001.
\output pak ví, že cena -10000 je normální break, jiná cena je
normální stránkový zlom, ale při -10001 je nutno zpracovat exkurs,
který je v jistém \vboxu. Pokud se na stránku vejde celý, šoupne se
tam a vše se vrátí do \box255. Pokud se nevejde, vezme se část,
provede se \shipout a nějak se musí zpracovat zbytek. Nejsem si jist,
zda při vícestránkovém exkursu může jeden \oiutput udělat \shipout
několikrát. Zbytek, který zaplní jen část následující stránky, se
šoupne do \box255.

> MQ
> --
> Jan Matejka aka 'Moskyto'
> moskyto at atrey.karlin.mff.cuni.cz
> http://atrey.karlin.mff.cuni.cz/~moskyto
> Phone: +420 721 047 653 (only if really necessary, pls)
> --
> I don't drink, don't smoke, I always get the best possible mark and I go to
> the church every Sunday. I only sometimes lie.
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
>
> iEYEARECAAYFAk5fSLYACgkQXQEyx5YHw4NI2ACfdVzwjpdfgVeg63I12szdb5QJ
> 9nYAoIbkxaHj8q3qZCfWUf+DROI2ED8p
> =J/jF
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>
>



-- 
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz




More information about the csTeX mailing list