PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Versionierung von Packeten und Klassen



AureusPhoenix
24-09-2015, 15:23
Hi Leute,
ich stehe gerade vor einem kleinen Problemchen. Und zwar habe ich vor einigen Jahren eine Klasse geschrieben die JenThesis heißt. Nun brauche ich die Klasse wieder, möchte sie aber noch etwas verbessern. Am liebsten würde ich sie aber nicht kopieren und umbenennen sondern mit Versionen arbeiten. Ziel soll es sein, das der Nutzer beim Laden der alten Version, dies mit einer Klassenoption tun kann, standardmäßig aber die neue geladen wird. Kann mir jemand sagen, wie das geht?

Vielen Dank im Voraus!
Grüße

rais
28-09-2015, 08:25
Und zwar habe ich vor einigen Jahren eine Klasse geschrieben die JenThesis heißt. Nun brauche ich die Klasse wieder, möchte sie aber noch etwas verbessern. Am liebsten würde ich sie aber nicht kopieren und umbenennen sondern mit Versionen arbeiten. Ziel soll es sein, das der Nutzer beim Laden der alten Version, dies mit einer Klassenoption tun kann, standardmäßig aber die neue geladen wird.

vllt lässt sich Deine Klasse ja so umschreiben, daß die alte Funktionalität erhalten bleibt, dann würde sich für dessen Verwendung in alten Dokumenten auch nix ändern.
Alternativ kannst Du Dir natürlich eine Option`compat' o.ä. basteln, mit der Du dann in Deiner Klasse entscheidest, was alles kompatibel zum alten Aufbau gehalten werden soll.
Und je nachdem, wie aufwändig Du das treiben willst, lohnt sich vllt ein Blick in eine der Koma-Script-Klassen, bei denen bei Verwendung alter Optionen auf eine ältere Koma-Script-Version umgeschaltet wird.

VG

klops
28-09-2015, 11:38
Im einfachsten Fall geht das beispielsweise, indem Du irgendwo im Optionen-Teil der Klasse etwas wie:

\newif\if@oldJenThesis
\DeclareOption{oldJenThesis}{\oldJenThesistrue}
verwendest und dann überall dort, wo sich die neue Version von der alten unterscheiden soll:
\if@oldJenThesis
% Hier der Code aus der alten Version der Klasse.
\else
% Hier der Code für die neue Version der Klasse.
\fi
Solche Verzweigungen kannst Du mehrfach verwenden. Es muss nur sichergestellt sein, dass alle \if…, die in den beiden Varianten verwendet werden, vor der Fallunterscheidung definiert sind und innerhalb der Varianten auch wieder sauber beendet werden. Aber einem Klassenautor muss ich das eigentlich nicht erzählen. Der Umgang mit \if… \else … \fi gehört da eigentlich zum normalen Handwerkszeug, beispielsweise auch für \if@twoside … \else … \fi.