🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#27120
Author: Magdalena Błażejak
Date: Wed, 31 May 2017 22:24
48 lines
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
#27124
Author: tomasz przechlewski
Date: Fri, 02 Jun 2017 02:28
144 lines
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
#27125
Author: tomasz przechlewski
Date: Fri, 02 Jun 2017 02:30
151 lines
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
#27128
Author: Leszek Wincenciak
Date: Fri, 02 Jun 2017 11:48
132 lines
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