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
Will ich eigentlich nicht
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:
Aber ich mache es trotzdem
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\PackageInfostattPackageWarningverwendet. Und wenn Dir\PackageInfoauch noch zu viel ist, dann kannst Du in Deinem Paket auf eigenes Risiko auch\@PreventPackageFormLoading\@gobbletwo{…}verwenden. Dann gibt es überhaupt keine Meldung.Danke!
Danke!