globale versionierung

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


gbo1739
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mo 29. Okt 2018, 13:23

globale versionierung

Beitrag von gbo1739 »

Hallo Community,

eröffne meinen ersten Post mit einer Frage zu multiplen globalen Kommandos.

Bin gerade dabei ein *.sty - file zu schreiben und habe es eigentlich bis auf einen Punkt schon fertig. Dieses Package dient mir später als globale Dokumentationsvorlage im Betrieb.

Darin hätte ich gerne, am Ende des Dokuments, eine Hystory der Dokumentationsversionierung als Tabelle. Vorgestellt habe ich mir das folgendermaßen:

im package:

Code: Alles auswählen

%--- commands ------------------------------------------------------------
\newcommand*{\docversion}{\gdef\@docversion}	% Version des Dokuments
%
\newcommand*{\docversiondate}{\gdef\@docversiondate}	% Versionierungsdatum
%
\newcommand*{\docversionauthor}{\gdef\@docversionauthor}	% Versionierungsauthor
%
\newcommand*{\docversionnote}{\gdef\@docversionnote}	% Versionierungnotiz
%
%--- versionierung ---------------------------------------------------------
\newcommand{\version}{
	\clearpage
	\begingroup
	\renewcommand{\arraystretch}{1.2}
	\begin{table}[htbp]
		\centering
		\small
		\caption[]{Dokumentversionierung}
		\begin{tabularx}{0.95\textwidth}{lllX}
			\toprule
			\textbf{Datum}		&	\textbf{version}	&	\textbf{Autor}	&	\textbf{Beschreibung}		\\
			\midrule
			\@docversiondate	&	\@docversion	&	\@docversionauthor	&	\@docversionnote					\\
			\@docversiondate	&	\@docversion	&	\@docversionauthor	&	\@docversionnote	\\
			\bottomrule
			\label{tab:versionierung}
		\end{tabularx}
	\end{table}
	\endgroup
}
%
Im Dokument:

Code: Alles auswählen

\docversion{}
\docversiondate{}
\docversionauthor{}
\docversionnote{} 
%
version
%
wie jeder sehen kann ist diese Vorgangsweise sinnfrei.
denn ich erzeuge hiermit nur einen Versions-Eintrag.
Für mehrere müsste ich dann wiederum neue, fortlaufend nummerierte, Kommandos erstellen...

Was gibt es hier für Möglichkeiten um dies zu bewerkstelligen?

Beste Grüße

Gast

Beitrag von Gast »

Ich würde einfach nur einen Befehl mit vier Argumenten definieren, der dann direkt ein internes Makro erweitert, das die Tabellenzeilen enthält. Noch schöner geht es mit l3. Dort gibt es Listen und Arrays.

Übrigens habe ich gerade auf CTAN-ANN gesehen, dass es ein neues Paket changelog gibt. Was das macht, habe ich mir aber noch nicht angeschaut.

gbo1739
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mo 29. Okt 2018, 13:23

Beitrag von gbo1739 »

Beim Ansatz mit vier Argumenten und der Weitergabe an das interne Makro, scheitert es bei mir, trotz unzähligen Versuchen, noch an der Umsetzung...

Kann es sein das die tabularx - Umgebung Probleme macht?
Gibt es hier ein Manual indem, das Handling mit internen Markos ausführlich erklärt wird?

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

Beitrag von u_fischer »

Wenn ich richtig verstanden habe, worum es dir geht, dann würde ich eine Key-Val-Syntax für den Input empfehlen. Sobald du etwas mit 4 Argumenten fertig hast, wird sonst irgendwer ankommen und sich eine fünfte Info wünschen.

Also sowas:

Code: Alles auswählen

\newrevision{date = XXXX,
                             version =XXXX,
                             author = {xxxxx, xxxx, yyy},
                             note = {....}
                             }
Speichere die Daten am besten in expl3 in Propertylisten. Anschließend kannst du dich mit der Frage beschäftigen, wie man den \printrevision-Befehl am besten definiert. Da würde ich nicht direkt mit Tabellen anfangen. Die haben Sonderprobleme. Übe erst mit simpler Zeilenausgabe, oder nimm \parboxen.

Antworten