Variablenzuweisung mit csvreader

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Furay
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Mo 10. Aug 2015, 10:16

Variablenzuweisung mit csvreader

Beitrag von Furay »

Hallo Zusammen,

vielleicht könnt Ihr mir weiter helfen, ich möchte mithilfe des package csvsimple eine Überschriftenstruktur automatisch gernerieren. Hierzu werden die ersten beiden Spalten in der CSV tabelle mit dem gespeicherten Werten (\aktModul und \aktTech) verglichen.

Hat sich der Wert geändert, soll eine neuer Überschrift bzw. Unterüberschrift gerneriert werden.

Leider scheint die Neuzuweisung mit \renewcommand wie einen Pointerzuweisung zu funktionieren, denn nach der ersten Zeile sind beide Variablen immer identisch. Denn es wird nur eine Überschrift und eine Unterüberschrift generiert.
% allgem. Dokumentenformat
\documentclass[a4paper,12pt,oneside]{scrbook}

%für für CSV einlesen
\usepackage{csvsimple}

%für If und schleifen
\usepackage{ifthen}

%Definitionen und zuweisungen
\newcommand{\aktModul}{noName}
\newcommand{\aktTech}{}
\newboolean{boolvar} %Deklaration
\setboolean{boolvar}{false} %Zuweisung

\begin{document}
%
\chapter{Auswertung}\label{result}
%
\csvreader[head to column names, late after line=\\]{erros.csv}{}%
{
	Modul:~\aktModul~(\modul) ~Tech:~\aktTech~(\techpak)\\
	% Handelt es sich um einen neuen Modulnamen?
	\ifthenelse{\equal{\aktModul}{\modul}}
	{
		S1~NEIN~--
		%
		% Ist tech anderes?
		\ifthenelse{\equal{\aktTech}{\techpak}}
		{
			S2~NEIN~--
		}
		{
			S2~JA~--
			\textbf{ZU}\\
			\renewcommand{\aktTech}{\techpak}
			\subsection{\techpak}
			%
			\textbf{AUF}\\
		}
	}
	% Modul hat sich gewechselt
	{
		S1~JA~--
		\ifthenelse{\boolean{boolvar}}
		{
			\textbf{ZU}\\
		}
		%
		\renewcommand{\aktModul}{\modul}
		\renewcommand{\aktTech}{\techpak}
		\setboolean{boolvar}{true}
		\section{\modul}
		\subsection{\techpak}
		%
		\textbf{AUF}\\
}
% Zeile hinzufügen
% Datenzeile
}
\textbf{ZU}\\
%
\end{document}
Die error.csv sieht folgendermaßen aus.
modul,techpak
FOLGE1,BASE
FOLGE1,BASE
FOLGE1,BASE
FOLGE1,WPS
FOLGE1,WPS
FOLGE123,BASE
FOLGE123,BASE
FOLGE124,BASE
MAKRO50,BASE
MAKRO84,NONE
MAKRO85,NONE
UP101,WPS
UP206,NONE
Ich würde folgende Überschriftenreihenfolge warten:

FOLGE1
+ BASE
+ WPS
FOLGE123
+ BASE
FOLGE124
+ BASE
MAKRO50
+ BASE
MAKRO84
+ BASE
MAKRO85
+ BASE
UP101
+ WPS
UP206
+ NONE

Grüße

Furay

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Ich verstehe euch ja manchmal nicht. Wieso verkomplizierst du dein Beispiel mit zwei Ebenen und einer zusätzlichen Bool-Variable?
\documentclass[a4paper,12pt,oneside]{scrbook}

\usepackage{csvsimple}
\usepackage{ifthen}
\newcommand{\aktModul}{noName}
\begin{document}
%
\chapter{Auswertung}\label{result}
%
\csvreader[head to column names]{error.csv}{}%
{
   Modul:~\aktModul~(\modul)
   % Handelt es sich um einen neuen Modulnamen?
   \ifthenelse{\equal{\aktModul}{\modul}}
   {
      S1~NEIN~-- 
   }
   % Modul hat sich gewechselt
   {
      S1~JA~--
   }
  \expandafter\let\expandafter\aktModul\modul
  \par
}
\end{document}

Antworten