Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigenes Package mit Optionen
bienchen
21-10-2010, 11:56
Hallo LaTeX-Fans!
Kennt jemand eine vernuenftige Dokumentation, welche erklaert, wie man in eigenen LaTeX-Paketen Optionen erstellt? Quasi
\usepackage[myoption]{mypackage}
Ich brauche wirklich nur eine Doku (es sei denn, die Erklaerung ist ganz kurz), ansonsten sehe ich mir bei anderen Paketen an, wie das gemacht wird.
mfg,
bienchen
Kennt jemand eine vernuenftige Dokumentation, welche erklaert, wie man in eigenen LaTeX-Paketen Optionen erstellt? Quasi
\usepackage[myoption]{mypackage}
Ich brauche wirklich nur eine Doku (es sei denn, die Erklaerung ist ganz kurz), ansonsten sehe ich mir bei anderen Paketen an, wie das gemacht wird.
es gibt keine einfache Doku, weil alle key/value-Pakete sehr umfangreiche
Möglichkeiten haben und daher entsprechend umfangreich sind. Nimm einfach
ein einfacheres Paket unf kupfere es ab ...
Herbert
bienchen
21-10-2010, 18:08
Habe mich nun an book.cls orientiert... ein einfacher Switch ist damit schnell gemacht:
% Nach der Paket-Praeambel
% Neue Conditional anlegen, welche bei der Optionsdeklaration verwendet wird
\newif\ifMY@draft
% Option anlegen
\DeclareOption{draft}{\MY@drafttrue}
% Gegebene Optionen ausfuehren
\ProcessOptions
% Verwenden
\ifMY@draft
LaTeX-Code
\fi
Funktioniert bei mir. (Ich dachte ich poste das hier mal, da mir immer so toll geholfen wird, ich anderne aber (noch, hehe) nicht helfen kann)
mfg,
bienchen
Habe mich nun an book.cls orientiert... ein einfacher Switch ist damit schnell gemacht:
% Nach der Paket-Praeambel
% Neue Conditional anlegen, welche bei der Optionsdeklaration verwendet wird
\newif\ifMY@draft
\My@draftfalse% damit der STandardwert sicher ist.
% Option anlegen
\DeclareOption{draft}{\MY@drafttrue}
% Gegebene Optionen ausfuehren
\ProcessOptions
man hat sich eigentlich angewöhnt den Standardwert auch dann zu setzen,
wenn er false ist.
Herbert
Schweinebacke
22-10-2010, 08:28
man hat sich eigentlich angewöhnt den Standardwert auch dann zu setzen, wenn er false ist.
Selbst im LaTeX-Kern ist das nur halbherzig gemacht und in den Standardklassen gar nicht, was vielleicht auch daran liegt, dass \newif selbst bereits \let#1\iffalse enthält, um einen definierten Zustand herzustellen. Eine Alternative wäre übrigens, auch eine Gegenoption zu implementieren und diese als Default auszuführen:
% Nach der Paket-Praeambel
% Neue Conditional anlegen, welche bei der Optionsdeklaration verwendet wird
\newif\ifMY@draft % Option anlegen
\DeclareOption{draft}{\MY@drafttrue}
\DeclareOption{final}{\MY@draftfalse}
% Default-Optionen:
\ExecuteOptions{final}
% Gegebene Optionen ausfuehren
\ProcessOptions\relaxSo machen das auch die Standardklassen.
Im clsguide wird übrigens empfohlen, nach \ProcessOptions immer ein \relax anzufügen (damit nicht weiter nach einem * gesucht wird).
bienchen
22-10-2010, 11:17
Fein, fein,
habe die Aenderungen uebernommen.
So find ich das toll: Loesung fuers Problem selber gesucht (Lerneffekt!) und dann bekomm' ich das hier noch "glatt" gezogen und der naechste, der sucht hat auch noch was davon.
mfg,
bienchen
Feuersaenger
22-10-2010, 21:42
Hallo,
wenn Du Details zu key-value wissen willst, interessiert Dich vielleicht folgender Uebersichtsartikel, der mehrere solcher Pakete vergleicht:
www.tug.org/TUGboat/tb30-1/tb94wright-keyval.pdf
Joseph Wright hat inspiriert durch seine Recherche im Anschluss dazu ein Paket entwickelt, das ebenfalls interessant dazu ist (pgfopts unter www.tug.org/texmf-dist/doc/latex/pgfopts/pgfopts.pdf)
Mit liebem Gruss
Christian
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.