Thread View: pl.comp.dtp.tex.gust
4 messages
4 total messages
Started by Magdalena Błażejak
Wed, 31 May 2017 22:24
[gust-l] Jak automatycznie wygenerować plik gotowy do wydruku
Author: Magdalena Błażejak
Date: Wed, 31 May 2017 22:24
Date: Wed, 31 May 2017 22:24
48 lines
3353 bytes
3353 bytes
Dzień dobry. Jak automatycznie na podstawie bazy danych wygenerować sformatowany plik gotowy do wydruku?? Proszę o jakąkolwiek pomoc - o ukierunkowanie gdzie szukać i w którą stronę iść. Wyżej zostało napisane pokrótce co chcę osiągnąć ale w szczegółach opowiem to teraz. Z programowania jakiegokolwiek jestem słaba, a wręcz można powiedzieć że nie potrafię, z TeX'a no cóż raz złożyłam swoją pracę dyplomową i może kilka raportów i artykułów napisałam przy pomocy TeX'a wiec też za dużo nie wiem. Projekt/zadanie które sobie postawiłam ma na celu czegoś się na uczyć a przy okazji może się uda stworzyć narzędzie przydatne mi w hobby... Ponieważ to hobby to nie pójdę do żadnego programisty nie wyłożę set złotówek aby mi napisał taki program - spróbuje to samej ogarnąć. Program ma umożliwić wpisanie ocen danego "uczestnika". uczestnik jest oceniany w różnych kategoriach, i nie w każdej kategorii musi być oceniony. Te oceny muszą być zgromadzone w jakiejś małej bazie danych (powiedzmy że ok 50 uczestników, no może 100) Następnie trzeba przygotować i wydrukować dyplomy, świadectwa, laurki - jak to sobie kto nazwie, na których będą dane uczestnika, kategorie w których był oceniony i oceny. Wszystko to wydrukowane, a raczej wdrukowane w odpowiednie miejsca na wcześniej przygotowanym dyplomie. Czy jest to do zrobienia? Szczególnie ostatni fragment tzn sformatowany plik do wydruku mogę przygotować i skompilować w TeX'u? A jak to wprowadzenie danych rozwiązać? Oczywiście proszę tylko o kierunek poszukiwań dalej sama będę drążyć temat. Czy rzeczywiście te 100 rekordów to może być jakaś mikro baza danych czy zupełnie inaczej to rozwiązać wystarczy plik txt do zapamiętania tych uczestników i ocen. Bardzo dziękuję za podpowiedzi i sugestie. PS. Tak trochę tajemniczo pisałam o uczestnikach i ocenach. Ale może jest ktoś kto tym się interesuje i może podłapie temat. Uczestnicy to tancerze - muszę "wypisać" w trakcie turnieju dyplomy dla uczestnikow. Jest też taka dziwna grupa "pro-am" która tańczy wielokrotnie i w różnych tańcach i w różnych grupach i w każdej grupie osobno zdobywają oceny... i na dyplomie chcą mieć wszystkie oceny. Więc może ktoś się tańcem i pro-am interesuje i może wie o czym mówię. Magda B
Re: [gust-l] Jak automatycznie wygenerować plik gotowy do wydruku
Author: tomasz przechlewski
Date: Fri, 02 Jun 2017 02:28
Date: Fri, 02 Jun 2017 02:28
144 lines
6370 bytes
6370 bytes
Rozwiązanie "zaawansowane":
1. dane w bazie sqlite (można ją utworzyć/dodawać rekordy w prosty
sposób wykorzystując coś co się nazywa sqlitebrowser)
w przykładzie plik kleinertest.db3 zawiera tabelę Kursanci
z której pobierane są pola ImieNazwisko, Plec i Ocena
2. drukowanie skryptem w języku Perl. Skrypt jest tak prosty że
do dopasowania go do konkretnej tabeli nie potrzeba znajomości Perla a
wystarczy zdrowy rozsądek (co zmienić zaznaczono @@)
Perl dla Windows do pobrania z https://www.activestate.com/
3. Skrypt uruchamia pdflatexa i drukuje zawartość bazy do pliku pdf
4. Można skomplikować skrypt, np podając argument na wejściu. Dajmy na
to nazwisko delikwenta do wydrukowania. Żeby nie drukować wszystkiego.
Do tego potrzeba minimalnej znajomości Perla
=====================================================
#!/usr/bin/perl -w
# Potrzebne są moduły Perla DBI DBD-SQLite DBD-SQLite2
#
use strict;
use utf8;
use DBI;
binmode(STDOUT, ":utf8");
my $dbfileName= "kleinertest.db3"; ## @@ nazwa pliku z bazą
my $tmpfileName = "kleinertest.tex"; ## @@ nazwa pliku .tex
my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfileName", "", "");
## @@ Pobranie danych z tabeli Kursanci (pola: ImieNazwisko, Plec Ocena)
my $sth = $dbh->prepare("SELECT
ImieNazwisko,
Plec,
Ocena
FROM Kursanci ");
$sth ->execute();
## PreAmBuła ### ### ### ### ###
open (TEX, ">$tmpfileName");
print TEX
"\\documentclass{article}\\usepackage{mydbiprint}\\begin{document}\n";
## MidBuła: drukowanie rekordów z bazy ## ### ### ###
## ImieNazwisko = $r[0], Plec = $r[1], Ocena = $r[2] itd...
while ( my @r = $sth->fetchrow_array() ) {
print TEX "\\Dyplom{ $r[0] }{$r[1]}{ $r[2] }\n"; ## @@ dopasować
do konkretnej tabeli
}
## PostAmBuła ## ### ### ### ###
print TEX "\\end{document}\n";
$dbh->disconnect || warn "Nie moge zamknac bazy $dbfileName\n";
## TeXowanie pliku: ## ## ### ### ### ### ###
close(TEX);
system("pdflatex", "$tmpfileName");
## koniec
================================================================
Przykładowy pakiet mydbiprint.sty
=================================
%% Minimalistyczny szablon do drukowania z bazy
\RequirePackage[utf8]{inputenc}
\RequirePackage{polski}
\RequirePackage{ifthen}
\pagestyle{empty}
\newcommand{\Dyplom}[3]{%%
\begin{center}\fontsize{30}{40}\selectfont DYPLOM\end{center}
\ifthenelse{\equal{#2}{K}}
{\DyplomDlaPani{#1}{#3}}
{\DyplomDlaPana{#1}{#3}}
}
\newcommand\DyplomDlaPani[2]{%
\begin{center}Pani #1\end{center}
Zdała egzamin z oceną #2\newpage}
\newcommand\DyplomDlaPana[2]{\begin{center}Pan #1\end{center}
Zdał egzamin z oceną #2\newpage}
\endinput
W dniu 01.06.2017 o 00:24, Magdalena Błażejak pisze:
> Dzień dobry.
>
> Jak automatycznie na podstawie bazy danych wygenerować sformatowany plik
> gotowy do wydruku??
> Proszę o jakąkolwiek pomoc - o ukierunkowanie gdzie szukać i w którą
> stronę iść.
>
>
> Wyżej zostało napisane pokrótce co chcę osiągnąć ale w szczegółach
> opowiem to teraz.
> Z programowania jakiegokolwiek jestem słaba, a wręcz można powiedzieć że
> nie potrafię, z TeX'a no cóż raz złożyłam swoją pracę dyplomową i może
> kilka raportów i artykułów napisałam przy pomocy TeX'a wiec też za dużo
> nie wiem. Projekt/zadanie które sobie postawiłam ma na celu czegoś się
> na uczyć a przy okazji może się uda stworzyć narzędzie przydatne mi w
> hobby... Ponieważ to hobby to nie pójdę do żadnego programisty nie
> wyłożę set złotówek aby mi napisał taki program - spróbuje to samej
> ogarnąć.
>
> Program ma umożliwić wpisanie ocen danego "uczestnika". uczestnik jest
> oceniany w różnych kategoriach, i nie w każdej kategorii musi być oceniony.
> Te oceny muszą być zgromadzone w jakiejś małej bazie danych (powiedzmy
> że ok 50 uczestników, no może 100)
> Następnie trzeba przygotować i wydrukować dyplomy, świadectwa, laurki -
> jak to sobie kto nazwie, na których będą dane uczestnika, kategorie w
> których był oceniony
> i oceny. Wszystko to wydrukowane, a raczej wdrukowane w odpowiednie
> miejsca na wcześniej przygotowanym dyplomie.
>
> Czy jest to do zrobienia? Szczególnie ostatni fragment tzn sformatowany
> plik do wydruku mogę przygotować i skompilować w TeX'u?
> A jak to wprowadzenie danych rozwiązać? Oczywiście proszę tylko o
> kierunek poszukiwań dalej sama będę drążyć temat. Czy rzeczywiście te
> 100 rekordów to może być jakaś mikro baza danych czy zupełnie inaczej to
> rozwiązać wystarczy plik txt do zapamiętania tych uczestników i ocen.
>
> Bardzo dziękuję za podpowiedzi i sugestie.
>
>
> PS. Tak trochę tajemniczo pisałam o uczestnikach i ocenach. Ale może
> jest ktoś kto tym się interesuje i może podłapie temat. Uczestnicy to
> tancerze - muszę "wypisać" w trakcie turnieju dyplomy dla uczestnikow.
> Jest też taka dziwna grupa "pro-am" która tańczy wielokrotnie i w
> różnych tańcach i w różnych grupach i w każdej grupie osobno zdobywają
> oceny... i na dyplomie chcą mieć wszystkie oceny.
> Więc może ktoś się tańcem i pro-am interesuje i może wie o czym mówię.
>
>
> Magda B
Re: [gust-l] Jak automatycznie wygenerować plik gotowy do wydruku
Author: tomasz przechlewski
Date: Fri, 02 Jun 2017 02:30
Date: Fri, 02 Jun 2017 02:30
151 lines
6770 bytes
6770 bytes
Dla porządku jeszcze przykładowa baza (w załączniku) żeby samemu nie
musieć od zera tworzyć
--tp
W dniu 02.06.2017 o 04:28, tomasz przechlewski pisze:
> Rozwiązanie "zaawansowane":
>
> 1. dane w bazie sqlite (można ją utworzyć/dodawać rekordy w prosty
> sposób wykorzystując coś co się nazywa sqlitebrowser)
>
> w przykładzie plik kleinertest.db3 zawiera tabelę Kursanci
> z której pobierane są pola ImieNazwisko, Plec i Ocena
>
> 2. drukowanie skryptem w języku Perl. Skrypt jest tak prosty że
> do dopasowania go do konkretnej tabeli nie potrzeba znajomości Perla a
> wystarczy zdrowy rozsądek (co zmienić zaznaczono @@)
>
> Perl dla Windows do pobrania z https://www.activestate.com/
>
> 3. Skrypt uruchamia pdflatexa i drukuje zawartość bazy do pliku pdf
>
> 4. Można skomplikować skrypt, np podając argument na wejściu. Dajmy na
> to nazwisko delikwenta do wydrukowania. Żeby nie drukować wszystkiego.
> Do tego potrzeba minimalnej znajomości Perla
>
>
> =====================================================
>
> #!/usr/bin/perl -w
> # Potrzebne są moduły Perla DBI DBD-SQLite DBD-SQLite2
> #
> use strict;
> use utf8;
> use DBI;
>
> binmode(STDOUT, ":utf8");
>
> my $dbfileName= "kleinertest.db3"; ## @@ nazwa pliku z bazą
> my $tmpfileName = "kleinertest.tex"; ## @@ nazwa pliku .tex
> my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfileName", "", "");
>
> ## @@ Pobranie danych z tabeli Kursanci (pola: ImieNazwisko, Plec Ocena)
> my $sth = $dbh->prepare("SELECT
> ImieNazwisko,
> Plec,
> Ocena
> FROM Kursanci ");
> $sth ->execute();
>
> ## PreAmBuła ### ### ### ### ###
> open (TEX, ">$tmpfileName");
>
> print TEX
> "\\documentclass{article}\\usepackage{mydbiprint}\\begin{document}\n";
>
> ## MidBuła: drukowanie rekordów z bazy ## ### ### ###
> ## ImieNazwisko = $r[0], Plec = $r[1], Ocena = $r[2] itd...
> while ( my @r = $sth->fetchrow_array() ) {
> print TEX "\\Dyplom{ $r[0] }{$r[1]}{ $r[2] }\n"; ## @@ dopasować
> do konkretnej tabeli
> }
>
> ## PostAmBuła ## ### ### ### ###
> print TEX "\\end{document}\n";
>
> $dbh->disconnect || warn "Nie moge zamknac bazy $dbfileName\n";
>
> ## TeXowanie pliku: ## ## ### ### ### ### ###
> close(TEX);
> system("pdflatex", "$tmpfileName");
>
> ## koniec
>
>
> ================================================================
> Przykładowy pakiet mydbiprint.sty
> =================================
>
> %% Minimalistyczny szablon do drukowania z bazy
> \RequirePackage[utf8]{inputenc}
> \RequirePackage{polski}
> \RequirePackage{ifthen}
> \pagestyle{empty}
> \newcommand{\Dyplom}[3]{%%
> \begin{center}\fontsize{30}{40}\selectfont DYPLOM\end{center}
> \ifthenelse{\equal{#2}{K}}
> {\DyplomDlaPani{#1}{#3}}
> {\DyplomDlaPana{#1}{#3}}
> }
> \newcommand\DyplomDlaPani[2]{%
> \begin{center}Pani #1\end{center}
> Zdała egzamin z oceną #2\newpage}
> \newcommand\DyplomDlaPana[2]{\begin{center}Pan #1\end{center}
> Zdał egzamin z oceną #2\newpage}
> \endinput
>
>
>
>
> W dniu 01.06.2017 o 00:24, Magdalena Błażejak pisze:
>> Dzień dobry.
>>
>> Jak automatycznie na podstawie bazy danych wygenerować sformatowany plik
>> gotowy do wydruku??
>> Proszę o jakąkolwiek pomoc - o ukierunkowanie gdzie szukać i w którą
>> stronę iść.
>>
>>
>> Wyżej zostało napisane pokrótce co chcę osiągnąć ale w szczegółach
>> opowiem to teraz.
>> Z programowania jakiegokolwiek jestem słaba, a wręcz można powiedzieć że
>> nie potrafię, z TeX'a no cóż raz złożyłam swoją pracę dyplomową i może
>> kilka raportów i artykułów napisałam przy pomocy TeX'a wiec też za dużo
>> nie wiem. Projekt/zadanie które sobie postawiłam ma na celu czegoś się
>> na uczyć a przy okazji może się uda stworzyć narzędzie przydatne mi w
>> hobby... Ponieważ to hobby to nie pójdę do żadnego programisty nie
>> wyłożę set złotówek aby mi napisał taki program - spróbuje to samej
>> ogarnąć.
>>
>> Program ma umożliwić wpisanie ocen danego "uczestnika". uczestnik jest
>> oceniany w różnych kategoriach, i nie w każdej kategorii musi być
>> oceniony.
>> Te oceny muszą być zgromadzone w jakiejś małej bazie danych (powiedzmy
>> że ok 50 uczestników, no może 100)
>> Następnie trzeba przygotować i wydrukować dyplomy, świadectwa, laurki -
>> jak to sobie kto nazwie, na których będą dane uczestnika, kategorie w
>> których był oceniony
>> i oceny. Wszystko to wydrukowane, a raczej wdrukowane w odpowiednie
>> miejsca na wcześniej przygotowanym dyplomie.
>>
>> Czy jest to do zrobienia? Szczególnie ostatni fragment tzn sformatowany
>> plik do wydruku mogę przygotować i skompilować w TeX'u?
>> A jak to wprowadzenie danych rozwiązać? Oczywiście proszę tylko o
>> kierunek poszukiwań dalej sama będę drążyć temat. Czy rzeczywiście te
>> 100 rekordów to może być jakaś mikro baza danych czy zupełnie inaczej to
>> rozwiązać wystarczy plik txt do zapamiętania tych uczestników i ocen.
>>
>> Bardzo dziękuję za podpowiedzi i sugestie.
>>
>>
>> PS. Tak trochę tajemniczo pisałam o uczestnikach i ocenach. Ale może
>> jest ktoś kto tym się interesuje i może podłapie temat. Uczestnicy to
>> tancerze - muszę "wypisać" w trakcie turnieju dyplomy dla uczestnikow.
>> Jest też taka dziwna grupa "pro-am" która tańczy wielokrotnie i w
>> różnych tańcach i w różnych grupach i w każdej grupie osobno zdobywają
>> oceny... i na dyplomie chcą mieć wszystkie oceny.
>> Więc może ktoś się tańcem i pro-am interesuje i może wie o czym mówię.
>>
>>
>> Magda B
Re: [gust-l] Jak automatycznie wygenerować plik gotowy do wydruku
Author: Leszek Wincenciak
Date: Fri, 02 Jun 2017 11:48
Date: Fri, 02 Jun 2017 11:48
132 lines
6313 bytes
6313 bytes
Pani Magdo,
zamieszczam przykładowy kod dla przypadku, z którym właśnie musiałem
się zmierzyć. Zadanie polegało na wygenerowaniu tzw. Book of Abstracts
na konferencję. Wykorzystałem do tego celu pakiet csvsimple.
W pliku boa.csv mam dane o uczestnikach z kolumnami zatytułowanymi
odpowiednio: fname, surname, email, affiliation, tytul, abstract, jel,
keywords, cojeden, codwa, cotrzy, cocztery, notes.
Plik jest rozdzielany średnikami, gdyż w tekście abstraktów znajdują
się przecinki. Ewentualne średniki w tekście należy albo usunąć i
zamienić np. na przecinki, albo cały taki abstrakt wziąć w nawiasy
klamrowe. Trzeba też uważać na różne symbole potencjalnie wybuchowe,
np. #, $, %, _ itd.
Polecenie \csvreader (poniżej) wczytuje plik csv z odpowiednimi
opcjonalnymi parametrami. Makro \cz{}{} ustawia mi wielkość czcionki.
Nazwy kolumn rozwijają się do poleceń typu \fname itd.
Polecenie \ifcsvstrcmp{\nazwa}{warunek tekstowy}{prawda}{fałsz} jest
bardzo pomocne, jeśli chcemy wykorzystać np. płeć naszych uczestników
do wygenerowania odpowiedniego napisu Mr. albo Mrs. Ja używam do
wygenerowania nazwisk współautorów, ale niektóre artykuły ich nie
posiadają, więc wtedy po prostu nic się nie dzieje.
Myślę, że na początek jest to dobre rozwiązanie. Zwłaszcza dla osób
(jak ja), które nie chcą zgłębiać tajników języków skryptowych, bo nie
mają na to czasu.
Moje doświadczenie (dwudniowe zaledwie) wskazuje, że plik csv trzeba
przygotować bardzo starannie pod kątem ewentualnych konfliktów z
LaTeXem.
Kod:
\csvreader[head to column names, respect sharp, respect percent, respect underscore, separator=semicolon]{boa.csv}{}{%
\vspace*{2\baselineskip}%
\begin{center}
{\cz{17}{20}%
\tytul{}%
}\\[25pt]%
\noindent{\fname\ \surname\\}%
{\it\email\\}%
{\affiliation\\[25pt]}%
{\bf Abstract\\[5pt]}
\noindent\begin{minipage}{0.8\textwidth}%
\noindent\abstract%
\end{minipage}\\[12pt]%
\end{center}%
\noindent{\bf JEL Codes:} \jel .\\[6pt]%
\noindent{\bf Keywords:} \keywords .\\[6pt]%
\ifcsvstrcmp{\cojeden}{}{}{\noindent{\bf Co-authors:}\\[2pt]}%
\ifcsvstrcmp{\cojeden}{}{}{\cojeden\\[2pt]}%
\ifcsvstrcmp{\codwa}{}{}{\codwa\\[2pt]}%
\ifcsvstrcmp{\cotrzy}{}{}{\cotrzy\\[2pt]}%
\ifcsvstrcmp{\cocztery}{}{}{\cocztery\\[2pt]}\\[30pt]%
\ifcsvstrcmp{\notes}{}{}{\notes}%
\vfill%
\hbox{}%
\newpage%
}
Pozdrawiam serdecznie,
Leszek Wincenciak
--
Wydział Nauk Ekonomicznych
Uniwersytet Warszawski
ul. Długa 44/50
00-241 Warszawa
From: Magdalena Błażejak <magdalena.blazejak@wp.pl>
To: gust-l@man.torun.pl
Date: Thursday, June 1, 2017, 12:24:57 AM
Subject: [gust-l] Jak automatycznie wygenerować plik gotowy do wydruku
> Dzień dobry.
> Jak automatycznie na podstawie bazy danych wygenerować sformatowany plik
> gotowy do wydruku??
> Proszę o jakąkolwiek pomoc - o ukierunkowanie gdzie szukać i w którą
> stronę iść.
> Wyżej zostało napisane pokrótce co chcę osiągnąć ale w szczegółach
> opowiem to teraz.
> Z programowania jakiegokolwiek jestem słaba, a wręcz można powiedzieć że
> nie potrafię, z TeX'a no cóż raz złożyłam swoją pracę dyplomową i może
> kilka raportów i artykułów napisałam przy pomocy TeX'a wiec też za dużo
> nie wiem. Projekt/zadanie które sobie postawiłam ma na celu czegoś się
> na uczyć a przy okazji może się uda stworzyć narzędzie przydatne mi w
> hobby... Ponieważ to hobby to nie pójdę do żadnego programisty nie
> wyłożę set złotówek aby mi napisał taki program - spróbuje to samej ogarnąć.
> Program ma umożliwić wpisanie ocen danego "uczestnika". uczestnik jest
> oceniany w różnych kategoriach, i nie w każdej kategorii musi być oceniony.
> Te oceny muszą być zgromadzone w jakiejś małej bazie danych (powiedzmy
> że ok 50 uczestników, no może 100)
> Następnie trzeba przygotować i wydrukować dyplomy, świadectwa, laurki -
> jak to sobie kto nazwie, na których będą dane uczestnika, kategorie w
> których był oceniony
> i oceny. Wszystko to wydrukowane, a raczej wdrukowane w odpowiednie
> miejsca na wcześniej przygotowanym dyplomie.
> Czy jest to do zrobienia? Szczególnie ostatni fragment tzn sformatowany
> plik do wydruku mogę przygotować i skompilować w TeX'u?
> A jak to wprowadzenie danych rozwiązać? Oczywiście proszę tylko o
> kierunek poszukiwań dalej sama będę drążyć temat. Czy rzeczywiście te
> 100 rekordów to może być jakaś mikro baza danych czy zupełnie inaczej to
> rozwiązać wystarczy plik txt do zapamiętania tych uczestników i ocen.
> Bardzo dziękuję za podpowiedzi i sugestie.
> PS. Tak trochę tajemniczo pisałam o uczestnikach i ocenach. Ale może
> jest ktoś kto tym się interesuje i może podłapie temat. Uczestnicy to
> tancerze - muszę "wypisać" w trakcie turnieju dyplomy dla uczestnikow.
> Jest też taka dziwna grupa "pro-am" która tańczy wielokrotnie i w
> różnych tańcach i w różnych grupach i w każdej grupie osobno zdobywają
> oceny... i na dyplomie chcą mieć wszystkie oceny.
> Więc może ktoś się tańcem i pro-am interesuje i może wie o czym mówię.
> Magda B
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads