Jaktoze nezna? ConTeXt jsou makra postavena <span style="font-weight: bold;">nad</span> plainem, takze toto mne prekvapilo. Jinak mam take dojem, ze makra v ConTeXtu jsou nejaka podivna. Bohuzel ono makra v TeXu, co se ladeni tyce, je opravdu neco silenyho, alespon pro mne jako programatora.
<br><br>Nicmene pojmenovavat ruzne se daji, teda alespon makra stylu \chapter a spol urcite bez problemu, coz jsem i pouzil, kdyz jsem s ConTeXtem zacinal a neumel spravne nasetupovat vzhled nadpisu :D<br><br>A pripojuji se k chvale na makra pana Olsaka, opravdu skvela prace, dekujeme :) !
<br><br><div style="margin-left: 40px;">S krasnym jarnim pozdravem, J<br><br></div><br><br><div><span class="gmail_quote">2007/3/15, Jaroslav Hajtmar <<a href="mailto:hajtmar@gyza.cz">hajtmar@gyza.cz</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Diky za odpoved.<br>Zkusil jsem v makru, ktere pouzivam prejmenovat co se da ... bohuzel bez<br>valneho vysledku.<br><br>Hlavni problem je v tom, ze se jedna o makro, ktere neni me vlastni -<br>napsal jej pan Olsak a urcite neni pro mne elementarni jej pochopit. Tim
<br>chci naznacit, ze pouzivam uz asi dva roky v plainu "blackbox"<br>scancsv.tex pana Olsaka v plainu k me naramne spokojenosti.<br><br>BTW: Myslim, ze v dnesni dobe pouzivani Excelovskych tabulek s daty je<br>
prave makro scancsv.tex pana Olsaka to prave, co umoznuje delat v plainu<br>jakysi "mailmerge". V plainu jsem s timto makrem udelal uz velkou<br>spoustu veci a bezne pomoci nej resim napr. hromadnou korespondenci pri
<br>prijimacich zkouskach a ruznych testech atd. Uvadim to jen proto, abych<br>mu udelal dobrou reklamu a nalakal pripadne zajemce o tuto zalezitost :-).<br>Zajemci si mohou toto makro stahnout z ftp serveru pana Olsaka<br>
<a href="ftp://math.feld.cvut.cz/pub/olsak/makra/">ftp://math.feld.cvut.cz/pub/olsak/makra/</a> .<br><br>Ja mam v teto chvili eminentni zajem zkusit pouzivat ConTeXt (vzhledem k<br>jeho formatovacim schopnostem) prave s timto makrem, coz by mi dalo do
<br>rukou neskutecne mocny nastroj (i kdyz pro mne bohuzel porad jeste<br>blackbox).<br><br>Bohuzel makro scancsv.tex ve spojeni s ConTeXtem bohuzel nefunguje. Pan<br>Olsak mi uz soukrome poradil a tim pomohl odhalit prvni problem tj. ze
<br>jeho makro vola plainovske makro \dospecials, ktere ConTeXt nezna.<br>Poradil mi prevzit definici makra \dospecials ze souboru plain.tex. Tam<br>je makro \dospecials definovano takto :<br><br>\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
<br>\do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}<br><br>Pote co jsem to udelal, tak se chybova hlaska zmenila na jinou hlasku :<br><br>! Missing \endcsname inserted.<br><to be read again><br>\relax<br>\runheader ...xpandafter \ifx \csname e:\itemdata
<br>\endcsname \relax \expanda...<br><br>\scanfirstline #1^^X->\scanheader #1;<br>^^X<br>\scanbase ...r \scanfirstline \input #1 \relax ^^X<br>\endhook \endgroup<br>l.19 \scanbase zamestnanci.csv^^M<br><br>?<br><br>Cele makro pana Olsaka je asi na 150 radcich a nechci ho posilat (viz.
<br><a href="ftp://math.feld.cvut.cz/pub/olsak/makra/">ftp://math.feld.cvut.cz/pub/olsak/makra/</a>), ale pokud by nekdo byl<br>ochoten se tim zabyvat a navic byl schopen pochopit z hlasky v cem je<br>problem, posilam svuj ConTeXtovy osekany zdrojak, cast makra ve ktere
<br>asi dojde k chybe a pak popis funkce makra, tak jak to popisuje pan<br>Olsak. Moc by mi pomohlo, kdyby se nekomu podarilo prijit na to, v cem<br>je jadro pudla.<br><br>Mnohokrat dekuji za pripadne rady a omlouvam se za asi dost specificky
<br>dotaz.<br>S pozdravem Jaroslav Hajtmar<br><br><br>Nasleduji popisovane prilohy:<br><br>% Muj zdrojak :<br>\setupoutput[pdftex] % Určuje výstup ConTeXtu.<br>\enableregime[cp1250] % Kódování.<br>\mainlanguage[cz] % Podle typografických pravidel
<br><br>\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%<br>\do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}<br><br>\input scancsv<br>\def\printaction{\e[jmeno]}<br>\def\lineaction{\printaction}<br>\starttext<br>\scanbase zamestnanci.csv
<br>\stoptext<br><br>% obsah souboru zamestnanci.csv (oddelovac pro csv je strednik ):<br>pc;jmeno<br>1.;Barton Jan<br>2.;Bila Vera<br>3.;Bokova Helena<br>4.;Brozova Marie<br><br><br><br>% nasleduje cast makra pana Olsaka :
<br><br>\def\scanbase #1 {\begingroup \endlinechar=`\^^X<br>\edef\maskauvo{\obklopeni####1\obklopeni\separator}<br>\edef\maskaneuvo{####1\separator}<br>\expandafter\def \expandafter\maskheader \maskauvo<br>{\def\itemdata{##1}\runheader}
<br>\expandafter\def \expandafter\nomaskheader \maskaneuvo<br>{\def\itemdata{##1}\runheader}<br>\expandafter\def \expandafter\maskitem \maskauvo<br>{\def\itemdata{##1}\runitem}<br>\expandafter\def \expandafter\nomaskitem \maskaneuvo
<br>{\def\itemdata{##1}\runitem}<br>\edef\scanfirstline ##1^^X{\noexpand\scanheader##1\separator\noexpand^^X}<br>\def\do##1{\catcode`##1=12 }\dospecials<br>\catcode`\ =10 \beginhook<br>\expandafter \scanfirstline \input #1 \relax^^X\endhook \endgroup}
<br><br><br>% a konecne popis funkce makra :<br><br>% scancsv. tex<br>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<br>% 26. 2. 2005 Petr Olsak<br><br>% Makro na zpracovani databasovych vystupu ve formatu CSV pro plain.<br>
%<br>% Srovnejte tez makro scanbase.tex<br>%<br>% Nacitane soubory se predpokladaji ve tvaru:<br>%<br>% "zahlavi1";"zahlavi2";"zahlavi3"; ... "zahlavi-n"<br>% "text 1,1";"text 1,2";"text 1,3"; ... "text 1,n"
<br>% "text 2,1";"text 2,2";"text 2,3"; ... "text 2,n"<br>% "text 3,1";"text 3,2";"text 3,3"; ... "text 3,n"<br>% ...<br>%<br>% Na takovy soubor je mozno po
<br>%<br>% \input scancsv.tex<br>%<br>% aplikovat makro \scanbase takto:<br>%<br>% \scanbase soubor<br>%<br>% Obklopujici znak " muze u libovolneho zahlavi nebo polozky<br>% chybet. Tj. je korektni treba i takovy zapis dat:
<br>%<br>% "jmeno";"prijmeni";cislo;RC<br>% "Ferdinand";"Mravenec";1;000111/2244<br>% "Josef";"Vykutal";2;444333/2211<br>%<br>% Makro nacte zahlavi a zacne cist jednotlive radky. Po precteni
<br>% kazdeho radku je obsah polozky pripraven v expanznim makru<br>% \e. Presneji \e[zahlavi] expanduje na text odpovidajici polozky.<br>% V teto situaci \scanbase spusti makro \lineaction, ktere si muze<br>% uzivatel definovat jak chce.
<br>%<br>% Po ukonceni makra \lineaction cte scanbase dalsi radek tabulky, naplni<br>% znovu expanzni makra \e texty polozek z tohoto radku a spusti znovu<br>% \lineaction. To se opakuje tak dlouho, dokud neni ukonceno cteni
<br>% tabulky. Navic je makru \lineaction k dispozici registr \numline<br>% obsahujici cislo prave precteneho radku.<br>%<br>% Priklad pouziti:<br>%<br>% \input scancsv<br>%<br>% \newcount \mylines<br>% \def\bb #1 #2/{\hbox to#1{#2\hss}}
<br>%<br>% \def\printaction{\global\advance\mylines by1 %% \scanabase pracuje<br>% \hbox{% %% uvnitr skupiny!<br>% \bb 2em \the\numline./<br>% \bb 26em \e[nazev]/<br>% \bb 10em \e[prijmeni] \e[jmeno]/<br>% \bb 3em \hfill\e[kc2002]/
<br>% \bb 3em \hfill\e[kc2001]/}<br>% }<br>% \def\lineaction{\if K\e[typ_clenstvi]% Kolektivni clenove<br>% \printaction<br>% \else \if G\e[typ_clenstvi]% Gymnazia<br>% \printaction<br>% \fi\fi % tisknu jen kolektivni cleny a gymnazia
<br>% }<br>% \scanbase database1<br>% \scanbase database2<br>% {\it Number of printed lines: \the\mylines}.<br>% \end<br>%<br>% Pokud neni uzivatelem definovano makro \lineaction, pouzije<br>% scanbase sve vlastni (defaultni) makro, ktere vytiskne vsechny polozky
<br>% jednoho radku do odstavce ve velmi zhustenem tvaru (vyzkousejte si).<br>%<br>% Kazde \scanbase vstupuje do skupiny, pak spusti \beginhook,<br>% pak cte hlavicku a jednotlive radky, jak bylo receno vyse,<br>% pak spusti \endhook a nakonec vyleze ze skupiny.
<br>% Sekvence \beginhook a \endhook muze predefinovat uzivatel, defaltne maji<br>% hodnotu \relax<br>%<br>% Uzivatel muze po nacteni \input scanbase predefinovat makra \separator<br>% a \obklopeni (viz nize), pokud jsou v datech polozky a zahlavi
<br>% oddeleny jinymi znaky nez strednik a symbol palce.<br><br><br><br><br><br>Josef Polách napsal(a):<br>> Jaroslav Hajtmar napsal(a):<br>><br>>> Potreboval bych zjistit do jake miry je ConTeXt "tolerantni" k externim
<br>>> plainovskym makrum (nacitanym pomoci \input). Predpokladam, ze to asi<br>>><br>><br>> Ani tady zr(ejme( nezáleží, jsou-li makra nac(ítána jako input<br>> nebo umíste(na ve stejném souboru jako ostatní zdroj.
<br>><br>><br>>> "zchroustne", ale pri pouziti slozitejsich maker mi ConTeXt neustale<br>>> hlasi nejake chyby. Muzete mi prosim poradit na co je treba si dat pozor<br>>><br>><br>> Jaké chyby? Podle chybových hlášek by se to me(lo dát poznat.
<br>><br>><br>>> pripadne v cem muze byt problem pri pouzivani plainovskych maker s<br>>> ConTeXtem?<br>>><br>><br>> Možná v robustnosti/kr(ehkosti. Ale zatím ConTeXt moc neznám.<br>> Napadá me( po zkušenostech s LaTeXem: Nepojmenovávat svá
<br>> makra stejne(, jako existující ConTeXtová, mohl by vypuknout<br>> zmatek a pr(ekvapení. Taky je potr(eba ohlídat si registry, co<br>> se kam ukládá... Každá pr(edpr(ipravená nadstavba skýtá<br>> nepohodlnost vlastních úprav.
<br>><br>><br>>> Diky. Jarda Hajtmar<br>>><br>><br>> Za nepatrne( málo. Patr(í se hrabat v te(ch chybových hláškách.<br>> Tr(eba více napoví ostatní...<br>><br>> Pohoda, hezký den<br>><br>
><br>><br>><br><br>_______________________________________________<br>csTeX mailing list<br><a href="mailto:csTeX@cs.felk.cvut.cz">csTeX@cs.felk.cvut.cz</a><br><a href="http://lists.felk.cvut.cz/mailman/listinfo/cstex">
http://lists.felk.cvut.cz/mailman/listinfo/cstex</a><br></blockquote></div><br><br clear="all"><br>-- <br>Se srdečným pozdravem Jakub Šťastný<br><br>Prosím neposílejte mi přílohy ve formátech doc, ppt, pps, wmv a podobně. Existuje spoustu kvalitních svobodných alternativ, které se (narozdíl od zmíněných) řídí standardy. Například OASIS standard pro psaní strukturovaných, textových dokumentů je formát odt. Děkuji.