Selbstfortsetzende Tabelle / Kalender

Tabellen und Grafiken erstellen und anordnen


teido
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Do 24. Jan 2019, 18:42
Wohnort: Darmstadt

Selbstfortsetzende Tabelle / Kalender

Beitrag von teido »

Hallo ihr Liebe,
ich hoffe das Thema passt unter Tabellen.

Zum Problem:
Ich bin gerade dabei, eine Art von Taschenkalender zu erstellen, welcher die Zeitspanne eines halben Jahres abdeckt. (1 Semester).

Im laufe der Erstellung bin ich allerdings auf ein Problem gestoßen, für welches ich nicht so recht den Ansatz finde:
Für jeden Monat soll eine Tagesübersicht erstellt werden, also vom 1. bis zum 28/30/31 etc. Der Benutzer gibt als Input ein, ob er sich im Sommersemester oder Wintersemester befindet, daraufhin wird Entschieden mit welchem Monat Angefangen wird (Oktober oder April). Zusätzlich gibt er den ersten Tag des ersten Monats an.
Mit diesen Werten soll mir Latex nun automatisch die Kalenderblätter für jeden Monat erstellen, so dass ich diese in meinem Layout einfügen kann.

Dazu muss ich zunächst eine Tabelle automatisch generieren, was jedoch scheitert: (hier einmal exemplarisch die vorgehensweise)
\begin{tabular}{rlr}
\multido{}{Datum & Tag & Event \\}{n}
\end{tabular}
Die Idee dahinter: Je nach Monat variiert n, der Tag wird wohl später mit einer Fallunterscheidung eingepflegt, je nachdem wie sich ein counter durch 7 teilen lässt. Das Problem jedoch: Der Output läuft so nicht auf eine n-Zeilige Tabelle hinaus, sondern auf diverse Fehlermeldungen.

Für jeden Hinweis wäre ich dankbar, auch für die ein oder andere Idee für das Gesamtkonzept.

Viele Grüße,
Teido

Gast

Beitrag von Gast »

Warum verwendest du nicht eines der Kalender-Pakete?

Ansonsten sei darauf hingewiesen, dass jede Zelle einer Tabelle eine eigene Gruppe ist. Man kann daher nur sehr eingeschränkt innerhalb einer Tabelle per Schleife Zeilen generieren. Ggf. kann man jedoch Zeilen in einem Makro aufsammeln. Da ich ohne Minimalbeispiel aber derzeit nicht einmal weiß, woher bei dir \multido kommt …

teido
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Do 24. Jan 2019, 18:42
Wohnort: Darmstadt

Beitrag von teido »

Das ich mit keines der Kalender-Pakete angeschaut habe liegt wohl daran, dass ich nicht wusste, dass es sowas gibt.. Werde mir das ganze mal anschauen.

Das multido kommt daher, so bin ich es etwa aus Matlab gewohnt, dass ich Zeilen einer Tabelle bzw. dort eines Arrays einfach Stück um Stück hintereinander hängen kann. Ähnliches hab ich mir für Latex erhofft.

Leider kann ich noch kein Minimalbeispiel geben, der bereits geschriebene Teil ist für das Layout zuständig und funktioniert, für den Teil des Kalenders selbst bin ich eher noch dabei mir passende befehle bzw. Pakete herauszufinden.

Die Idee mit dem Zeilen per Macro aufsammeln hört sich brauchbar an, hättest du vielleicht ein paar Stichworte wonach ich dafür suchen muss?

Grüße,
Teido

Gast

Beitrag von Gast »

Mit den Stichworten »tabelle aufsammeln« bin ich über die Schnellsuche hier im Forum praktisch direkt bei viewtopic,p,13552.html#13552 gelandet.

Für deinen Zweck eventuell auch noch von Interesse: tabularx, longtable, xltabular

teido
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Do 24. Jan 2019, 18:42
Wohnort: Darmstadt

Beitrag von teido »

Ich hab mich einmal mit dem Link auseinander gesetzt und versucht, nachzuvollziehen was dort passiert:
\documentclass{article} 
\usepackage[latin1]{inputenc} 
\usepackage[table]{xcolor} 
\usepackage{booktabs} 

\makeatletter
\newcounter{count}
\newcommand{\zeileneintrag}{}

\newenvironment{tabelle}{%
\global\let\zeileneintrag\@empty
\newcommand{\eintrag}[2]{
\addtocounter{count} \g@addto@macro\zeileneintrag{####1 & ####2 \tabularnewline}
}
}{
\begin{tabular}{l|r}
\topline
\zeileneintrag
\bottomline
\end{tabular}
\thecounter
}

\makeatother
\begin{document}

\begin{tabelle}
\eintrag{test1}{test2}
\eintrag{test3}{test4}
\end{tabelle}

\end{document}
Wenn ich das Prinzip richtig verstanden habe, wird eine neue Umgebung definiert, also die Tabelle. In dieser Umgebung kann der Befehl \eintrag aufgerufen werden, um eine Zeile hinzuzufügen. Ich hab versucht, dass ganze bis aufs minimalste herunter zu brechen, bin jedoch gescheitert.

Gast

Beitrag von Gast »

Du verwendest \addtocounter mit einem Argument. Der Befehl hat aber zwei. Was du mit dem Zähler count vorhast, ist mir auch nicht wirklich klar. Und dann würde ich eigentlich noch empfehlen, auch den Anfang der Tabelle und das Ende mit in \zeileneintrag einzufügen, so dass dann am Ende \zeileneintrag zu der kompletten Tabelle expandiert.

teido
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Do 24. Jan 2019, 18:42
Wohnort: Darmstadt

Beitrag von teido »

Vielen dank, jetzt hab ich glaub ich erstmal alles, was ich brauche. Werde mich, sobald es läuft, mit dem fertigen Code noch einmal zurückmelden. Vielleicht ist ja nochmal irgendjemand auf der Suche nach sowas.
Btw. in meinem Code oben ist noch ein Fehler, so heißt es \..rule und nicht \..line in der Tabellen-Umgebung...

Antworten