Lernkarten mit externen Daten befüllen Thema ist als GELÖST markiert

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


mattazie
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Fr 19. Mai 2023, 14:50

Lernkarten mit externen Daten befüllen

Beitrag von mattazie »

Hallo Zusammen

Ich muss für ein Projekt etwas zwischen Lernkarten und Visitenkarten erstellen. Auf einem A4-Blatt sollen 4*8 Kärtchen entstehen, jedes Kärtchen mit der gleichen Vorderseite und Rückseite, die Informationen kommen jeweils aus einer externen CVS-Datei. Die Vorderseite soll eine Hintergrundfarbe aufweisen, welche ebenfalls der CVS-Datei entnommen wird.
Ich erstellte zuerst mit dem Packet ticket als Grunddokument der Bogen mit den einzelnen Kärtchen. Anschliessend versuchte ich mit dem Packet datatool die Daten aus der externen Datei Veruchs-Tabelle.cvs zu entnehmen.
Beim ersten Blatt funktionierte das wunderbar. Beim zweiten und dritten Blatt kommt nur die Rückseite. Was mache ich falsch? Wie erreiche ich, dass auch beim zweiten und dritten Blatt die Vorderseite erstellt wird. Gäbe es eine andere Möglichkeit.
Ich hoffe, die Fragestellung ist einigermassen klar.

Ich bin dankbar für jede Hilfe

mattazie

Definition der Kärtchen:
Visitenkarte-4x8.tdf
%%
%% ticket for "Visitenkarten 4x8"
%% pre-cutted label for wide files
%%
\unitlength=1mm
%% tested for an HP5SiMX, adjust it for your printer
\hoffset=-25mm
\voffset=-30mm
\ticketNumbers{4}{8}
\ticketSize{52.5}{37.125} % in unitlength
\ticketDistance{0}{0} % in unitlength
Versuchs-Tabelle.csv
Farbe,Vorderseite,Rueckseite
rot,Vorderseite-rot,Rueckseite-rot
gruen,Vorderseite-gruen,Rueckseite-gruen
blau,Vorderseite-blau,Rueckseite-blau 
Visitenkarten-Frage.tex
%%%%
%
% ticket.sty example file for visiting cards
%
%%%%
% use the corresponding paper size for your ticket definition
\documentclass[a4paper,12pt]{letter}

% load ticket.sty with the appropriate ticket definition
\usepackage[Visitenkarte-4x8,boxed]{ticket}

% load misc stuff
\usepackage{graphicx}
\usepackage{color}
\usepackage{datatool}


% Einbinden der externen Datenbank
\DTLloaddb[keys={Farbe,Vorderseite,Rueckseite}]{Versuchs-Tabelle}{Versuchs-Tabelle.csv} 


% define something

%\definecolor{schwarz}{HTML}{000000}
\definecolor{rot}{RGB}{255,0,0}
\definecolor{gruen}{rgb}{0.0,1.0,0.0}
\definecolor{blau}{rgb}{0.0,0.0,1.0}

% make your default ticket. \ticketdefault is somewhat like a background
% here it is empty, because we use different tickets for the front an
% the back of our card
\renewcommand{\ticketdefault}{%
}

