% Ukázka použití. Kompilace: lualatex examples-latex.tex
\documentclass{article}
\usepackage{luatextra}
\usepackage[utf8]{luainputenc}
\parindent0pt

\begin{document}
\pagestyle{empty} 

% Načtení knihovny  
\directlua{dofile("../scancsv-general/scancsv.lua")}

% Volitelné definice "háčků" (defaultně jsou háčky "zarelaxovány") 
% Hooks před a po zpracování celé tabulky:
\def\bfilehook{Seznam účastníků zájezdu {\bf\csvfilename}:
	 	\par\bigskip}
\def\efilehook{\par Sestavou bylo vypsáno {\bf\numrows} účastníků.
		\bigskip}

% Hooks před a po zpracování řádkové informace:
\def\blinehook{Účastník č. \numline :\par} % akce před výpisem ř.
\def\elinehook{\par\smallskip\hrulefill\medskip\par} % po výpisu ř.

% Definice pomocných vyhodnocujících maker použitých v sestavách  
\def\priponaa{\if m\pohl\else a\fi}
\def\priponai{\if m\pohl\else í\fi}

% Definice tiskové sestavy:
\def\printaction{
	pan\priponai\ \Jmeno\ \Prijmeni\par
	narozen\priponaa\ \DatumNarozeni\par
	bytem \bydliste
} 

% Pro zpracování nyní stačí definice makra \lineaction např. takto:
% \def\lineaction{\printaction}

% Vzhledem k ukázkovému zpracování více CSV souborů příklad
% poněkud zobecníme (byť za cenu menší přehlednosti)

% Vlastní tiskové makro pro soubor zaci.csv si připravíme např. takto:
% Uvědomme si, že tento CSV soubor je "bez hlavičky" tj. není známa
% informace o názvech sloupců

\def\lineaction{
  % Kvůli přehlednosti si můžeme nastavit potřebná makra
		\let\Jmeno\cB % ve 2. sloupci tj. excelovsky sloupec B 
		\let\Prijmeni\cC
		\let\DatumNarozeni\cD
		\let\pohl\cE% pro fungování pomocných maker \priponaa a \priponai
		\def\bydliste{\cG, \cF} % můžeme i definovat nová makra
	% Cílem těchto "tanečků" je docílit toho, aby byla všechna makra
	% používaná v tiskové sestavě \printaction nadefinována dříve, než  
		\printaction  % zavoláme. 
}

% Zpracování sestavy pro tabulku zaci.csv zařídí Lua tento kód:
%\directlua{filelineaction("zaci.csv")}

\filelineaction{zaci.csv} % nebo příslušné TeXové makro

% Závěrečná ukázka použití některých "systémových" maker:

Poslední zpracovaný řádek tabulky \csvfilename:\par\smallskip

\printline\bigskip

CSV tabulka \csvfilename\ ve "zhuštěném tvaru":\par\smallskip

\printall\pagebreak

Výpis reportních informací z CSV souboru \csvfilename:\par\bigskip

\csvreport

% Ukázka toho, jak naráz zpracovat více různých CSV souborů:

% Tiskové makro pro soubor studenti.csv si připravíme jinak. 
% Tabulka má záhlaví s názvy sloupců. Lze se tak odvolávat na názvy
% sloupcových maker, případně si vytvořit další potřebná makra

\def\lineaction{
	\let\pohl\Pohlavi% fungování pomocných maker \priponaa a \priponai
	\def\bydliste{\Ulice, \PSC\ \Mesto} % bydliště trochu jinak
	\printaction % standartní tisková sestava (lze užít i jinou)
}

% Vlastní zpracování sestavy pro tabulku studenti.csv
\setheader % nastaví CSVHeader=true - příznak existence záhlaví
% \filelineaction{studenti.csv} % V LaTeXu zpracuje jen celý soubor 
% nebo pomocí Lua i souvislé skupiny řádků
% filelineaction("studenti.csv",3,5) -- vypíše jen od ř.3 do ř.5

\directlua{filelineaction("studenti.csv",3,5)}
% \directlua{filelineaction("studenti.csv",8,17)} % další řádky

Poslední zpracovaný řádek tabulky \csvfilename:\par\smallskip

\printline\bigskip

CSV tabulka \csvfilename\ ve "zhuštěném tvaru":\par\smallskip

\printall\pagebreak

Výpis reportních informací z CSV souboru \csvfilename:\par\bigskip

\csvreport\pagebreak 

% Zveřejněná ukázka výstupu programu bude provedena od tohoto místa: 

% Ukázka toho, že lze také zpracovat i CSV soubor s jiným formátem:
% Příprava tiskového makra pro soubor zamestnanci.csv
% Tabulka má také záhlaví s názvy sloupců, takže postačí jen:
\def\lineaction{
	\let\pohl\Pohlavi% Pro pomocná makra
	\def\bydliste{\Bydliste} % jinak - dle CSV tabulky zamestnanci.csv
	\printaction % standartní tisková sestava (lze ale použít i jinou)
}

% Vlastní zpracování sestavy pro tabulku zamestnanci.csv
% Předem nastavíme potřebné proměnné modifikující chování knihovny
\setheader % tj. soubor má hlavičku s názvy polí
\setsep{,} % oddělovač polí
\setld{"} % levý vymezovač 
\setrd{"} % pravý vymezovač
\filelineaction{zamestnanci.csv}

Poslední zpracovaný řádek tabulky \csvfilename:\par\smallskip

\printline\bigskip

CSV tabulka \csvfilename\ ve "zhuštěném tvaru":\par\smallskip

\printall\pagebreak

Výpis reportních informací z CSV souboru \csvfilename:\par\bigskip

\csvreport

\end{document}
