PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Package-option funktioniert nicht



AureusPhoenix
29-09-2010, 18:02
Hi Leute,
ich bin dabei das erste mal ein Packet mit optionalem Argument zu schreiben und irgendwie funzt da was nicht.

Wenn ich das Packet so schreibe, dann gibt der Befehl \aaa jeweils true oder false aus. Das funktioniert also.


\NeedsTeXFormat{LaTeX2e}[1998/12/01]
\ProvidesPackage{JenMath}[2010/09/29]
\makeatletter

\RequirePackage{amsmath}
\RequirePackage{amssymb}
\RequirePackage{amsfonts}
\RequirePackage{ifthen}

\newboolean{@normidx}
\setboolean{@normidx}{true}
\DeclareOption{normidx}{\setboolean{@normidx}{fals e}}
\ProcessOptions\relax


\if@normidx
\newcommand{\aaa}{false}
\else
\newcommand{\aaa}{true}
\fi

\makeatother


Sobald ich aber in die if-Anweisung den Code einfüge den ich da wirklich haben will, dann macht dieser Code nicht mehr das, was er machen soll.



\if@normidx
\begingroup
\catcode`\_=\active
\def_#1{\sb{\operator@font#1}}
\endgroup
\fi

Füge ich den Code übrigens ohne if-Anweisung ein, dann funktioniert er. Das Problem muss also irgendwie in der Kombination aus if-Anweisung und Befehlsdeklaration liegen.

Kann mir da jemand weiter helfen?

Schonmal vielen vielen Dank!

mechanicus
29-09-2010, 18:12
Füge ich den Code übrigens ohne if-Anweisung ein, dann funktioniert er.
das glaube ich nicht. durch begingroup endgroup gibst du der def-Anweisung keine Möglichkeit, global zu wirken. Also ersetze \def durch \gdef

Gruß
Marco

AureusPhoenix
29-09-2010, 18:19
Cool ... das ging ja schnell ... das \gdef war es!
Echt frustrierend ... da sitzt man 1,5 Stunden und dann ist es nur ein Buchstabe.

DANKE

sommerfee
01-10-2010, 08:17
BTW: \makeatletter und \makeatother sind in einem LaTeX-Paket nicht nur überflüssig, sondern haben dort nichts zu suchen.

Liebe Grüße,
Axel