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

Darstellungsoptionen

Wählen Sie hier Ihre bevorzugte Anzeigeart für Kommentare und klicken Sie auf „Einstellungen speichern“ um die Änderungen zu übernehmen.

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:

\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}

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 \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!

Danke!

Darstellungsoptionen

Wählen Sie hier Ihre bevorzugte Anzeigeart für Kommentare und klicken Sie auf „Einstellungen speichern“ um die Änderungen zu übernehmen.
Inhalt abgleichen