ich habe vor einigen Wochen begonnen mit LaTeX zu arbeiten und habe enormen Gefallen daran gefunden. Leider bin ich an sehr vielen Stellen noch wacklig auf den Beinen und wäre für eure Hilfe sehr dankbar. :D
Meine Aufgabe ist es im moment Beschriftungskärtchen in der Firma zu drucken. Die dafür benötigten Daten habe ich mir als CSV-File aus meiner Datenbank ausgelesen und via Datatool in die .tex Datei eingelesen.
Als Grundlage für den nun folgenden Code, diente eine Vorlage für Visitenkarten die ich im Netz gefunden habe. Hier ist jedoch die Krux, dass nun (wie es natürlich für Vistienkarten gewollt ist) vorerst auf jeder Karte das gleiche steht. Ich hätte jedoch ganz gern, dass für jeden Datensatz im CSV-File genau eine Karte angelegt wird.
An der Stelle kommt ihr ins Spiel - vielleicht kann mir ja einer von euch verraten wie ich den Code noch modifizieren kann, damit es funktioniert.
\documentclass[11pt,a4paper]{article} \usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} \usepackage[pdftex]{graphicx} \usepackage{textcomp} \usepackage{qrcode} \usepackage{datatool} \usepackage{algorithm2e} \usepackage{xstring} \usepackage{xifthen} \usepackage{xparse} % Seiten-Layout \setlength{\textwidth}{7in} \setlength{\hoffset}{0in} \setlength{\voffset}{0in} \setlength{\oddsidemargin}{-.8in} \setlength{\evensidemargin}{-.8in} \setlength{\textheight}{10in} \setlength{\topmargin}{-1in} % Mit diesem Kommando legt man fest, dass man % z.B. keine Seitennummerierung haben will. \pagestyle{empty} %Messtellenklassifikation in Makro fassen \newcommand*{\msArt}[1]{% \IfStrEqCase{#1}{% {M}{\renewcommand{\vBez}{MS-Art 1}}% {D}{\renewcommand{\vBez}{MS-Art 2}}% {B}{\renewcommand{\vBez}{MS-Art 3}}% {T}{\renewcommand{\vBez}{MS-Art 4}}% }[{Undefinierte MS-Art}]% } % Jetzt geht das eigentliche Dokument los: \begin{document} % Wir wollen immer als Einheit Millimeter verwenden. \setlength{\unitlength}{1mm} %Lade die entsprechende CSV_Tabelle mit den Messstellendaten \DTLsetseparator{;} \DTLloaddb{Messstellen}{Testdaten.csv} %Setze Standartwert 'Undefiniert' auf Variable um später mit \renewcommand neu besetzen zu können \newcommand{\vBez}{M } % Diese Kommando legt fest, dass ein Bild der angegebenen % Groesse erzeugt werden soll. \begin{picture}(178,253)(-7,-1) % Teile das Blatt in fuenf 51mm hohe, % unteineinander liegenden Zeilen. %\multiput(0,0)(0,51){5}{ % Nun wird jede Zeile in zwei 89mm breite % Spalten geteilt. %\multiput(0,0)(89,0){2}{ % In die nun erzeugten Kaesten sollen Bilder ``gemalt'' werden, % die eine groesse von 51mm mal 89mm haben. Das ist dann die % Groesse der Visitenkarten. \DTLforeach{Messstellen}{\LEIT =LEIT_ID,% \aBez =Alt_Bez,% \nBez =Neu_Bez,% \verBez =verbal_Bezeichnung}{ \begin{picture}(51,89)(0,0) %Setze Linien die das Schild in 4 Bereiche unterteilen \put(50,0){\line(0,1){51}} \put(0,25.5){\line(1,0){89}} %Fülle oberes linkes Feld \put(5,43){\underline{{msArt{\StrLeft{\nBez}{1}} \normalsize}} % Definiere die Variable \sLen und Belege sie mit der Länge der verbalen Bezeichnun in mm \ifthenelse{\isundefined{\sLen}}% %Dann {\newlength{\sLen} % \settowidth{\sLen}{\verBez}}% %Sonst {\settowidth{\sLen}{\verBez}} % Prüfe die Länge der verbalen Bezeichnung und ob ein Zeilenumbruch noetig ist \ifthenelse{\lengthtest{\sLen < 40 mm }}% %Wahr-Bedingung {\renewcommand{\vBez}{\verBez}}% %Falsch-Bedingung {\renewcommand{\vBez}{\StrLeft{\verBez}{7}- \\ \StrMid{\verBez}{7}{30}}} \put(5,34){\textbf{\verBez}} %Fülle unteres linkes Feld \put(5,20){\underline{Bezeichnung} \normalsize} \put(5,10){\LARGE \nBez} \put(5,3){\small \textsf{(Alt : \aBez)} \normalsize} %Fülle oberes rechtes Feld % \put(56,28 ) {\includegraphics[scale=0.60]{Logo.jpg}} % % %Fülle unteres rechtes Feld % \put(58,11){\qrset{height=1.5cm}} % \put(58,11){\qrcode{\LEIT - \nBez}} % AB HIER SOLLTEST DU NICHTS MEHR AENDERN! % Schnittmarken: % oben rechts \put(88.5,50.5){\line(-1,0){3}} \put(88.5,50.5){\line(0,-1){3}} % oben links \put(0.5,50.5){\line(1,0){3}} \put(0.5,50.5){\line(0,-1){3}} % unten links \put(0.5,0.5){\line(1,0){3}} \put(0.5,0.5){\line(0,1){3}} % unten rechts \put(88.5,0.5){\line(-1,0){3}} \put(88.5,0.5){\line(0,1){3}} % ENDE der Schnittmarken % Jetzt muss noch gesagt werden, % dass man mit allem fertig ist: \end{picture} } %}} \end{picture} \end{document} % ENDE
Ich gebe mir jedoch Mühe anonymisierte Testdaten einzustellen.
Ich möchte mich schoneinmal im vorhinein für grobe Programmierfehler entschuldigen und hoffe auf eure Hilfe!
Vielen Dank schonmal im voraus!
Grüße
Fabian