Sie sind hier

Noch ein zweites Mal \PreventPackageFromLoading

Angenommen, ich will in einem Paket verhindern, dass ein anderes Paket implizit geladen wird. Beispiel:

\documentclass{scrartcl}
 
\usepackage{filecontents}
 
\begin{filecontents}{mhp.sty}
\ProvidesPackage{mhp}
\StorePreventPackageFromLoading{\@preventpackagelist}
\PreventPackageFromLoading{color}
\RequirePackage{expl3} % Loads the color package.
\ResetPreventPackageFromLoading
\PreventPackageFromLoading{\@preventpackagelist}
\end{filecontents}
 
\usepackage{mhp}
 
\begin{document}
 
\end{document}

Wenn \PreventPackageFromLoading im mhp Paket zum ersten Mal verwendet wird und folglich \@preventpackagelist von \StorePreventPackageFromLoading als leeres Makro definiert wird, gibt \PreventPackageFromLoading{\@preventpackagelist} eine Warnung aus. Dieser Fall ist jedoch nicht weiter ungewöhnlich. Daher mein Vorschlag, zu überlegen, ob es nicht besser wäre, die Warnung durch einen reinen Logeintrag zu ersetzen.

MfG, Michael

forum: 
Bild von Markus Kohm

Der Aufruf mit einem leeren Argument ist eigentlich sogar ein Fehler. Da ist eine Warnung in meinen Augen das Mindeste. Wenn Du bei Deinem Paket die Warnung vermeiden willst, geht das ja auch ganz einfach:

\documentclass{scrartcl}
 
\usepackage{filecontents}
 
\begin{filecontents}{mhp.sty}
\ProvidesPackage{mhp}
\StorePreventPackageFromLoading{\@preventpackagelist}
\PreventPackageFromLoading{color}
\RequirePackage{scrbase,expl3} % Loads the color package.
\ResetPreventPackageFromLoading
\ifstr{\@preventpackagelist}{}{}{\PreventPackageFromLoading{\@preventpackagelist}}
\end{filecontents}
 
\usepackage{mhp}
 
\begin{document}
 
\end{document}
Bild von Markus Kohm

Speziell für Dich gibt es jetzt die Sternversion \PreventPackageFromLoading, die ein leeres Argument verzeiht. Gleichzeitig verzeiht die Version auch, wenn ein Paket in der Liste steht, das bereits geladen wurde. In beiden Fällen wird dann \PackageInfo statt PackageWarning verwendet. Und wenn Dir \PackageInfo auch noch zu viel ist, dann kannst Du in Deinem Paket auf eigenes Risiko auch \@PreventPackageFormLoading\@gobbletwo{} verwenden. Dann gibt es überhaupt keine Meldung.

Danke!

Comments for "Noch ein zweites Mal \PreventPackageFromLoading" abonnieren