Tim77
08-10-2015, 22:26
Hallo,
ich habe eine csv-datei, aus der ich dynamisch eine Tabelle erstellen möchte. Soweit mit Datatool kein Problem. In einigen Zellen sind nun aber keine Einzelwerte, sondern Listen. Aus diesen Listen möchte ich Itemizations machen, siehe: 6169.
Die csv-datei kann ich gestalten wie ich möchte. Aktuell habe ich dort Aufzählungen durch "," getrennt. Ich könnte auch problemlos ein anderes Format wählen, z.B. eckige Klammern: "[Kiwis,Bananen]". Ich stelle mir vor, dass beim \DTLforeach aus solchen Werten dann dynamisch eine itemization erstellt wird. Eine Funktion, die beliebig lange itemizations erzeugt, habe ich bereits im Dokument.
Hier ist ein MWE (zunächst für Kisten.csv, dann für das mwe.tex):
Kiste; Inhalt
1; Birnen
2; Kiwis, Bananen
3; Mangos
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage{datatool}
\DTLsetseparator{;}
\DTLloaddb[]{kisten}{Kisten.csv}
% Dynamische Listen
\usepackage{xparse}
\newcommand\insertitem[1]{\item #1}
\NewDocumentCommand\liste{>{\SplitList{,}}m}{
\begin{itemize}
\ProcessList{#1}{ \insertitem }
\end{itemize}
}
\begin{document}
\section{So soll es aussehen}
\begin{tabular}{cp{4cm}}
\hline\bfseries{Kiste} & \bfseries{Inhalt}\tabularnewline\hline
1 & Birnen\tabularnewline\hline
2 & \liste{Kiwis,Bananen}\tabularnewline\hline
3 & Mangos\tabularnewline\hline
\end{tabular}
\section{So sieht es mit Datatool aus}
\begin{tabular}{cp{4cm}}
\hline\bfseries{Kiste} & \bfseries{Inhalt}\tabularnewline\hline
\DTLforeach*{kisten}{\kiste=Kiste,\inhalt=Inhalt}{
\kiste & \inhalt\tabularnewline\hline}
\end{tabular}
\end{document}
Über jede Hilfe oder Tipps, die mich in die richtige Richtung lenken, wäre ich Euch sehr dankbar!
ich habe eine csv-datei, aus der ich dynamisch eine Tabelle erstellen möchte. Soweit mit Datatool kein Problem. In einigen Zellen sind nun aber keine Einzelwerte, sondern Listen. Aus diesen Listen möchte ich Itemizations machen, siehe: 6169.
Die csv-datei kann ich gestalten wie ich möchte. Aktuell habe ich dort Aufzählungen durch "," getrennt. Ich könnte auch problemlos ein anderes Format wählen, z.B. eckige Klammern: "[Kiwis,Bananen]". Ich stelle mir vor, dass beim \DTLforeach aus solchen Werten dann dynamisch eine itemization erstellt wird. Eine Funktion, die beliebig lange itemizations erzeugt, habe ich bereits im Dokument.
Hier ist ein MWE (zunächst für Kisten.csv, dann für das mwe.tex):
Kiste; Inhalt
1; Birnen
2; Kiwis, Bananen
3; Mangos
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage{datatool}
\DTLsetseparator{;}
\DTLloaddb[]{kisten}{Kisten.csv}
% Dynamische Listen
\usepackage{xparse}
\newcommand\insertitem[1]{\item #1}
\NewDocumentCommand\liste{>{\SplitList{,}}m}{
\begin{itemize}
\ProcessList{#1}{ \insertitem }
\end{itemize}
}
\begin{document}
\section{So soll es aussehen}
\begin{tabular}{cp{4cm}}
\hline\bfseries{Kiste} & \bfseries{Inhalt}\tabularnewline\hline
1 & Birnen\tabularnewline\hline
2 & \liste{Kiwis,Bananen}\tabularnewline\hline
3 & Mangos\tabularnewline\hline
\end{tabular}
\section{So sieht es mit Datatool aus}
\begin{tabular}{cp{4cm}}
\hline\bfseries{Kiste} & \bfseries{Inhalt}\tabularnewline\hline
\DTLforeach*{kisten}{\kiste=Kiste,\inhalt=Inhalt}{
\kiste & \inhalt\tabularnewline\hline}
\end{tabular}
\end{document}
Über jede Hilfe oder Tipps, die mich in die richtige Richtung lenken, wäre ich Euch sehr dankbar!