[cstex] Cteni radku ze souboru

Zdenek Wagner zdenek.wagner at gmail.com
Thu Jan 24 11:32:37 CET 2008


24.1.08, Luboš Kloc <kloc at ipm.cz>:
> Petr Kučera wrote:
> > Ještě jedna zajímavost k tomuto problému. Zavolám-li makro \readln, tak se
> > mi ten text vypíše odsazený cca o tu jednu mezeru. Když ale dám po zavolání
> > tohoto makra \radek (kde by měl být uložen ten samý obsah, co se vypisuje po
> > zavolání toho makra), je již text neodsazen. Jak se tedy mohu zbavit těch
> > přebytečných mezer?
> >
> >       Děkuji za rady
> >
> >               PK
> >
> >
> Jak už Vám správně napsal pan Sojka, Vaše makro začíná sazbou mezery.
> Když ho zavoláte, vysadí mezeru a pak teprve obsah \radek.
>
> Musíte si uvědomit, že na rozdíl od mnoha programovacích jazyků je v
> TeXu mezera významný znak a přechod na nový řádek je interpretován jako
> mezera.
>
> Nemůžete proto libovolně používat v makrech mezery a přechody na nový
> řádek tak aby to "hezky vypadalo".
> Musíte vědět, kde ta mezera nevadí.
>
> Používá se trik, který eliminuje mezery na konci řádků - řádek se bez
> mezery ukončí znakem % takže jeho zbytek (včetně příslušného ukončení)
> se považuje za poznámku.
>
Přesně tak, v definici \readln musíte dát % za otvírací závorku. V
ostatních případech je mezera na konci řádku buď součástí
syntaktického pravidla (číslo, rozměr), nebo je za řídicí sekvencí TeX
v režimu přeskakování mezer. Ta druhá mezera, která byla načtena do
makra \radek, je konec řádku. Mělo by pomoci \hbox{\radek\unskip}.

> S pozdravem,
>
> Luboš Kloc
>
> _______________________________________________
> 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