diff options
author | Karl Berry <karl@freefriends.org> | 2012-03-07 00:36:15 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-03-07 00:36:15 +0000 |
commit | 3c83ff430f9038fe824468a3a6df3cd66cff0016 (patch) | |
tree | ecb739f4be1b4e22130fd6c816d320643c3b9110 /Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlfile.tex | |
parent | 742ee4652adc1208821c470a0fb7cb97fbe82905 (diff) |
koma-script (6mar12)
git-svn-id: svn://tug.org/texlive/trunk@25573 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlfile.tex')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlfile.tex | 266 |
1 files changed, 141 insertions, 125 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlfile.tex b/Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlfile.tex index 56cae1a84c6..91b9128168c 100644 --- a/Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlfile.tex +++ b/Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlfile.tex @@ -1,6 +1,6 @@ % ====================================================================== % scrlfile.tex -% Copyright (c) Markus Kohm, 2001-2011 +% Copyright (c) Markus Kohm, 2001-2012 % % This file is part of the LaTeX2e KOMA-Script bundle. % @@ -18,7 +18,7 @@ % This work consists of all files listed in manifest.txt. % ---------------------------------------------------------------------- % scrlfile.tex -% Copyright (c) Markus Kohm, 2001-2011 +% Copyright (c) Markus Kohm, 2001-2012 % % Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, % Version 1.3c, verteilt und/oder veraendert werden. @@ -45,7 +45,7 @@ % % ============================================================================ -\ProvidesFile{scrlfile.tex}[2011/03/09 KOMA-Script guide (chapter: scrlfile)] +\ProvidesFile{scrlfile.tex}[2012/01/01 KOMA-Script guide (chapter: scrlfile)] \chapter{Paketabhängigkeiten mit \Package{scrlfile} beherrschen} @@ -77,7 +77,7 @@ erfüllt. \Package{longtable}-Paketes bei Verwendung von \KOMAScript{}. Das \Package{longtable}-Paket definiert seine eigene Form von Tabellenüberschriften. Diese passen perfekt zu den - Tabellenüberschriften der Standardklassen. Sie passen aber überhaupt + Standardklassen. Sie passen aber überhaupt nicht zu den Voreinstellungen für die Tabellenüberschriften von \KOMAScript{} und reagieren auch nicht auf die entsprechenden Möglichkeiten der Konfiguration. Um dieses Problem zu lösen, müssen @@ -134,40 +134,38 @@ Dateien, Klassen und Paketen unterschieden. \Macro{BeforeFile}\Parameter{Datei}\Parameter{Anweisungen}\\ \Macro{AfterFile}\Parameter{Datei}\Parameter{Anweisungen} \end{Declaration}% -Mit Hilfe von \Macro{BeforeFile} kann dafür gesorgt werden, dass -\PName{Anweisungen} erst vor dem nächsten Laden einer bestimmten -\PName{Datei} ausgeführt werden. Vergleichbar arbeitet -\Macro{AfterFile}. Nur werden die \PName{Anweisungen} hier erst nach -dem Laden der \PName{Datei} ausgeführt. Wird die Datei nie geladen, so -werden die \PName{Anweisungen} auch nie ausgeführt. Beim Dateinamen sind -etwaige Endungen wie bei \Macro{input} anzugeben. - -%\begin{Explain} - Um die Funktionalität bereitstellen zu können, bedient sich - \Package{scrlfile} der bekannten \LaTeX-Anweisung - \Macro{InputIfFileExists}. Diese wird hierzu umdefiniert. Falls die - Anweisung nicht die erwartete Definition hat, gibt - \Package{scrlfile} eine Warnung aus. Dies geschieht für den Fall, - dass die Anweisung in späteren \LaTeX-Versionen geändert wird oder - bereits von einem anderen Paket umdefiniert wurde. +Mit Hilfe von \Macro{BeforeFile} kann dafür gesorgt werden, dass die +\PName{Anweisungen} vor dem nächsten Laden einer bestimmten \PName{Datei} +ausgeführt werden. Vergleichbar arbeitet \Macro{AfterFile}. Nur werden die +\PName{Anweisungen} hier erst nach dem Laden der \PName{Datei} +ausgeführt. Wird die Datei nie geladen, so werden die \PName{Anweisungen} in +beiden Fällen natürlich auch nie ausgeführt. Bei \PName{Datei} sind etwaige +Dateiendungen wie bei \Macro{input} alt Teil des Dateinamens anzugeben. + +Um die Funktionalität bereitstellen zu können, bedient sich \Package{scrlfile} +der bekannten \LaTeX-Anweisung +\Macro{InputIfFileExists}. Diese\textnote{Achtung!} wird hierzu umdefiniert. +Falls die Anweisung nicht die erwartete Definition hat, gibt +\Package{scrlfile} eine Warnung aus. Dies geschieht für den Fall, dass die +Anweisung in späteren \LaTeX-Versionen geändert wird oder bereits von einem +anderen Paket umdefiniert wurde. - Die Anweisung \Macro{InputIfFileExists} wird von \LaTeX{} immer - verwendet, wenn eine Datei geladen werden soll. Dies geschieht - unabhängig davon, ob die Datei mit \Macro{include}, \Macro{LoadClass}, - \Macro{documentclass}, \Macro{usepackage}, \Macro{RequirePackage}, - oder vergleichbaren Anweisungen geladen wird. Lediglich +Die Anweisung \Macro{InputIfFileExists} wird von \LaTeX{} immer verwendet, +wenn eine Datei geladen werden soll. Dies geschieht unabhängig davon, ob die +Datei mit \Macro{LoadClass}, \Macro{documentclass}, \Macro{usepackage}, +\Macro{RequirePackage}, \Macro{include} oder vergleichbaren Anweisungen +geladen wird. Lediglich % Umbruchkorrektur: listings korrigieren \begin{lstcode}[belowskip=\dp\strutbox] \input foo \end{lstcode} - lädt die Datei \texttt{foo} ohne Verwendung von - \Macro{InputIfFileExists}. Sie sollten daher stattdessen immer +lädt die Datei \texttt{foo} ohne Verwendung von \Macro{InputIfFileExists}. Sie +sollten daher stattdessen immer % Umbruchkorrektur: listings korrigieren \begin{lstcode}[belowskip=\dp\strutbox] \input{foo} \end{lstcode} - verwenden. Beachten Sie die Klammern um den Dateinamen!% -%\end{Explain} +verwenden. Beachten Sie die Klammern um den Dateinamen!% % \EndIndex{Cmd}{BeforeFile}% \EndIndex{Cmd}{AfterFile}% @@ -214,26 +212,39 @@ Die Anweisungen \Macro{AfterClass} und \Macro{AfterPackage} arbeiten weitgehend wie \Macro{AfterFile} mit dem winzigen Unterschied, dass die \PName{Klasse} beziehungsweise das \PName{Paket} mit seinem Namen und nicht mit seinem Dateinamen angegeben wird. Die Endungen »\File{.cls}« und -»\File{.sty}« entfallen hier also. Bei den Sternvarianten gibt es eine -zusätzliche Funktionalität. Wurde oder wird die entsprechende Klasse oder das -entsprechende Paket bereits geladen, so werden die \PName{Anweisungen} nicht -nach dem nächsten Laden, sondern unmittelbar ausgeführt. Bei der +»\File{.sty}« entfallen hier also. + +Bei\important[i]{\Macro{AfterClass*}\\\Macro{AfterPackage*}} den +Sternvarianten gibt es eine zusätzliche Funktionalität. Wurde oder wird die +entsprechende Klasse oder das entsprechende Paket bereits geladen, so werden +die \PName{Anweisungen} nicht nach dem nächsten Laden, sondern unmittelbar +ausgeführt. + +Bei\important[i]{\Macro{AfterClass+}\\\Macro{AfterPackage+}} der Plusvariante\ChangedAt{v3.09}{\Package{scrlfile}} werden die \PName{Anweisungen} sicher erst dann ausgeführt, wenn die Klasse oder das Paket vollständig geladen wurden. Der Unterschied zwischen der Stern- und der Plusvariante kommt nur zum Tragen, wenn die Anweisung verwendet wird, wenn das Laden der Klassen bzw. des Pakets zwar bereits begonnen hat, aber noch nicht beendet wurde. Wenn das Laden der Klasse bzw. des Pakets noch nicht -abgeschlossen wurde, werden die \PName{Anweisungen} in allen Fällen vor den -in der Klasse bzw. dem Paket mit \Macro{AtEndOfClass} oder -\Macro{AtEndOfPackage} verzögerten Anweisungen ausgeführt. Um stattdessen -eine Ausführung danach sicher zu stellen, ist die Variante mit Ausrufezeichen -zu verwenden. In diesem Fall werden die \PName{Anweisungen} nicht mehr im -Kontext der angegebenen Klasse bzw. des angegebenen Pakets ausgeführt. Will -man genau dies nur für den Fall erreichen, dass die Klasse bzw. das Paket -noch nicht geladen wurde, so verwendet man die Anweisung +abgeschlossen wurde, werden die \PName{Anweisungen} in allen Fällen vor den in +der Klasse bzw. dem Paket mit \Macro{AtEndOfClass} oder \Macro{AtEndOfPackage} +verzögerten Anweisungen ausgeführt. + +Um\important[i]{\Macro{AfterClass!}\\\Macro{AfterPackage!}} eine Ausführung +nach den in der Klasse oder dem Paket selbst mit \Macro{AtEndOfClass} oder +\Macro{AtEndOfPackage} verzögerten Anweisungen sicher zu stellen, ist die +Variante mit Ausrufezeichen zu verwenden. In diesem Fall werden die +\PName{Anweisungen} nicht mehr im Kontext der angegebenen Klasse bzw. des +angegebenen Pakets ausgeführt. + +Will\important[i]{\Macro{AfterAtEndOfClass}\\\Macro{AfterAtEndOfPackage}} man +nur für den Fall, dass die Klasse bzw. das Paket noch nicht geladen wurde, +erreichen, dass \PName{Anweisungen} nach der Klasse bzw. dem Paket und +außerhalb des Kontextes der angegebenen Klasse bzw. des angegebenen Pakets +ausgeführt werden, so verwendet man für Klassen die Anweisung \Macro{AfterAtEndOfClass}\ChangedAt{v3.09}{\Package{scrlfile}} -bzw. \Macro{AfterAtEndOfPackage}.% +und für Pakete \Macro{AfterAtEndOfPackage}.% % \begin{Example} Als Beispiel für Paket- oder Klassenautoren will ich zunächst @@ -246,12 +257,14 @@ bzw. \Macro{AfterAtEndOfPackage}.% \ClassWarningNoLine{scrbook}{% You are using an old version of hyperref package!\MessageBreak% - This version has a buggy hack at many drivers% - \MessageBreak% + This version has a buggy hack at many + drivers\MessageBreak% causing \string\addchap\space to behave strange.\MessageBreak% Please update hyperref to at least version - 6.71b}}} + 6.71b}% + }% + } \end{lstcode} Alte Versionen von \Package{hyperref} definierten ein Makro von \Class{scrbook} in einer Weise um, so dass es mit neueren Versionen @@ -269,7 +282,7 @@ bzw. \Macro{AfterAtEndOfPackage}.% \renewcommand*{\setcapindent}{% \end{lstcode}% }} Nach dem Laden von \Package{caption2} und nur falls das Paket - geladen wird, wird hier die \KOMAScript-Anweisung + geladen wird, wird hier die \KOMAScript{} eigene Anweisung \Macro{setcapindent} umdefiniert. Der Inhalt der Umdefinierung ist für dieses Beispiel unerheblich. Es sei nur erwähnt, dass \Package{caption2} die Kontrolle über die \Macro{caption}-Anweisung @@ -300,7 +313,7 @@ bzw. \Macro{AfterAtEndOfPackage}.% \end{lstcode} Alles weitere kann nun \Macro{AfterFile} überlassen werden: - \begin{lstcode}[moretexcs={hypersetup}] +\begin{lstcode}[moretexcs={hypersetup}] \documentclass{article} \usepackage{scrlfile,ngerman} \AfterFile{hdvips.def}{\hypersetup{linktocpage}} @@ -316,7 +329,7 @@ bzw. \Macro{AfterAtEndOfPackage}.% optionalen Arguments verzichtet wurde} \end{figure} \end{document} - \end{lstcode} +\end{lstcode} Egal, ob nun der \Package{hyperref}-Treiber \Option{hypertex} oder \Option{dvips} zu Anwendung kommt, wird die dann nützliche Einstellung \Option{linktocpage} verwendet. Wenn Sie jedoch mit pdf\LaTeX{} eine @@ -326,9 +339,9 @@ bzw. \Macro{AfterAtEndOfPackage}.% geladen wird. \end{Example} -Übrigens können Sie das Laden von \Package{scrlfile} und die obigen -\Macro{AfterFile}-Anweisungen auch in Ihre private \File{hyperref.cfg} -einfügen. Verwenden Sie dabei jedoch zum Laden des Paketes besser +Übrigens\textnote{Tipp!} können Sie das Laden von \Package{scrlfile} und die +obigen Anweisungen \Macro{AfterFile} auch in Ihre private \File{hyperref.cfg} +(siehe oben) einfügen. Verwenden Sie dabei jedoch zum Laden des Paketes besser \Macro{RequirePackage} an Stelle von \Macro{usepackage} (siehe \cite{latex:clsguide}). Die neuen Zeilen müssen in obigem Beispiel unmittelbar nach der \Macro{ProvidesFile}-Zeile, also unbedingt vor der Ausführung der @@ -357,7 +370,7 @@ Anweisungen. Jene ermöglichen Aktionen vor und nach dem Laden von Dateien. Dies ist hier nicht der Fall. Paketautoren haben des Öfteren das Problem, dass Sie Anweisungen in die \File{aux}-Datei schreiben wollen, nachdem die letzte Seite des Dokuments ausgegeben wurde. Dies wird häufig mit -\begin{lstcode} +\begin{lstcode}[belowskip=\dp\strutbox] \AtEndDocument{% \if@filesw \write\@auxout{% @@ -374,7 +387,7 @@ umgekehrte Problem: wurde die letzte Seite bei \Macro{end}\PParameter{document} noch nicht ausgegeben, so wird \Macro{writethistoaux} zu früh in die \File{aux}-Datei geschrieben. Man sieht daher häufig Lösungsversuche wie: -\begin{lstcode} +\begin{lstcode}[belowskip=\dp\strutbox] \AtEndDocument{% \if@filesw \clearpage @@ -386,7 +399,7 @@ daher häufig Lösungsversuche wie: \end{lstcode} Diese Lösung hat jedoch den Nachteil, dass damit die Ausgabe der letzten Seite erzwungen wird. Eine Anweisung wie: -\begin{lstcode} +\begin{lstcode}[belowskip=\dp\strutbox] \AtEndDocument{% \par\vspace*{\fill}% Hinweis am Ende des Dokuments.\par @@ -399,10 +412,10 @@ früh in der \File{aux}-Datei landen. Die beste Lösung des Problems wäre nun, wenn man unmittelbar in die \File{aux}-Datei schreiben könnte, nachdem das finale \Macro{clearpage} -innerhalb von \Macro{end}\PParameter{document} ausgeführt und bevor die -\File{aux}-Datei geschlossen wird. Genau dies ist das Ziel von +innerhalb von \Macro{end}\PParameter{document} ausgeführt, aber bevor die +\File{aux}-Datei geschlossen wird. Dies ist das Ziel von \Macro{BeforeClosingMainAux}: -\begin{lstcode} +\begin{lstcode}[belowskip=\dp\strutbox] \BeforeClosingMainAux{% \if@filesw \immediate\write\@auxout{% @@ -417,7 +430,7 @@ mehr führt oder wenn \Macro{clearpage} innerhalb einer \Macro{AtEndDocument}-Anweisung verwendet wurde. Es gibt jedoch für \Macro{BeforeClosingMainAux} eine Einschränkung: Im -Argument \Macro{Anweisungen} sollte keine eine Satzanweisung verwendet +Argument \Macro{Anweisungen} sollte keine Satzanweisung verwendet werden. Es darf also mit \Macro{BeforeClosingMainAux} kein zusätzliches Material gesetzt werden! Wird diese Einschränkung nicht beachtet, so ist das Ergebnis ebenso unvorhersehbarer wie bei den gezeigten Problemen mit @@ -452,7 +465,7 @@ aber auch möglich, eine ganz andere Datei als die angeforderte einzulesen. Mit\ChangedAt{v2.96}{\Package{scrlfile}} dieser Anweisung wird eine Ersetzung der Datei mit dem als erstes angegebenen \PName{Dateiname} definiert. Wenn \LaTeX{} anschließend angewiesen wird, diese Datei zu laden, wird stattdessen -die \PName{Ersatzdatei} geladen. Die Definition der Ersatzdatei wirkt sich auf +\PName{Ersatzdatei} geladen. Die Definition der Ersatzdatei wirkt sich auf alle Dateien aus, die vom Anwender oder intern von \LaTeX{} mit Hilfe von \Macro{InputIfFileExists} geladen werden. Dazu ist es allerdings erforderlich, dass \Package{scrlfile} diese Anweisung umdefiniert. @@ -460,23 +473,23 @@ dass \Package{scrlfile} diese Anweisung umdefiniert. \begin{Example} Sie wollen, dass an Stelle der Datei \File{\Macro{jobname}.aux}, die Datei \File{\Macro{jobname}.xua} geladen wird. Dazu verwenden Sie: - \begin{lstcode} +\begin{lstcode} \ReplaceInput{\jobname.aux}{\jobname.xua} - \end{lstcode} - Wenn Sie nun außerdem \File{\Macro{jobname}.xua} durch +\end{lstcode} + Wenn Sie nun zusätzlich \File{\Macro{jobname}.xua} auch noch durch \File{\Macro{jobname}.uxa} ersetzen: - \begin{lstcode} +\begin{lstcode} \ReplaceInput{\jobname.xua}{\jobname.uxa} - \end{lstcode} - dann wird \File{\Macro{jobname}.aux} in Wirklichkeit durch +\end{lstcode} + dann wird \File{\Macro{jobname}.aux} am Ende durch \File{\Macro{jobname}.uxa} ersetzt. Es wird also die komplette Ersetzungskette abgearbeitet. Einer Ersetzung im Kreis: - \begin{lstcode} +\begin{lstcode} \ReplaceInput{\jobname.aux}{\jobname.xua} \ReplaceInput{\jobname.xua}{\jobname.aux} - \end{lstcode} +\end{lstcode} würde jedoch zu einem \emph{stack size error} führen. Es ist also nicht möglich, eine einmal ersetzte Datei wieder durch ihren Ursprung zu ersetzen. \end{Example} @@ -495,21 +508,21 @@ der Klasse passen. Eine Lösung dieses Problems finden Sie nachfolgend. \Macro{ReplaceClass}\Parameter{Klasse}\Parameter{Ersatzklasse}\\ \Macro{ReplacePackage}\Parameter{Paket}\Parameter{Ersatzpaket} \end{Declaration} -Eine\ChangedAt{v2.96}{\Package{scrlfile}} Klasse oder ein Paket sollte niemals -mit Hilfe von \Macro{ReplaceInput} ersetzt werden. In diesem Fall würde -\LaTeX{} eine Warnung über nicht übereinstimmende Klassen- oder Paketnamen -melden. +Eine\ChangedAt{v2.96}{\Package{scrlfile}}\textnote{Achtung!} Klasse oder ein +Paket sollte niemals mit Hilfe der oben erklären Anweisung +\Macro{ReplaceInput} ersetzt werden. In diesem Fall würde \LaTeX{} eine +Warnung über nicht übereinstimmende Klassen- oder Paketnamen melden. \begin{Example} Sie ersetzen das Paket \Package{fancyhdr} leichtfertig durch das nicht kompatible Paket \Package{scrpage2}, indem Sie - \begin{lstcode} +\begin{lstcode} \ReplaceInput{fancyhdr.sty}{scrpage2.sty} - \end{lstcode} - verwenden. Dies führt zu der Warnung - \begin{lstcode} +\end{lstcode} + verwenden. Dies wird beim Laden von \Package{fancyhdr} zu der Warnung +\begin{lstcode} LaTeX warning: You have requested `scrpage2', - but the package provides `fancyhdr'.} - \end{lstcode} + but the package provides `fancyhdr'. +\end{lstcode} führen. Für den Anwender wäre diese Warnung mehr als verwirrend, hat er doch gar nicht \Package{scrpage2}, sondern tatsächlich \Package{fancyhdr} angefordert, das jedoch durch \Package{scrpage2} ersetzt wurde. @@ -520,36 +533,36 @@ verwenden. Es ist zu beachten, dass dabei wie bei \Macro{documentclass} und \Macro{usepackage} der Name der Klasse oder des Pakets und nicht deren kompletter Dateiname anzugeben ist. -Die Ersetzung funktioniert mit diesen Anweisungen für Klassen, die mit -\Macro{LoadClass}, \Macro{LoadClassWithOptions} oder \Macro{documentclass} +Die Ersetzung funktioniert für Klassen, die mit +\Macro{documentclass}, \Macro{LoadClassWithOptions} oder \Macro{LoadClass} geladen werden. Für Pakete funktioniert die Ersetzung beim Laden mit -\Macro{RequirePackage}, \Macro{RequirePackageWithOptions} und -\Macro{usepackage}. - -Es ist zu beachten, dass die \PName{Ersatzklasse} oder das \PName{Ersatzpaket} -mit denselben Optionen geladen wird, mit denen die ursprünglich geforderte -Klasse oder das ursprünglich geforderte Paket geladen würden. Wird ein Paket -oder eine Klasse durch ein Paket oder eine Klasse ersetzt, das eine geforderte -Option nicht unterstützt, würde dies zu den üblichen Warnungen und Fehlern -führen. Es ist jedoch möglich, solche in der \PName{Ersatzklasse} oder dem -\PName{Ersatzpaket} fehlenden Optionen per \Macro{BeforeClass} oder -\Macro{BeforePackage} neu zu definieren. +\Macro{usepackage}, \Macro{RequirePackageWithOptions} und +\Macro{RequirePackage}. + +Es\textnote{Achtung!} ist zu beachten, dass die \PName{Ersatzklasse} oder das +\PName{Ersatzpaket} mit denselben Optionen geladen wird, mit denen die +ursprünglich geforderte Klasse oder das ursprünglich geforderte Paket geladen +würden. Wird ein Paket oder eine Klasse durch ein Paket oder eine Klasse +ersetzt, das eine geforderte Option nicht unterstützt, würde dies zu den +üblichen Warnungen und Fehlern führen. Es ist jedoch möglich, solche in der +\PName{Ersatzklasse} oder dem \PName{Ersatzpaket} fehlenden Optionen per +\Macro{BeforeClass} oder \Macro{BeforePackage} neu zu definieren. \begin{Example} Angenommen, das Paket \Package{oldfoo} soll beim Laden durch das Paket{newfoo} ersetzt werden. Dies wird mit: - \begin{lstcode} +\begin{lstcode} \ReplacePackage{oldfoo}{newfoo} - \end{lstcode} +\end{lstcode} erreicht. Das alte Paket hat eine Option \Option{oldopt}, die das neue Paket jedoch nicht hat. Mit - \begin{lstcode} +\begin{lstcode} \BeforePackage{newfoo}{% \DeclareOption{oldopt}{% - \PackageInfo{newfoo}{option `oldopt' not supported}% - }% - } - \end{lstcode} + \PackageInfo{newfoo}% + {option `oldopt' not supported}% + }}% +\end{lstcode} wird diese Option nun für das Paket \Package{newfoo} nachdefiniert. Dadurch wird vermieden, dass beim Laden des Pakets \Package{oldfoo} ein Fehler über die im Paket \Package{newfoo} nicht unterstützte Option gemeldet wird. @@ -557,32 +570,33 @@ führen. Es ist jedoch möglich, solche in der \PName{Ersatzklasse} oder dem Existiert hingegen eine Option \Option{newopt}, die an Stelle der Option \Option{oldopt} verwendet werden soll, so kann dies ebenfalls erreicht werden: - \begin{lstcode} +\begin{lstcode} \BeforePackage{newfoo}{% \DeclareOption{oldopt}{% \ExecuteOptions{newopt}% - }% - } - \end{lstcode} + }}% +\end{lstcode} Es ist sogar möglich, festzulegen, dass beim Laden des neuen Pakets andere Voreinstellung gelten sollen: - \begin{lstcode} +\begin{lstcode} \BeforePackage{newfoo}{% \DeclareOption{oldopt}{% \ExecuteOptions{newopt}% }% - \PassOptionsToPackage{newdefoptA,newdefoptB}{newfoo}% + \PassOptionsToPackage{newdefoptA,newdefoptB}% + {newfoo}% } - \end{lstcode} +\end{lstcode} oder auch direkt: - \begin{lstcode} +\begin{lstcode} \BeforePackage{newfoo}{% \DeclareOption{oldopt}{% \ExecuteOptions{newopt}% }% - } - \PassOptionsToPackage{newdefoptA,newdefoptB}{newfoo}% - \end{lstcode} + }% + \PassOptionsToPackage{newdefoptA,newdefoptB}% + {newfoo}% +\end{lstcode} \end{Example} Damit Klassen ersetzt werden können, ist es erforderlich \Package{scrlfile} @@ -605,32 +619,32 @@ verhindern. Auch hier bietet \Package{scrlfile} eine einfache Lösung. \Macro{PreventPackageFromLoading}\Parameter{Paketliste} \end{Declaration} \BeginIndex{Cmd}{PreventPackageFromLoading}% -Wird diese Anweisung\ChangedAt{v3.08}{\Package{scrlfile}} irgendwann vor dem +Wird diese Anweisung\ChangedAt{v3.08}{\Package{scrlfile}} vor dem Laden eines Paket mit \Macro{usepackage}\IndexCmd{usepackage}, \Macro{RequirePackage}\IndexCmd{RequirePackage} oder \Macro{RequirePackageWithOptions}\IndexCmd{RequirePackageWithOptions} aufgerufen, so wird das Laden des Pakets effektiv verhindert, falls es in -\PValue{Paketliste} zu finden ist. +der \PName{Paketliste} zu finden ist. % \begin{Example} Angenommen Sie arbeiten in einer Firma, in der alle Dokumente mit Latin~Modern erzeugt werden. In der Firmenklasse, \Class{firmenci}, befinden sich daher die Zeilen: - \begin{lstcode} +\begin{lstcode} \RequirePackage[T1]{fontenc} \RequirePackage{lmodern} - \end{lstcode} +\end{lstcode} Nun wollen Sie zum ersten Mal ein Dokument mit X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\LaTeX{} oder Lua\LaTeX{} setzen. Da hierbei ohnehin Latin-Modern voreingestellt ist und das Laden von \Package{fontenc} eher störend wäre, wollen Sie das Laden beider Pakete verhindern. Sie laden die Klasse deshalb nun in Ihrem eigenen Dokument wie folgt: - \begin{lstcode} +\begin{lstcode} \RequirePackage{scrlfile} \PreventPackageFromLoading{fontenc,lmodern} \documentclass{firmenci} - \end{lstcode} +\end{lstcode} \end{Example} Wie im Beispiel zu sehen ist, kann man das Paket \Package{scrlfile} auch bereits vor der Klasse laden. In diesem Fall muss das Laden dann aber mit @@ -645,10 +659,10 @@ Hilfe von \Macro{RequirePackage}\IndexCmd{RequirePackage} erfolgen, da \end{Declaration} \BeginIndex{Cmd}{StorePreventPackageFromLoading}% \BeginIndex{Cmd}{ResetPreventPackageFromLoading}% -\PName{Anweisung} wird mit Hilfe von +\Macro{Anweisung} wird mit \Macro{StorePreventPackageFromLoading}\ChangedAt{v3.08}{\Package{scrlfile}} als die aktuelle Liste der Pakete definiert, für die das Laden verhindert -werden soll. Im Gegensatz dazu setzt +werden soll. Dagegen setzt \Macro{ResetPreventPackageFromLoading}\ChangedAt{v3.08}{\Package{scrlfile}} die Liste der Pakete, für die das Laden verhindert werden soll, zurück. Danach können wieder alle Pakete geladen werden. @@ -659,25 +673,27 @@ können wieder alle Pakete geladen werden. \Macro{PreventPackageFromLoading}\IndexCmd{PreventPackageFromLoading} verhindern kann. Also setzen Sie die Paketliste für die Ausnahmen zuvor zurück: - \begin{lstcode} +\begin{lstcode} \ResetPreventPackageFromLoading \RequirePackage{foo} - \end{lstcode} +\end{lstcode} Allerdings hat dies den Nachteil, dass ab diesem Zeitpunkt die komplette Ausnahmeliste des Anwenders verloren ist. Also speichern Sie die Liste zunächst zwischen und reaktivieren Sie später wieder: - \begin{lstcode} +\begin{lstcode} \newcommand*{\Users@PreventList}{}% \StorePreventPackageFromLoading\Users@PreventList \ResetPreventPackageFromLoading \RequirePackage{foo} \PreventPackageFromLoading{\Users@PreventList} - \end{lstcode} - \Macro{StorePreventPackageFromLoading} würde die Anweisung - \Macro{Users@PreventList} auch dann definieren, wenn diese bereits - anderweitig definiert wäre. In diesem Beispiel wurde deshalb mit einem - vorherigen \Macro{newcommand*} sichergestellt, dass in diesem Fall zur - Sicherheit eine Fehlermeldung ausgegeben wird. +\end{lstcode} + Es ist zu beachten, dass\textnote{Achtung!} \Macro{Users@PreventList} durch + die Anweisung \Macro{StorePreventPackageFromLoading} auch definiert + werden würde, wenn diese bereits anderweitig definiert wäre. Eine vorhandene + Definition würde also ohne Rücksicht überschrieben werden. In diesem + Beispiel wurde deshalb mit einem vorherigen \Macro{newcommand*} + sichergestellt, dass in diesem Fall zur Sicherheit eine Fehlermeldung + ausgegeben wird. \end{Example} An dieser Stelle sei darauf hingewiesen, dass Sie bei Manipulationen an der mit \Macro{StorePreventPackageFromLoading} zwischengespeicherten Liste selbst die |