PDA

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

voss
21-10-2010, 12:40
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

voss
21-10-2010, 20:25
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