peethebee
30-10-2009, 19:48
Hallo,
Zeichenketten"variablen" bringen mich gerade zur Verzweiflung :(.
Ich will ein bisschen programmieren und mir die Parameter verschiedener Aufrufe meiner newcommand-Befehle speichern, um daraus am Ende eine Tabelle zu generieren.
Konkret hätte ich gerne oben eine Übersicht mit allen Punkten, die ein Übungsblatt enthält. Unten rufe ich etwas in der Art von
\aufgabe[10]{"Überschrift"} auf, wobei die Zahl die Punkte darstellt.
Was ich rausgefunden habe, ist, dass ich "Variablen" so konkatenieren kann:
\newsavebox{\tablePoints}
\sbox{\tableItems}{a}
\sbox{\tableItems}{\usebox{\tableItems} b}
und dann mit
\usebox{\tableItems}
aufrufen kann.
Allerdings erscheinen per \& eingebundene Tabellenzellentrenner dann auch wirklich als kaufmännisches Und. Das wäre meine erste Frage, wie ich da ein erneutes Interpretieren der Sonderzeichen auslösen kann.
Außerdem brauche ich wohl die Möglichkeit, in eine temporäre Datei zu schreiben, damit ich beim nächsten Durchlauf oben die Punktetabelle bauen kann aus den hinterlegten Daten...
Minimalbeispielsversuch:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{ifthen}
% counter stuff
\newcounter{points}
\setcounter{points}{0}
\newsavebox{\tableDef}
\newsavebox{\tableItems}
\newsavebox{\tablePoints}
\sbox{\tableDef}{}
\sbox{\tableItems}{}
\sbox{\tablePoints}{}
\newcommand{\aufgabe}[2][\empty]
{Aufgabe #2
}
\ifthenelse{\equal{#1}{\empty}}
{}% ein Parameter
{\marginpar{#1 P} % Seitenangabe
\sbox{\tableDef}{\usebox{\tableDef} |c \& } % Tabelle bauen
\sbox{\tableItems}{\usebox{\tableItems} #2 \& } % Tabelle bauen
\sbox{\tablePoints}{\usebox{\tablePoints} #1 \& } % Tabelle bauen
\addtocounter{points}{#1} % Gesamtsumme
} % zwei Parameter, Punkte angegeben
}
\begin{document}
\begin{center}
\begin{tabular}{|l|\usebox{\tableDef}||c|}
\hline
\textbf{Aufgabe} & \usebox{\tableItems} \textbf{Summe} \\
\hline
\textbf{Punkte} & \usebox{\tablePoints} \arabic{points} \\
\hline
\end{tabular}
\end{center}
\aufgabe[10]{A1}
\aufgabe[20]{A2}
\aufgabe[30]{A3}
\end{document}
Hat jemand Input für mich? :)
peethebee
Zeichenketten"variablen" bringen mich gerade zur Verzweiflung :(.
Ich will ein bisschen programmieren und mir die Parameter verschiedener Aufrufe meiner newcommand-Befehle speichern, um daraus am Ende eine Tabelle zu generieren.
Konkret hätte ich gerne oben eine Übersicht mit allen Punkten, die ein Übungsblatt enthält. Unten rufe ich etwas in der Art von
\aufgabe[10]{"Überschrift"} auf, wobei die Zahl die Punkte darstellt.
Was ich rausgefunden habe, ist, dass ich "Variablen" so konkatenieren kann:
\newsavebox{\tablePoints}
\sbox{\tableItems}{a}
\sbox{\tableItems}{\usebox{\tableItems} b}
und dann mit
\usebox{\tableItems}
aufrufen kann.
Allerdings erscheinen per \& eingebundene Tabellenzellentrenner dann auch wirklich als kaufmännisches Und. Das wäre meine erste Frage, wie ich da ein erneutes Interpretieren der Sonderzeichen auslösen kann.
Außerdem brauche ich wohl die Möglichkeit, in eine temporäre Datei zu schreiben, damit ich beim nächsten Durchlauf oben die Punktetabelle bauen kann aus den hinterlegten Daten...
Minimalbeispielsversuch:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{ifthen}
% counter stuff
\newcounter{points}
\setcounter{points}{0}
\newsavebox{\tableDef}
\newsavebox{\tableItems}
\newsavebox{\tablePoints}
\sbox{\tableDef}{}
\sbox{\tableItems}{}
\sbox{\tablePoints}{}
\newcommand{\aufgabe}[2][\empty]
{Aufgabe #2
}
\ifthenelse{\equal{#1}{\empty}}
{}% ein Parameter
{\marginpar{#1 P} % Seitenangabe
\sbox{\tableDef}{\usebox{\tableDef} |c \& } % Tabelle bauen
\sbox{\tableItems}{\usebox{\tableItems} #2 \& } % Tabelle bauen
\sbox{\tablePoints}{\usebox{\tablePoints} #1 \& } % Tabelle bauen
\addtocounter{points}{#1} % Gesamtsumme
} % zwei Parameter, Punkte angegeben
}
\begin{document}
\begin{center}
\begin{tabular}{|l|\usebox{\tableDef}||c|}
\hline
\textbf{Aufgabe} & \usebox{\tableItems} \textbf{Summe} \\
\hline
\textbf{Punkte} & \usebox{\tablePoints} \arabic{points} \\
\hline
\end{tabular}
\end{center}
\aufgabe[10]{A1}
\aufgabe[20]{A2}
\aufgabe[30]{A3}
\end{document}
Hat jemand Input für mich? :)
peethebee