[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