PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme Formatierung - eingelesene Daten aus Textdatei



technman
07-11-2007, 12:54
Hallo Ich habe folgendes Problem:

Ich möchte eine Tabelle anlegen, in der mehrere Bilder sind und darunter jeweils die Beschreibung der Person etc.
auf "manuellem Wege" hab ich dies in untemstehenden Code gelöst. Das Ergebnis findet sich in der angehängten Datei unter Test1.pdf

Nun möchte ich die Daten aus einer Textdatei einlesen und mir somit bei über 50 Personen einiges an schreibaufwand ersparen. Außerdem ists so leichter Personen in alpahbetischer Reihenfolge einzufügen. Auch hier habe ich bereits ein Minimalbespiel, dies findet sich unten unter "vorläufige Lösung". Hier nun mein Problem: Ich erreiche mit diesem automatisierten Beispiel nicht die Formatierung wie ich Sie in meinem manuellen Beispiel verwirktlicht habe. Wenn ich ein longtable einfüge dann krieg ich die Daten da irgendwie nicht rein. Hat da jemand ne Idee. Wäre euch echt dankbar!!
Alle benötigten Dateien sind gezippt angehängt.


\documentclass[12pt]{scrbook}
\usepackage{longtable}
\usepackage{graphicx}

\begin{document}
\begin{tiny}
\begin{longtable}{ccccc}

\includegraphics[height=3cm]{martin} &\includegraphics[height=3cm]{robert} &\includegraphics[height=3cm]{philipp}&\includegraphics[height=3cm]{bernie}&\includegraphics[height=3cm]{kathrin1}\\
\footnotesize{Martin Muster} & \footnotesize{Robert Muster} & \footnotesize{Philipp Muster} & \footnotesize{Bernie Muster} & \footnotesize{Kathrin Muster} \\
S. \pageref{person:mmuster}& S. \pageref{person:rmuster} & S. \pageref{person:pmuster} & S. \pageref{person:bmuster} & S. \pageref{person:kmuster}\\


\includegraphics[height=3cm]{martin} &\includegraphics[height=3cm]{robert} &\includegraphics[height=3cm]{philipp}&\includegraphics[height=3cm]{bernie}&\includegraphics[height=3cm]{kathrin1}\\
\footnotesize{Martin Muster} & \footnotesize{Robert Muster} & \footnotesize{Philipp Muster} & \footnotesize{Bernie Muster} & \footnotesize{Kathrin Muster} \\
S. \pageref{person:mmuster}& S. \pageref{person:rmuster} & S. \pageref{person:pmuster} & S. \pageref{person:bmuster} & S. \pageref{person:kmuster}\\


\end{longtable}
\end{tiny}


\label{person:mmuster}\label{person:rmuster}\label {person:pmuster}\label{person:bmuster}\label{perso n:kmuster}

\end{document}

Beispiel: "vorläufige Lösung"

\documentclass[12pt]{scrbook}
\usepackage{longtable}
\usepackage{graphicx}


\def\chopline#1;#2;#3;#4 \\{
\def\vorname{#1}
\def\name{#2}
\def\reference{#3}
\def\bild{#4}
}

\newif\ifmore \moretrue

\begin{document}


\newread\quelle
\openin\quelle=Daten.dat

\loop
\read\quelle to \zeile
\ifeof\quelle
\global\morefalse
\else
\expandafter\chopline\zeile\\

\includegraphics[height=3cm]{\bild}\\
\footnotesize{\vorname~\name}\\
S.~\pageref{\reference}\\

\fi
\ifmore\repeat

\closein\quelle


\label{person:mmuster}\label{person:rmuster}\label {person:pmuster}\label{person:bmuster}\label{perso n:kmuster}

\end{document}

Aufbau der Daten.dat:
Martin;Muster;person:mmuster;martin
Robert;Muster;person:rmuster;robert
Philipp;Muster;person:pmuster;philipp
Bernie;Muster;person:bmuster;bernie
Kathrin;Muster;person:kmuster;kathrin1

rais
07-11-2007, 17:44
Moin moin,
und wenn Du es so versuchst:


\documentclass[12pt]{scrbook}
\usepackage{ifthen,longtable,tabularx}
\usepackage{graphicx}
\newcolumntype{C}{>{\centering\arraybackslash}p{0.2\linewidth}}
\newcounter{mycol}
\newcounter{mynxt}
\def\chopline#1;#2;#3;#4 \\{
\def\vorname{#1}
\def\name{#2}
\def\reference{#3}
\def\bild{#4}
}
\newread\quelle
\newcommand\tabularnewcol{&}
\begin{document}

\begin{longtable}{CCCC}
\openin\quelle=Daten.dat
\setcounter{mycol}{0}
\setcounter{mynxt}{1}
\whiledo{\themynxt>0}{%
\read\quelle to \zeile
\ifeof\quelle
\setcounter{mynxt}{0}
\else
\expandafter\chopline\zeile\\
\includegraphics[height=3cm]{\bild}\par
{\footnotesize\vorname~\name}\par
S.~\pageref{\reference}
\stepcounter{mycol}
\ifnum\themycol>3 \setcounter{mycol}{0}\tabularnewline\else\tabularn ewcol\fi
\fi
}
\ifnum\themycol<4\tabularnewline\fi
\closein\quelle
\end{longtable}

\label{person:mmuster}\label{person:rmuster}\label {person:pmuster}\label{person:bmuster}\label{perso n:kmuster}

\end{document}
?
MfG,

technman
08-11-2007, 12:58
Thx.
Bis ich auf die Lösung gekommen wäre hätte ich wohl noch Tage gebraucht! Funktioniert super.
Eine kleine Frage hab ich noch: Bei der manuellen Lösung bekomme ich dadurch, dass der ganze "longtable" tiny gesetzt ist, 6 Bilder untereinander (also 30 pro Seite). Mach ich das aber jetzt bei der automatisierten Version ist alles durcheinander. Woran kann das liegen?

Gruß

rais
08-11-2007, 16:57
Moin moin,

Bei der manuellen Lösung bekomme ich dadurch, dass der ganze "longtable" tiny gesetzt ist, 6 Bilder untereinander (also 30 pro Seite). Mach ich das aber jetzt bei der automatisierten Version ist alles durcheinander. Woran kann das liegen?

daran, dass ich nur vier statt fünf Spalten deklariert hab'?
Oder \tiny ignoriert hab'?
BTW: der vertikale Abstand scheint mir hier insgesamt etwas größer zu sein, als in Deinem manuellen Test; evtl. liegt es an vergessenen %-Zeichen so zum Zeilenende in der Definition?

MfG,