Sie sind hier

Wie bekomme ich die Warnungen wegen veralteter Anweisung \if… weg?

Bild von Markus Kohm

In KOMA-Script fanden sich teilweise schon seit fast 20 Jahren LaTeX-Anweisungen wie \ifattoclist, \ifdimen, \ifdvioutput, \ifintnumber, \ifiscount, \ifiscounter, \ifisdimen, \ifisdimension, \ifisdimexpr, \ifisglue, \ifisglueexpr, \ifisinteger, \ifisnumexpr, \ifisskip, \ifnotundefined, \ifisskip, \ifnotundefined, \ifnumber, \ifnumbered, \ifpdfoutput, \ifpsoutput, \ifstr, \ifstrstart, \ifthispageodd, \iftocfeature, \ifundefinedorrelax, \ifunnumbered. Nun kam aus dem Kreis von The LaTeX Project Team die dringende Empfehlung nur Verzweigungen in TeX-Stil: \if… … \fi mit \if zu beginnen und für LaTeX-Anweisungen mit Argument wie beispielsweise bei \IfFileExists einen Befehlsnamen mit \If, also groß geschriebenem »I« am Anfang zu verwenden. Es wurde empfohlen, dies auch rückwirkend für bereits existierende Anweisungen durchzuziehen. Daher wurden in KOMA-Script 3.28 all diese Anweisungen umbenannt. Um den Übergang etwas zu erleichtern wurden vorübergehend die meisten alten Anweisungen ebenfalls noch definiert. Allerdings werden diese nur dann definiert, wenn sie beim Laden des entsprechenden KOMA-Script-Pakets oder der KOMA-Script-Klasse nicht bereits definiert sind. Außerdem geben sie dann eine Warnung der Art:

Package scrbase Warning: Usage of deprecated command `\ifstr'.
(scrbase)                The command has been renamed because of a
(scrbase)                recommendation of The LaTeX Project Team.
(scrbase)                Please replace `\ifstr' by `\Ifstr' in input line 4711

aus.

Die einfachste Methode, diese Warnung los zu werden, ist, der Empfehlung zu folgen und die entsprechende Anweisung zu ersetzen.

Sollte dies nicht möglich sein, weil die Anweisung in einem Paket enthalten ist, das jemand anderer geschrieben hat, so ist zu prüfen, ob es bereits ein Update für jenes Paket gibt, das dieses Problem löst. Sollte auch das nicht der Fall sein, so ist der Autor des entsprechenden Pakets um eine Lösung des Problems zu bitten.

Für den Fall, dass Code kompatibel sowohl zu einer älteren Version von KOMA-Script als auch zu KOMA-Script ab 3.28 erstellt werden soll, bietet sich an, die entsprechende neue Anweisung selbst per \providecommand basierend auf der betroffenen veralteten Anweisung zu definieren, nachdem die KOMA-Script-Klasse bzw. das KOMA-Script-Paket, das die Anweisung normalerweise bereitstellt, geladen wurde, beispielsweise:

\documentclass{article}
\usepackage{scrbase}
\providecommand*{\Ifstr}{\ifstr}
\begin{document}
Gurken sind bei \KOMAScriptVersion{} \Ifstr{Gurken}{Tomaten}{keine }{}Tomaten.
\end{document}

Keinesfalls sollte hingegen weiterhin die veraltete Version selbst verwendet werden, denn während:

\newif\ifstr
\documentclass{article}
\usepackage{scrbase}
\providecommand*{\Ifstr}{\ifstr}
\begin{document}
Gurken sind bei \KOMAScriptVersion{} \Ifstr{Gurken}{Tomaten}{keine }{}Tomaten.
\end{document}

mit aktuellen KOMA-Script einwandfrei funktioniert, ist das bei

\newif\ifstr
\documentclass{article}
\usepackage{scrbase}
\providecommand*{\ifstr}{\Ifstr}% ACHTUNG: NICHT MACHEN!
\begin{document}
Gurken sind bei \KOMAScriptVersion{} 
\ifstr% ACHTUNG: NICHT MACHEN!
  {Gurken}{Tomaten}{keine }{}Tomaten.
\end{document}

nicht der Fall. Mit veraltetem KOMA-Script ergäben natürlich beide zuletzt gezeigten Beispiele eine Fehlermeldung, wegen bereits definiertem \ifstr. Das \newif vor \documentclass dient hier aber nur als Beispiel. Eine entsprechende Deklaration könnte zukünftig auch im LaTeX-Kern oder einer Klasse oder einem Paket zu finden sein. Mit neuem KOMA-Script wäre das (im Gegensatz zu älteren Versionen) kein Problem.

Comments for "Wie bekomme ich die Warnungen wegen veralteter Anweisung \if… weg?" abonnieren