-- tento kód by mohl být mnohem jednodušší a čitelnější, ale kvůli didaktické a formální stránce -- je použito funkcí umístěných ve vlastním jmenném prostoru (aby nedocházelo ke kolizím mezi funkcemi se stejným názvem) -- použitých v různých knihovnách atd... thirddata = thirddata or { } thirddata.kveten = { -- Global variables N=0, zahlaviroh='', zahlaviradku={}, zahlavisloupce={}, } -- definice vlastních funkcí pro řešení květnové úlohy -- tato funkce rozseká řetězec předávaný makrem do jednotlivých položek pole -- "1,2,3,4,5 ..." --> "1", "2", "3", ... function thirddata.kveten.rozparsujstring(string2parse) return string.split(string2parse, ",") end -- funkce pro Luatex (nedoděláno ...): -- tato funkce načte vstupní datovou tabulku a vytiskne ji -- řádky tabulky se uloží do pole pro pozdější využití function thirddata.kveten.nactiavytisknitabulku(filename) local lines = {} -- read the lines in table 'lines' for line in io.lines(filename) do table.insert(lines, line) end -- pro plain nedoděláno end -- funkce pro LuaLaTeX: -- tato funkce načte vstupní datovou tabulku a vytiskne ji -- řádky tabulky se uloží do pole pro pozdější využití function thirddata.kveten.nactiavytisknitabulkulatex(filename) local lines = {} -- pole řádků souboru local i,j -- read the lines in table 'lines' for line in io.lines(filename) do table.insert(lines, line) end local il=0 -- indexace řádků datového souboru (řádky souboru nejsou načteny do matice ale do pole) -- tiskni záhlaví tabulky tex.sprint([[\begin{tabular}{|c|]]) for i=1,thirddata.kveten.N do tex.sprint('|c') end tex.sprint([[|}\hline]]) tex.sprint(thirddata.kveten.zahlaviroh) for i=1,thirddata.kveten.N do tex.sprint('&'..thirddata.kveten.zahlavisloupce[i]) end tex.sprint([[\\ \hline\hline]]) -- a nyní všechny zbývající řádky ... for j=1,thirddata.kveten.N do -- pro všechny zbývající řádky ... tex.sprint(thirddata.kveten.zahlaviradku[j]) for i=1,thirddata.kveten.N do -- pro všechny buňky tabulky daného j-tého řádku il = il + 1 -- posun na další řádek souboru s daty tabulky tex.sprint(' & '..lines[il]) end -- for i=1 tex.sprint([[\\ ]]) tex.sprint([[\hline]]) end -- for j=1, tex.print([[\end{tabular}]]) end -- of function -- funkce pro ConTeXt (stejná jako pro LaTeX, jiná syntaxe příkazů pro sazbu tabulky): -- tato funkce načte vstupní datovou tabulku a vytiskne ji -- řádky tabulky se uloží do pole pro pozdější využití function thirddata.kveten.nactiavytisknitabulkucontext(filename) local lines = {} -- pole řádků souboru local i,j -- read the lines in table 'lines' for line in io.lines(filename) do table.insert(lines, line) end local il=0 -- indexace řádků datového souboru (řádky souboru nejsou načteny do matice ale do pole) -- tiskni záhlaví tabulky tex.sprint([[\bTABLE ]]) tex.sprint([[\bTR\bTD ]]) tex.sprint(thirddata.kveten.zahlaviroh) tex.sprint([[\eTD ]]) for i=1,thirddata.kveten.N do tex.sprint([[\bTD ]]..thirddata.kveten.zahlavisloupce[i]..[[\eTD ]]) end tex.sprint([[\eTR ]]) -- a nyní všechny zbývající řádky ... for j=1,thirddata.kveten.N do -- pro všechny zbývající řádky ... tex.sprint([[\bTR ]]) tex.sprint([[\bTD ]]..thirddata.kveten.zahlaviradku[j]..[[\eTD ]]) for i=1,thirddata.kveten.N do -- pro všechny buňky tabulky daného j-tého řádku il = il + 1 -- posun na další řádek souboru s daty tabulky tex.sprint([[\bTD ]]..lines[il]..[[\eTD ]]) end -- for i=1 tex.sprint([[\eTR ]]) end -- for j=1, tex.print([[\eTABLE]]) end -- of function