[cstex] import dat z externeho suboru do latexu - csvtools aleboine??

Zdenek Wagner zdenek.wagner at gmail.com
Tue Oct 11 13:01:44 CEST 2011


2011/10/11 peter knezel <peter.knezel at gmail.com>:
> Zdravim pan Hajtmar,
>
> vdaka za info a za analyzu problemu. Nemal som v plane spracovat mohutne csv
> subory, islo mi teraz cisto o moznost "quasi-random" importu hociktoreho
> [i,j]-teho prvku.
> Predstavte si obycajnu excelovsku tabulku velkosti 10x10. Kazde pole
> obsahuje kvantum textu, napriklad opis dajakeho zariadenia, cize nie je tam
> iba jedno slovo ale povedzme viac viet.
> A teraz nechce sa mi pracne kopirovat tieto prvky do vysledneho pdf
> dokumentu, ale chcem napriklad si zapamatat obsah poli [3,2], [4,3], [4,7],
> [8,6], [8,7] a [10,10] a tie vlozit
> do dokumentu.
> Nejde teraz o spatne vracanie sa do predchadzajucih riadkov.
>
>
> myslite si, ze by som mohol dajako pouzit prikazy csvromnumber a csvlinenum
> z baliku csvtools, ktore by mi umoznili uchovat hodnotu konkretneho pola
> alebo poli a neskorsie by som ich pouzil?
> A to vsetko priamo v zdrojovom latexovom kode xxx.tex?
>
Takhle jednoduchou ulohu bych si asi napsal sam. Prvni ulohou je
parser, ktery by rozebral CSV na jednotliva pole (je nutno osetrit
oddelovac mezi uvozovkami). Pak bych udelal dve makra:

\def\definecell{\expandafter\expandafter\expandafter\def\usecell}
\def\usecell#1#2{\csname ROW_#1_COLUMN_#2\endcsname}

Parser by pro kazdou bunku zavolal \definecell{row}{column}{contents}
a v miste pouziti by bylo \usecell{row}{column}. Pokud je cvslinenum
LaTeXovy counter, pak by bylo nutno pouzit \number{cvslinenum}, pokud
je \cvslinenum plainovsky count, musite pouzit \the\cvslinenum, pokud
je to makro, staci \cvslinenum.

Poznamka: pokud budete chtit pouzit nedefinovanou bunku, bude
vysledkem \relax (viz TeXbook nebo TBN). Je tedy mozno pouzit test

\expandafter\expandafter\expandafter\ifx\usecell{row}{column}\relax
  nedefinovana bunka
\else
  definovana bunka
\fi

