Co se nevejde do boxu

Ivosh Raisr iq_soft at students.zcu.cz
Tue Sep 26 08:54:57 CEST 2000


Dobry den.
Asi pred tremi mesici jsem se ptal vazeneho clenstva konference, zda by mi
neporadili s tim, jak na terminal vypsat to, co se vejde do boxu o zadane
sirce. Nejaky dobry clovek mi poradil hint, ktery byl pro me ovsem uplne
nesrozumitelny. Proto jsem se vrhnul na studovani TBN (opravdu velmi dobra
ucebnice, fakt ze jo). Po dvou mesicich studia jsem vyprodukoval makro
\zmer, ktere vypisuje na terminal to, co se vejde do boxu o sirce 3cm.
Makro pracuje celkem uspokojive, akorat je zde jeden  problem: ignoruje mi
mezery ze vstupu! Pri \tracingmacros=1 vidim, jake tokeny zpracovava a
mezery jsou vynechany?! Pritom TeX neni ve vertikalnim modu, kde mezery
pozira... Opravdu nevim, co s tim. Take jsem neprisel na zpusob, jak
zabranit expanzi ridicich sekvenci (trapny zpusob pomoci \let....=\relax
neni moc dobry, protoze nevim, jake sekvence na vstupu prijdou).
Laborovani s registrem toks nepomohlo.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\hsize=\maxdimen
\newdimen\CoseVejde \CoseVejde=3cm
\newtoks\text
\long\def\zmer #1{%
  \ifx #1\par \let\next=\relax
  \else 
    \edef\act{\text={\the\text \noexpand #1}}\act
    \setbox0=\hbox{\the\text}%       zkusi se dat do boxu
    \let\next=\zmer
    \ifdim \wd0<\CoseVejde          %pokud se to vejde, vypise obsah
      {\let\TeX=\relax
       \edef\act{\immediate\write16{\the\text}}%
       \act}
    \else \let\next=\dobehni     % uz se nevejde, pozer zbytek vstupu
    \fi
  \fi
  \next}
\def\dobehni #1\par{}

\noindent\zmer Tak \TeX, to bude opravdu zajim ave˜!

\bye
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Pokud by nekdo z vas vedel, kde je chyba, prosim, napiste. Budu velmi
vdecen.





More information about the csTeX mailing list