[cstex] vlna

Zdenek Wagner zdenek.wagner at gmail.com
Sun Oct 28 11:01:01 CET 2007


28.10.07, Zdenek Wagner <zdenek.wagner at gmail.com>:
> 27.10.07, Marek Nožka <tlapicka at centrum.cz>:
> > On Thu, 25 Oct 2007 10:39:00 +0200 "Zdenek Wagner"
> > <zdenek.wagner at gmail.com> wrote to "Czech and Slovak TeX-related
> > mailing list" <cstex at cs.felk.cvut.cz>:
> >
> > > Muzete mi poslat minimalni soubor, ktery tu chybu zpusobuje, + log? Je
> > > mozne, ze nastava konflikt s nejakym balickem. Na radku 33 by chyba
> > > vznikat nemela.
> >
> > Mě to dělá něco podobného. Chyba je ale na řádku 32 :-)
> >
> To je tím, že máte starší verzi.
>
Všiml jsem si, že na stroji hroch486 stále přežívá stará
experimentální verze. Vymazal jsem ji a dal jsem tam odkaz na novou
verzi na http://icebearsoft.euweb.cz/tex/

> > Mysle jsem, že je to balíkem \usepackage[utf8x]{inputenc}
> > (moc nechápu, co je to encTeX ale z toho co jsem četl, taka nějak
> > tuším, že se to s UTF-8 nemá rádo)
> > ale ten jsem vyhodil a soubor převedl to do iso8859-2. Taky to
> > nepomohlo.
> >
> Je to stejný problém, nemáte aktivován encTeX.
>
> > Mám TeXLive na Debian Etch GNU/Linux. Překládám pomocí cslatex.
> >
> Zde by encTeX měl být, jen není defaultně aktivován. Pusťte si
> texconfig a zvolte Formats. Otevře se Váv ve vimu soubor fmtutils.cnf.
> K formátům pdflatex, latex, tex, pdftex si přidejte -enc, takže to
> bude vypadat takto:
>
> tex             tex     -               tex.ini
> pdftex          pdftex  -               -enc -translate-file=cp227.tcx
> *pdftex.ini
> latex           pdftex  language.dat    -enc -translate-file=cp227.tcx
> *latex.ini
> pdflatex        pdftex  language.dat    -enc -translate-file=cp227.tcx
> *pdflatex.ini
>
> Neměňte cp227.tcx, jinak se formáty nevygenerují. U CS formátů najdete
> komentáře Petra Olšáka. Všechny mé linuxové počítače pracují v UTF-8,
> proto jsem chtěl mít UTF-8 jako default. Příslušná část proto vypadá:
>
> # - Czech / Slovak for ISO-8859-2 locale (see below for UTF8). Enable
> # "by hand", not by "fmtutil --enablefmt", because definitions for
> # ISO-8859-2 / UTF8 share the same name.
> #! csplain              pdftex  -               -etex
> -translate-file=cp227.tcx csplain.ini
> #! cslatex              pdftex  -               -etex
> -translate-file=cp227.tcx cslatex.ini
> #! pdfcsplain   pdftex  -               -etex
> -translate-file=cp227.tcx csplain.ini
> #! pdfcslatex   pdftex  -               -etex
> -translate-file=cp227.tcx cslatex.ini
>
> # - Czech / Slovak for UTF8 locale (see above for ISO-8859-2). Enable
> # "by hand", not by "fmtutil --enablefmt", because definitions for
> # ISO-8859-2 / UTF8 share the same name.
> csplain      pdftex     -               -etex -enc csplain-utf8.ini
> cslatex      pdftex     -               -etex -enc cslatex-utf8.ini
> pdfcsplain   pdftex     -               -etex -enc csplain-utf8.ini
> pdfcslatex   pdftex     -               -etex -enc cslatex-utf8.ini
>
> Po uložení změn budou automaticky vygenerovány potřebné formáty.
>
> > Minimální soubor a log jsou v přílohách.
> >
> > Děkuji.
> >
> > Jen ještě filozofická otázka: Co mi přináší vlna.sty oproti klasické
> > zkompilované vlně? Je to jen v tom, že se mi to vlnkuje samo už při
> > překladu a já to nemusím pouštět ručně nebo je v tom něco víc?
> >
> Především encTeX umožňuje, že se znaky chovají jako znaky, nikoliv
> jako expandovatelné sekvence. Představme si, že chceme testovat
> následující znak a podle toho provést nějakou akci. Máme tedy v makru
> napsáno:
>
> \futurelet\znak\testujznak
>
> V makru \testujznak pak něco děláme s obsahem \znak. Pokud náslodovalo
> písmeno c, pak v makru \znak je skutečně písmeno c s kategorií 11.
> Pokud použijete balíček inputenc a vstupní kódování je osmibitové a na
> vstupu je č, pak \znak bude obsahovat č ve vstupním kódování, ale s
> kategorií 13. Nyní chcete dělat něco jiného, pokud je na vstupu c.
> Napíšete test:
>
> \if\znak c ... \else ... \fi
>
> Primitiv \if provádí plnou expanzi. Aktivní č se tedy expanduje na
> sérii tokenů, první dva se srovnají, budou různé, zbytek se přeskočí a
> provede se kód za \else, což je v pořádku. Když napíšeme:
>
> \if c\znak ... \else ... \fi
>
> bude výsledek v zásadě stejný. Horší to bude v případě, kdy chceme
> testovat, zda je následujícím znakem č. Nezáleží na tom, zda napíšeme
> \if č\znak, nebo \if\znak č, vzhledem k expanzi nebude podmínka
> splněna nikdy.
>
> Ještě horší je případ, kdy je text v UTF-8. Pak totiž \znak může
> obsahovat jen půlku znaku. Při expanzi makra \znak při vyhodnocování
> podmínky \if dojde k chybě, protože za první půlkou znaku následuje
> cosi, co v druhé půlce být nesmí. Pokud se použije encTeX, pak TeX
> vidí osmibitové znaky v kódování fontu, takže č bude vždy znak s
> kategorií 11. Výše uvedené testy budou tedy fungovat.
>
> A nyní se vraťme k vlnkování. V matematice a v prostředích verbatim
> vlnkovat nechceme. Externí program se řídí výčtem prostředí, zatímco
> encTeX je založen na myšlence (nevím, kdo ji řekl jako první): "Only
> TeX can read TeX." Představme si, že si kvůli úspoře psaní
> nadefinujeme:
>
> \newcommand\be[1][]{\begin{equation}\ifcat$#1$\else\label{#1}\fi}
> \newcommand\ee\{\end{equation}}
>
> Pak napíšeme:
> \be[complex.num]
> \exp(i \phi) = \cos\phi + i \sin\phi
> \ee
>
> Externí program tuto rovnici ovlnkuje, vlna.sty správně pozná matematický režim.
>
> Další informace najdete ve dvou článcích Petra Olšáka, viz:
> http://bulletin.cstug.cz/bul973.shtml
> http://bulletin.cstug.cz/bul20032.shtml
>
>
> --
> Zdeněk Wagner
> http://hroch486.icpf.cas.cz/wagner/
> http://icebearsoft.euweb.cz
>


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


More information about the csTeX mailing list