% now what do you like to put in your ticket
\newcommand{\vcardfront}[1]{\ticket{%
  


    \put(10,17)
%\begin{centering} 
{#1}
%\end{centering}
      \put(30, 2){\tiny Text}
 
 
 }}

\newcommand{\vcardback}[1]{\ticket{%
    \put(10,17){#1}

}}

% a counter, which makes life easier...
\newcounter{numcards}

\begin{document}
\sffamily

% Steuerung über externe Datenbanjk
\DTLenvforeach{Versuchs-Tabelle}{\Farbe=Farbe,\Vorderseite=Vorderseite,\Rueckseite=Rueckseite}



\pagecolor{\Farbe}

% ten cards for the front
\whiledo{\thenumcards<32}{%
  \stepcounter{numcards}%
 % \centering
  \vcardfront{\Vorderseite}}

\setcounter{numcards}{0}

\nopagecolor

% and ten for the backside
\whiledo{\thenumcards<32}{%
  \stepcounter{numcards}%
  \vcardback{\Rueckseite}
  }
 
\end{document}



uliken
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Sa 19. Nov 2022, 14:41

Re: Lernkarten mit externen Daten befüllen

Beitrag von uliken »

Du musst auch nach der Schleife für die Rückseite den Zähler numcards rücksetzen. (Vorletzte Zeile im Code.)
\begin{filecontents}{Visitenkarte-4x8.tdf}
%% ticket for "Visitenkarten 4x8"
%% pre-cutted label for wide files
%%
\unitlength=1mm
%% tested for an HP5SiMX, adjust it for your printer
\hoffset=-25mm
\voffset=-30mm
\ticketNumbers{4}{8}
\ticketSize{52.5}{37.125} % in unitlength
\ticketDistance{0}{0} % in unitlength
\end{filecontents}
\begin{filecontents}{Versuchs-Tabelle.csv}
Farbe,Vorderseite,Rueckseite
rot,Vorderseite-rot,Rueckseite-rot
gruen,Vorderseite-gruen,Rueckseite-gruen
blau,Vorderseite-blau,Rueckseite-blau
\end{filecontents}

\documentclass[a4paper,12pt]{letter}

% load ticket.sty with the appropriate ticket definition
\usepackage[Visitenkarte-4x8,boxed]{ticket}

% load misc stuff
\usepackage{graphicx}
\usepackage{color}
\usepackage{datatool}


% Einbinden der externen Datenbank
\DTLloaddb[keys={Farbe,Vorderseite,Rueckseite}]{Versuchs-Tabelle}{Versuchs-Tabelle.csv} 


% define something

%\definecolor{schwarz}{HTML}{000000}
\definecolor{rot}{RGB}{255,0,0}
\definecolor{gruen}{rgb}{0.0,1.0,0.0}
\definecolor{blau}{rgb}{0.0,0.0,1.0}

% make your default ticket. \ticketdefault is somewhat like a background
% here it is empty, because we use different tickets for the front an
% the back of our card
\renewcommand{\ticketdefault}{%
}

% now what do you like to put in your ticket
\newcommand{\vcardfront}[1]{\ticket{%
  


    \put(10,17)
%\begin{centering} 
{#1}
%\end{centering}
      \put(30, 2){\tiny Text}
 
 
 }}

\newcommand{\vcardback}[1]{\ticket{%
    \put(10,17){#1}

}}

% a counter, which makes life easier...
\newcounter{numcards}

\begin{document}
\sffamily

% Steuerung über externe Datenbanjk
\DTLenvforeach{Versuchs-Tabelle}{\Farbe=Farbe,\Vorderseite=Vorderseite,\Rueckseite=Rueckseite}



\pagecolor{\Farbe}

% ten cards for the front
\whiledo{\thenumcards<32}{%
  \stepcounter{numcards}%
 % \centering
  \vcardfront{\Vorderseite}}

\setcounter{numcards}{0}

\nopagecolor

% and ten for the backside
\whiledo{\thenumcards<32}{%
  \stepcounter{numcards}%
  \vcardback{\Rueckseite}
  }
 \setcounter{numcards}{0} % <-- hier Zähler rücksetzen
\end{document}

mattazie
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Fr 19. Mai 2023, 14:50

Re: Lernkarten mit externen Daten befüllen

Beitrag von mattazie »

Wow, vielen Dank für die schnelle Hilfe. Schön, dass nur eine Zeile gefehlt hat. Jetzt funktioniert es genauso, wie ich es mir vorgestellt habe.

Ich habe nun noch eine Folgefrage:

Ich möchte den Text Vorderseite-... und Rückseite jeweils horizontal und vertikal zentriert haben. Der Text soll wie eine Fusszeile unten links stehen. Mit den \put-Anweisungen bringe ich es nicht hin. Horizontal bringe ich es mit /put zwar hin, kann aber nicht Horziontal zentrieren, da jede anweisung mit dem horizontalen \put und dem Text in Konflikt kommt. Hat da wer eine Idee?

Vielen Dank zum Voraus

mattazie
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Fr 19. Mai 2023, 14:50

Re: Lernkarten mit externen Daten befüllen

Beitrag von mattazie »

Ich habe viel nachgelesen, rumgetüftelt und schliesslich selber die Lösung gefunden:

Anstelle von \put(10,17){#1}

verwende ich nun \put(0,0){\makebox(52.5,37.125){#1}}, wobei die Dimensionen von \makebox der Definition \ticketSize{52.5}{37.125} aus der Datei Visitenkarte-4x8.tdf entnommen ist.

Dies nur zur Information, falls jemand ein ähnliches Problem hat.

Antworten