\usepackage[opt]{mypkg} Opt. an \RequirePackage{paket} geben
Verfasst: Do 12. Aug 2010, 18:30
Hallo 
ich versuche gerade, mir ein eigenes Paket zu bauen und habe eine Frage zu den Optionen:
[Minimalbeispiel am Ende des Codes...]
Ich würde gerne alle Optionen der in mein Paket eingebundenen Pakete mit
aufrufen können.
Das ist mir zum teil auch schon gelungen durch
wobei paket1 mit
aufgerufen wird und alle Optionen annimmt, die ich mypgk in test.tex und paket1 in mypgk.sty übergebe. Dazu muss ich auch die Optionen, die ich mir nicht selbst ausgedachte habe, sondern der Entwickler von paket1 nicht erneut mit
erzeugen, sondern kann diese einfach ändern. Soweit so schön, aber jetzt stoße ich auf zwei Probleme:
Problem 1: Wenn ich jetzt – mal angenommen ich (als Fremdanwender) wüsste nicht, dass mypkg paket1 lädt – in test.tex mit
das Paket so zusagen nochmal einbinde, führt das zu der Fehlermeldung:
nicht. Statt dessen meldet paket2, dass es eine Option nicht kennt – klar, wenn diese zu paket1 gehört. In meinem Fall beschwert sich komischer Weise paket1 aber nicht über Optionen, die zu paket2 gehören. Konkret geht es um die Pakete lcg (=2) und siunitx (=1).
So und hier das Minimalbeispiel:
Vielen Dank und Grüße
Tobi

ich versuche gerade, mir ein eigenes Paket zu bauen und habe eine Frage zu den Optionen:
[Minimalbeispiel am Ende des Codes...]
Ich würde gerne alle Optionen der in mein Paket eingebundenen Pakete mit
\usepackage[hier alle Optionen]{mypkg} % Befehl in der Präambel von test.tex
Das ist mir zum teil auch schon gelungen durch
\DeclareOptions*{\PassOptionsToPackage{\CurrentOption}{paket1}} % Befehl in mypkg.sty
\RequirePackage[optionen]{paket1} % Befehl in mypkg.sty
\DeclareOption{...}{...}
Problem 1: Wenn ich jetzt – mal angenommen ich (als Fremdanwender) wüsste nicht, dass mypkg paket1 lädt – in test.tex mit
\usepackage[opt]{paket1}
! LaTeX Error: Missing \begin{document}. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help. ... l.13 \usepackage [% ? ! You can't use `macro parameter character #' in horizontal mode. \in@ #1#2->\def \in@@ ##1#1## 2##3\in@@ {\ifx \in@ ##2\in@false \else \in@tru... l.13 \usepackage [% ? ! You can't use `macro parameter character #' in horizontal mode. \in@ #1#2->\def \in@@ ##1#1##2## 3\in@@ {\ifx \in@ ##2\in@false \else \in@tru... l.13 \usepackage [% ? ! Extra \else. <argument> ...tput-decimal-marker=|,}\ifin@ \else \let \reserved@a \@secondo... l.13 \usepackage [% ? ! Extra \fi. \@for ... \@forloop #2,\@nil ,\@nil \@@ #1{#3}\fi l.13 \usepackage [% ? ! LaTeX Error: Option clash for package siunitx. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help. ... l.13 \usepackage [% ? (./test.aux) [1] (./test.aux) ) Output written on test.dvi (1 page, 484 bytes). Transcript written on test.log.
So und hier das Minimalbeispiel:
\begin{filecontents*}{mypkg.sty} %%%%% Kenndaten \ProvidesPackage{mypkg}[2010/08/12] \NeedsTeXFormat{LaTeX2e}[2009/01/01] %%%%% Initialisierung %%%%% Deklarieren von Optionen \DeclareOption{noautosolution}{\setboolean{@utosol}{false}} % neue Option, mit der das Anhängen der Lösung verhindert wird \DeclareOption*{% \PassOptionsToPackage{\CurrentOption}{siunitx} % Reicht undefinierte Optionen an siunitx weiter, hat keine Probleme mit lcg-Optionen und unbekannten Optionen [Problem 2] % \PassOptionsToPackage{\CurrentOption}{lcg} % Sollte unbekannte Optionen an lcg weitergeben, macht aber Probleme mit siunitx-Optionen [Problem 2] } %%%%% Ausführen von Optionen \ProcessOptions %%%%% Laden von Paketen \RequirePackage[ output-decimal-marker = {|} % Hier lassen sich die Optionen ebefalls setzen ]{siunitx} \RequirePackage[% first=4, % Hier lassen sich die Optionen setzten last = 6 ]{lcg} %%%%% Haupteil % keine Definitionen für dieses Bsp... \end{filecontents*} \documentclass[11pt,a4paper]{scrartcl} \usepackage[latin1]{inputenc} \usepackage[% noautosolve, % Option für mypkg output-decimal-marker = {;}, % Option für siunitx first=0, % Option für lcg last=3, % Option für lcg dfggjh, % völlig frei erfunden, allenn Paketen unbekannt ]{mypkg} \usepackage[% %output-decimal-marker = {*}, % Hier lassen sich die Optionen nicht setzten [Problem 1] ]{siunitx} \usepackage[% %first=7, % Hier lassen sich die Optionen nicht setzten [Problem 1] %last=10 ]{lcg} \sisetup{output-decimal-marker = {!}} % Setzen von Optionen mit diesem Befehl geht, an dieser Stelle letzte Definition, so dass ! verwendet wird \begin{document} \section*{Pakettest} Reiner num-Befehl: \num{2.35} num-Befehl mit in Befehlsoption gesetztem Dezimalmarker \num[output-decimal-marker = {,}]{1.45} % hier lässt sich die Option auch setzten, wodurch ! noch mal durch , ersetzt wird \end{document}
Tobi