[cstex] Vyplnění dokumentu údaji z databáze (hromadná korespondence)
"Procházka Lukáš Ing. - Pontex s. r. o."
LPr at pontex.cz
Wed Jul 16 15:39:14 CEST 2008
... Děkuji za okomentovaný návod, člověku-laikovi to vnáší světlo do
problematiky.
Návod zkouším zatím doslovně, protože si netroufám dělat nějaké větší
zásahy.
Ale zatím to nefunguje bezchybně.
Do přílohy přikládám i soubor Test.tex (hlavní soubor) a "databázi"
Data.csv. Jelikož ale nevím, jestli přílohy projdou serverem, kopíruji
obsah i do mailu.
Děkuji za trpělivost a prosím laskavě o další krok v "ladění".
Lukáš Procházka
Test.tex:
\documentclass{article}
\begin{document}
XXX
\def\precti#1;#2;#3;#4;{ooo #1 -- #2 -- #3 -- #4 ppp}
\newread\vstup % rezervujeme si ident
\openin\vstup Data.csv
\read\vstup to \radek
\expandafter\precti\radek;
\newif\ifRadekPrecten
\RadekPrectentrue
\newread\vstup
\openin\vstup jmeno.souboru
\loop
\ifeof\vstup
\radekPrectenfalse % konec souboru
\fi % \ifeof
\ifRadekPrecten
\read\vstup to \radek
\expandafter\precti\radek;
\repeat % ukonci \loop
\closein\vstup
YYY
\end{document}
Data.csv:
AAA;aaa;1;11
BBB;bbb;2;22
Zdenek Wagner wrote:
> 2008/7/16 "Procházka Lukáš Ing. - Pontex s. r. o." <LPr at pontex.cz>:
>
>> Dobrý den,
>>
>> řeším specifický problém.
>>
>> Mám dopis napsaný v LaTeXu. V něm jsou čtyři pole, která se mají měnit
>> (říkejme jim např. PAR1, PAR2, PAR3 a PAR4).
>>
>> Vedle toho mám textový dokument jako databázi, kde každý řádek obsahuje tyto
>> čtyři parametry na jednom řádku oddělené oddělovačem (předpokládejme
>> středník). Řádků v databázi je cca 600.
>>
>> A potřebuji tyto hodnoty postupně (po řádcích) načítat, nahrazovat jimi
>> parametry PAR1-4 (resp. dosazovat za tyto parametry) a .texový dokument
>> zkompilovat do .pdf. Mělo by tak vzniknout cca souborů .pdf. (Nebo může
>> vzniknout jeden 600stánkový dokument, to je také řešení.)
>>
>> Pro dokreslení skutečnosti - jde o dopis, ve kterém jsou parametricky
>> zadávány adresy a další, tj. parametry představují jméno, adresu, kontaktní
>> telefon a nějaké další údaje.
>>
>> Nejsem TeXovsky zdatný programátor - zvládnu pouze primitivní jednořádkové
>> příkazy bez cyklů a podmínek - proto budu vděčen za každý námět, jak tuto
>> hromadnou korespondenci vyřešit.
>>
>> Požívám TL2007 pod WinXP.
>>
>>
> Nejprve si připravte definici makra, kde budou parametry odděleny
> příslušným oddělovačem (např. středníkem):
>
> \def\precti#1;#2;#3;#4;{... definice ...}
>
> Makro \precti uvidí 4 parametry označené klasicky #1, #2, #3, #4,
> takže s nimi můžete běžně pracovat. Nyní si otevřete vstupní soubor:
>
> \newread\vstup % rezervujeme si identifikátor
> \openin\vstup jmeno.souboru
>
> Řádek nacteme do řídící sekvence \radek příkazem
>
> \read\vstup to \radek
>
> Obsah makra \radek nyní musíme dostat jako parametr makra \precti, tj.
> musí být expandován dříve. Navíc asi není středník na konci řádky,
> musíme jej tedy doplnit při volání makra. Příkaz tedy bude vypadat:
>
> \expandafter\precti\radek;
>
> Konec souboru otestujeme příkazem \ifeof\vstup a vše vložíme do \loop.
> Makro \loop ale požaduje \if bez \else, jenže \ifeof vrací hodnotu
> přesně opačnou. Uděláme si tedy další pomocnou proměnnou typu \if. Vše
> by pak mohlo vypadat nějak takhle:
>
> \newif\ifRadekPrecten
> \RadekPrectentrue
> \newread\vstup
> \openin\vstup jmeno.souboru
> \loop
> \ifeof\vstup
> \radekPrectenfalse % konec souboru
> \fi % \ifeof
> \ifRadekPrecten
> \read\vstup to \radek
> \expandafter\precti\radek;
> \repeat % ukončí \loop
> \closein\vstup
>
> Stačí nadefinovat \precti, aby to s parametry udělalo požadované,
> doplnit \documentclass, \begin{document}, \end{document} a doufat, že
> jsem to z hlavy bez vyzkoušení napsal správně.
>
>
>> Předem děkuji.
>>
>> Zdravím
>>
>> Lukáš Procházka
>>
>>
>> --
>>
>> Ing. Lukáš Procházka [LPr at pontex.cz <mailto:LPr at pontex.cz>]
>> Pontex s. r. o. [www.pontex.cz <http://www.pontex.cz>]
>> [pontex at pontex.cz <mailto:pontex at pontex.cz>]
>> Bezová 1658
>> 147 14 Praha 4
>>
>> Tel: +420 244 06 22 38
>> Fax: +420 244 46 10 38
>>
>>
>> _______________________________________________
>> csTeX mailing list
>> csTeX at cs.felk.cvut.cz
>> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>>
>>
>>
>
>
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Data.csv
Type: application/vnd.ms-excel
Size: 28 bytes
Desc: not available
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20080716/9d19671a/attachment-0003.xlb>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Test.tex
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20080716/9d19671a/attachment-0003.ksh>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: LPr.vcf
Type: text/x-vcard
Size: 363 bytes
Desc: not available
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20080716/9d19671a/attachment-0003.vcf>
More information about the csTeX
mailing list