> S pozdravom,
>
> peter knezel
>
>>Within the \CSVtotabular, \CSVtolongtable and \applyCSVfile commands,
>>there are two counters, csvlinenum and csvrownumber. The former,
>> csvlinenum,
>>is the current line number in the CSV file, whereas the latter,
>> csvrownumber, is
>>the current data row. Of the two counters, csvrownumber is likely to be the
>> most
>>useful.
>
>
>
> 2011/10/10 Jaroslav Hajtmar <hajtmar at gyza.cz>
>>
>> Dobry vecer.
>> Je to presne jak popsal pan Wagner...
>> Kdyz chcete skocit na 5. radek (tj. preskocit radky), tak musite stejne
>> nacist ty predchozi 4 radky (a klidne je pritom nezpracovavat tj. napr.
>> zahodit jejich obsah...) ...
>> Jeste horsi je to pri testovani nejakych hodnot, protoze pak musite
>> opravdu projit uplne vsechny radky (za predpokladu, ze predem neni zdrojovy
>> CSV soubor nejak predem setriden tj. jakoby naindexovan...) ... Na druhou
>> stranu musim rici, ze ani pri postupnem nacitani jednotlivych radku to zas
>> neni az tak silene pomale, jak by se mohlo zdat..
>> Navic je potreba si rici na rovinu, ze zpracovat CSV soubor TeXem
>> predpoklada, ze chcete neco nejak solidne vysazet, takze clovek nemuze
>> apriori predpokladat, ze se TeX bude chovat jako nejaky databazovy nastroj.
>> Pokud predem vite, ze ty CSV soubory budou mit napr. nekolik tisicu radku a
>> budete chtit delat opakovane radu ruznych sestav a vyberu (behem kratkeho
>> okamziku), pak bych se asi opravdu priklanel k tomu, ze se TeXovy zdrojak
>> vygeneruje z CSV pomoci Perlu ... V pripade ze se jedna o nekolik set radku,
>> tak bych to jako problem nevidel ... Bezne zpracovavam ConTeXtem asi 500ti
>> radkova CSV (skolni zakovske a ucitelske databaze) a z hlediska rychlosti to
>> na solidnim stroji (mam i5ku procesor) je opravdu behem par vterin hotove...
>> (Perlem jsem zpracovaval i nekolikatisiciradkove CSV soubory behem opravdu
>> zajimave kratkych casu ...)
>>
>> K nejake podrobnejsi analyze by bylo treba znat predem vice informaci.
>> Pokud jsem koukal na LaTeXovy nastroj CSVtools, tak mi to pripada na prvni
>> pohled jako solidni reseni i kdyz se priznam tak mi tak kvanta ruznych voleb
>> atd. pripadaji dost neprehledna (prolistoval jsem si behem par minut manual
>> ... ) ...
>> Kazdopadne bych pro jednodussi praci pouzil makro pana Olsaka .. to ovsem
>> zpracuje cely soubor tj. predem by bylo asi CSV nutne "rucne" pomoci Excelu
>> ci jineho nastroje pozadovana data setridit ci vyfiltrovat ... a posleze
>> udelat prohnat pres makro ...
>>
>> Zdravi J.Hajtmar
>>
>>
>>
>>
>>
>>
>>
>>
>> Dne 10.10.2011 17:17, peter knezel napsal(a):
>>>
>>> Zdravim pan Wagner,
>>> vdaka za vysvetlenie. Je mi teraz jasne, ze mozem narazit na problemy pri
>>> random vyberani riadkov a stlpcov.
>>> Na toto som vobec nemyslel. Mal som pred sebou len myslienku nahodneho
>>> vyberu [i,j]-tych prvkov, ktore sa zapisu na prislusne miesto v latex
>>> dokumente...
>>>
>>> prajem pekny podvecer,
>>>
>>> peter knezel
>>>
>>>
>>>
>>> 2011/10/10 Zdenek Wagner <zdenek.wagner at gmail.com
>>> <mailto:zdenek.wagner at gmail.com>>
>>>
>>>    2011/10/10 peter knezel <peter.knezel at gmail.com
>>>    <mailto:peter.knezel at gmail.com>>:
>>>    > Nuz nebol by to velky problem. Hladal som ale taky sofistikovany
>>>    balik,
>>>    > ktory to dokaze spravit.
>>>    > Ide o to, aby clovek nemusel pouzit este extra utilitky.
>>>    >
>>>    > Konkretne mi islo o to, ze ak sa mi dostane do ruky tabulka s
>>>    riadkami a
>>>    > stlpcami, tak jednoduchym prikazom z neho
>>>    > vytiahnem hociktory prvok. A ak sa da, tak pomocou dajakeho baliku.
>>>    >
>>>    Do CSV souboru v principu neni mozny "random access". Je nutno cist
>>>    sekvencne. Pokud potrebujete v TeXu zpracovat CSV soubor v jinem
>>>    poradi, nastava problem. Vratit se muzete pouze tak, ze soubor
>>>    zavrete, znovu otevrete a ctete od zacatku do prislusneho mista. Pokud
>>>    budete takto hledat mnoho informaci, bude to zoufale pomale (mozna i
>>>    na SD disku). Pak je nutno obsah ulozit do chytre pojmenovanych maker,
>>>    abyste je mohl v TeXu vyuzivat. Pak zalezi na tom, jak je ten CSV
>>>    velky, jestli se makra vejdou do pameti TeXu. Pokud chcete z velkeho
>>>    CSV pouzit jenom nekolik informaci v jinem poradi, pak je lepsi
>>>    prenechat parsovani na externi program. A pokud pro nej potrebujete na
>>>    zaklade jinych informaci z TeXoveho souboru dodat vstupni informace,
>>>    pak je lze pomoci \write zapsat do pomocneho souboru a pripadne
>>>    spustit externi program pomoci \write18 (a nebo si napsat vlastni
>>>    proceduru v lua).
>>>
>>>    > peter
>>>    >
>>>    > 2011/10/10 Michal Růžička <xruzick7 at fi.muni.cz
>>>    <mailto:xruzick7 at fi.muni.cz>>
>>>    >>
>>>    >> Zdravím,
>>>    >>
>>>    >> a nebylo by jednodušší převést na začátku CSV soubor např. Perl
>>>    >> skriptem např. do formátu LaTeX balíku keyval a až tu načíst do
>>>    >> LaTeXového dokumentu? Brání něco přenechání parsovacích prací
>>>    jinému
>>>    >> nástroji než přímo TeXu?
>>>    >>
>>>    >> S pozdravem
>>>    >> Michal Růžička
>>>    >>
>>>    >> Dne 10.10.2011 16:23, peter knezel napsal(a):
>>>    >> > Zdravim,
>>>    >> >
>>>    >> > A)
>>>    >> > dakujem vsetkym za pomoc. Vsetky tieto prispevky sa podobaju
>>>    na balik
>>>    >> > csvtools, ale zda sa mi, ze som asi nepopisal dost jasne
>>>    problem, ktory
>>>    >> > by som chcel vyriesit.
>>>    >> > Ide totiz o to, ze z daneho xxx.csv suboru by som chcel
>>>    importovat nie
>>>    >> > vsetky riadky, ale iba
>>>    >> > a) z konkretneho riadku bud udaj z jedneho pola alebo zo
>>>    vsetkych poli
>>>    >> > b) udaj z hociktoreho pola hociktoreho riadku
>>>    >> >
>>>    >> >
>>>    >> > vstup.csv
>>>    >> > Meno, Adresa, DatumVstupu, PSC
>>>    >> > jano, Jiraskova 4, 21-jan-2002, 433 22
>>>    >> > robo, Nedbalova 42, 3-okt-2005, 433 11
>>>    >> > erik, Misikova 422, 28-dec-2020, 333 22
>>>    >> >
>>>    >> > Vsetky Vase prispevky spracuju cely vstup.csv subor a ja by
>>>    som chcel
>>>    >> > mat moznost si vybrat a
>>>    >> > importovat hociktory prvok:
>>>    >> >  napr.
>>>    >> > 3. prvok z 1. riadku ==\insertDatumVstupu[1]=21-jan-2002
>>>    >> > 2. prvok z 3. riadku ==\insertAdresa[3]=Misikova 422
>>>    >> > 1. prvok z 3. riadku ==\insertMeno[3]=erik
>>>    >> >
>>>    >> >
>>>    >> > B)
>>>    >> > Este ma napadlo, ci by sa dalo pouzit dajaky vyhladavaci
>>>    prikaz podobne
>>>    >> > sql prikazu, na zaklade ktoreho
>>>    >> > by sa importovali hodnota (alebo hodnoty).
>>>    >> >
>>>    >> > \insertMeno where Meno="robo" #vloz iba meno, ked Meno=""robo"
>>>    >> >
>>>    >> > alebo
>>>    >> >
>>>    >> > \insert where PSC="*433*" #vloz vsetky riadky, pri ktorych
>>>    PSC obsahuje
>>>    >> > string 433
>>>    >> >
>>>    >> > peter
>>>    >> >
>>>    >> >
>>>    >> > 2011/10/10 Pavel Striz <striz at fame.utb.cz
>>>    <mailto:striz at fame.utb.cz> <mailto:striz at fame.utb.cz
>>>    <mailto:striz at fame.utb.cz>>>
>>>    >> >
>>>    >> >     Mj. novejsi a obecnejsi nastroj od Nikoly Talbot se jmenuje
>>>    >> > datatool.
>>>    >> >     ps
>>>    >> >
>>>    >> >
>>>    >> >     ----- Puvodní zpráva ----- Od: "peter knezel"
>>>    >> > <peter.knezel at gmail.com <mailto:peter.knezel at gmail.com>
>>>    <mailto:peter.knezel at gmail.com <mailto:peter.knezel at gmail.com>>>
>>>    >> >     Komu: <cstex at cs.felk.cvut.cz
>>>    <mailto:cstex at cs.felk.cvut.cz> <mailto:cstex at cs.felk.cvut.cz
>>>    <mailto:cstex at cs.felk.cvut.cz>>>
>>>    >> >     Odesláno: 10. ríjna 2011 11:39
>>>    >> >     Predmet: [cstex] import dat z externeho suboru do latexu
>>>    - csvtools
>>>    >> >     aleboine??
>>>    >> >
>>>    >> >
>>>    >> >
>>>    >> >         Zdravim vsetkych,
>>>    >> >
>>>    >> >         existuje balik, ktory mi umoznuje import dat z
>>>    externeho suboru
>>>    >> >         do latexu?
>>>    >> >         Rad by som do vopred pripraveneho listu alebo
>>>    dokumentu na
>>>    >> >         urcite miesta
>>>    >> >         importoval obsahy poli.
>>>    >> >         Pozeral som balik csvtools, ktory ma taketo
>>>    vlastnosti, ale
>>>    >> >         nedari sa mi
>>>    >> >         vytiahnut
>>>    >> >         z toho iba obsah konkretneho riadku (vid pripad a))
>>>    alebo udaje
>>>    >> >         roznych poli
>>>    >> >         z roznych riadkov (vid pripad b)).
>>>    >> >
>>>    >> >         a)
>>>    >> >         xxxx xxxxx xxxx xxxx \insertAdresa[2]
>>>    >> >         xxxxxxx \insertDatumVstupu[2] xxxxx xxxxx
>>>    >> >         xxx \insertMeno[2] xxx xx \insertPSC[2] \insertMeno[2]
>>>    >> >         xxx xxx xxxxx xxxxxxxxxxxxxx
>>>    >> >
>>>    >> >
>>>    >> >         b)
>>>    >> >         xxxx xxxxx xxxx xxxx \insertAdresa[3]
>>>    >> >         xxxxxxx \insertDatumVstupu[3] xxxxx xxxxx
>>>    >> >         xxx \insertMeno[2] xxx xx \insertPSC[2] \insertMeno[1]
>>>    >> >         xxx xxx xxxxx xxxxxxxxxxxxxx
>>>    >> >
>>>    >> >
>>>    >> >         vstup.csv
>>>    >> >         Meno, Adresa, DatumVstupu, PSC
>>>    >> >         jano, Jiraskova 4, 21-jan-2002, 433 22
>>>    >> >         robo, Nedbalova 42, 3-okt-2005, 433 11
>>>    >> >         erik, Misikova 422, 28-dec-2020, 333 22
>>>    >> >
>>>    >> >         S pozdravom,
>>>    >> >
>>>    >> >         peter knezel
>>>    >> >
>>>    >> >
>>>    >> >
>>>    >> >
>>>    >> >
>>>
>>>  ------------------------------__------------------------------__--------------------
>>>    >> >
>>>    >> >
>>>    >> >
>>>    >> >         _________________________________________________
>>>    >> >         csTeX mailing list
>>>    >> > csTeX at cs.felk.cvut.cz <mailto:csTeX at cs.felk.cvut.cz>
>>>    <mailto:csTeX at cs.felk.cvut.cz <mailto:csTeX at cs.felk.cvut.cz>>
>>>    >> > http://lists.felk.cvut.cz/__mailman/listinfo/cstex
>>>    >> > <http://lists.felk.cvut.cz/mailman/listinfo/cstex>
>>>    >> >
>>>    >> >
>>>    >> >     _________________________________________________
>>>    >> >     csTeX mailing list
>>>    >> > csTeX at cs.felk.cvut.cz <mailto:csTeX at cs.felk.cvut.cz>
>>>    <mailto:csTeX at cs.felk.cvut.cz <mailto:csTeX at cs.felk.cvut.cz>>
>>>    >> > http://lists.felk.cvut.cz/__mailman/listinfo/cstex
>>>    >> > <http://lists.felk.cvut.cz/mailman/listinfo/cstex>
>>>    >> >
>>>    >> >
>>>    >> >
>>>    >> >
>>>    >> > _______________________________________________
>>>    >> > csTeX mailing list
>>>    >> > csTeX at cs.felk.cvut.cz <mailto:csTeX at cs.felk.cvut.cz>
>>>    >> > http://lists.felk.cvut.cz/mailman/listinfo/cstex
>>>    >>
>>>    >>
>>>    >>
>>>    >> --
>>>    >> Michal Růžička <xruzick7 at fi.muni.cz <mailto:xruzick7 at fi.muni.cz>>
>>>    >> OpenPGP key: https://www.fi.muni.cz/~xruzick7/pgp-klic/
>>>    <https://www.fi.muni.cz/%7Exruzick7/pgp-klic/>
>>>    >> Fingerprint: 1CB2 41B9 F029 4B47 EECD  9BDA 90C9 CEB0 524C DACB
>>>    >> _______________________________________________
>>>    >> csTeX mailing list
>>>    >> csTeX at cs.felk.cvut.cz <mailto:csTeX at cs.felk.cvut.cz>
>>>    >> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>>>    >
>>>    >
>>>    > _______________________________________________
>>>    > csTeX mailing list
>>>    > csTeX at cs.felk.cvut.cz <mailto: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
>>>
>>>    _______________________________________________
>>>    csTeX mailing list
>>>    csTeX at cs.felk.cvut.cz <mailto:csTeX at cs.felk.cvut.cz>
>>>    http://lists.felk.cvut.cz/mailman/listinfo/cstex
>>>
>>>
>>>
>>> _______________________________________________
>>> csTeX mailing list
>>> csTeX at cs.felk.cvut.cz
>>> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>>>
>>
>> _______________________________________________
>> csTeX mailing list
>> csTeX at cs.felk.cvut.cz
>> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>
>
> _______________________________________________
> 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