Wie bereits in einem Kommentar @moewe und unter »Macht es einen Unterschied, ob ich \it
oder \itshape
verwende?« erklärt, ist die Verwendung von \it
seit mehr als einem Vierteljahrhundert überholt. LaTeX selbst stellt diese Befehle nicht mehr zur Verfügung. Es bleibt daher den Klassen überlassen, ob sie die veraltete Methode unterstützen oder nicht. Als beim Wechsel von KOMA-Script 2 zu KOMA-Script 3 die Unterstützung für den LaTeX-2.09-Kompatibilitätsmodus fiel, wurde auch die Unterstützung für dessen alte Font-Auswahlbefehle schrittweise zurückgefahren. Seit einigen Jahren gibt es eine Fehlermeldung, die einschließlich der verfügbaren Hilfe wie folgt lautet:
! Class scrartcl Error: undefined old font command `\it'.
See the scrartcl class documentation for explanation.
Type H <return> for immediate help.
...
l.5 \umlabstract{Eingabe}{}{}
? h
You should note that since 1994 LaTeX2e provides a new font selection scheme
called NFSS2 with several new, combinable font commands. KOMA-Script
classes had defined the old font commands like `\it' only for compatibility
with old LaTeX 2.09 document styles of Script 2.0. Nevertheless, these
commands are deprecated and undocumented at least since 2003. Since 2013
KOMA-Script classes warned about soon removement of these deprecated commands.
Now, after two decades of LaTeX2e and NFSS2, these commands will not work any
more. If loading a package results in this error message, you should contact
the author of that package and ask him to replace the deprecated font command
`\it', e.g., by `\normalfont \itshape `. Otherwise you should reconfigure
or replace the package. If you have used the old font command `\it' yourself,
you should replace it, e.g., by `\normalfont \itshape '.
To make it work for now, you can use the already also deprecated class option
`enabledeprecatedfontcommands'.
In der Hilfe steht also sehr genau, was der Grund für die Fehlermeldung ist und was dagegen zu tun ist.
Im Fall von tikz-uml
verlässt sich der Autor des Pakets darauf, dass alle Klassen die alten Font-Anweisungen bereitstellen. Wie bereits erwähnt, ist das eine Fehlannahme, die übrigens nicht nur bei KOMA-Script-Klassen zu Fehlern führen kann. Daher sollte man den Weg gehen, den Paket-Autor auf seinen Fehler hinzuweisen. Bei der Gelegenheit wäre es gut, den Autor außerdem zu bitten, Lizenzinformationen im Paket (vorzugsweise im Eingangskommentar und einem README) zu ergänzen und das Paket auf CTAN anzubieten. Bei der Wahl einer freien Lizenz stehen die Chancen gut, dass sein Paket dann auch in gängigen TeX-Distributionen wie MiKTeX oder TeX Live verteilt wird.
Als Notlösung, bis der Autor von tikz-uml
hoffentlich tätig wird, kann man, wie in der oben gezeigten Hilfe erwähnt, die Klassenoption enabledeprecatedfontcommands
setzen:
\documentclass[enabledeprecatedfontcommands]{scrartcl}
\usepackage{tikz-uml}
\begin{document}
\begin{tikzpicture}
\umlabstract{Eingabe}{}{}
\end{tikzpicture}
\end{document}
Statt der Fehlermeldung erhält man dann zwei Warnungen:
Class scrartcl Warning: deprecated option `enabledeprecatedfontcommands'.
(scrartcl) Note, that this option was already depreacted when
(scrartcl) it has been defined. Support for old font commands
(scrartcl) has been removed from KOMA-Script more than one
(scrartcl) decade ago. It is not recommended to use them any
(scrartcl) longer. Therefore usage of this class option also
(scrartcl) is not recommended.
und
Class scrartcl Warning: deprecated old font command `\it' used.
(scrartcl) You should note, that since 1994 LaTeX2e provides a
(scrartcl) new font selection scheme called NFSS2 with several
(scrartcl) new, combinable font commands. New KOMA-Script classes
(scrartcl) defined the old font commands like `\it' only for
(scrartcl) compatibility with LaTeX 2.09 document styles of
(scrartcl) Script 2.0. These commands are deprecated and
(scrartcl) undocumented at least since 2003. Since 2013,
(scrartcl) KOMA-Script classes warned about soon removement of
(scrartcl) these deprecated commands. Now, after two decades of
(scrartcl) LaTeX2e, NFSS2, and KOMA-Script these commands will
(scrartcl) not work any longer. If loading a package results in
(scrartcl) this message you should contact the author of that
(scrartcl) package and ask him to replace the depracted font
(scrartcl) command `\it', e.g., by `\normalfont \itshape '.
(scrartcl) Otherwise you should reconfigure or replace the
(scrartcl) package. If you have used the old font command
(scrartcl) `\it' yourself you should replace it, e.g., by
(scrartcl) `\normalfont \itshape ' on input line 5.
Wenn auch diese Erinnerung, dass da noch ein Problem vorliegt, stört oder falls KOMA-Script die laut erster Warnung als überholt eingestufte Option entfernt, kann man die notwendige, veraltete Font-Anweisung selbst definieren. Für alle veralteten Font-Anweisungen zusammen wäre das:
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\makeatletter
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\makeatother
Im Fall von tikz-uml
gibt es auch die Möglichkeit, das Paket mit Hilfe von xpatch
selbst zu patchen:
\documentclass{scrartcl}
\usepackage{tikz-uml}
\usepackage{xpatch}
\xpatchcmd{\umlclass}{% Ersetze:
\def\tikzumlClassName{{\it \tikzumlClassNameOld}}%
}{% Durch:
\def\tikzumlClassName{\textit{\tikzumlClassNameOld}}%
}{%
\typeout{\string\umlclass\space patched}%
}{%
\tyepout{Seems the \string\umlclass\space patch is not needed any
longer}%
}%
\xpatchcmd{\umlassocclass}{% Ersetze:
\def\tikzumlAssocClassName{{\it \tikzumlAssocClassNameOld}}%
}{% Durch:
\def\tikzumlAssocClassName{\textit{\tikzumlAssocClassNameOld}}%
}{%
\typeout{\string\umlassocclass\space patched}%
}{%
\tyepout{Seems the \string\umlassocclass\space patch is not needed any
longer}%
}%
\begin{document}
\begin{tikzpicture}
\umlabstract{Eingabe}{}{}
\end{tikzpicture}
\end{document}
Die hier nachträglich vorgenommenen Änderung sind übrigens genau die, die auch dem Paketautor zu empfehlen wären. Durch Verwendung von \textit
wird dann bei Bedarf auch automatisch die passende Italic-Korrektur eingefügt, was bei \it
und \itshape
nicht der Fall wäre.
Man erhält auf allen genannten Wegen als Ergebnis dann ein fehlerfreies Dokument mit der Ausgabe:
Eine Alternative wäre übrigens auch, die Verwendung von pgf-umlcd
:
\documentclass{scrartcl}
\usepackage{pgf-umlcd}
% Optional: abstractclass ändern, damit statt der Präfixzeile <<abstract>>
% der Klassenname kursiv gesetzt wird:
\renewenvironment{abstractclass}[3][]%
{
\begin{classAndInterfaceCommon}{#1}{#2}{#3}
}%
{\calcuateNumberOfParts{}
\node[this umlcd style, anchor=north] (\umlcdClassName) at (\umlcdClassPos)
{\textit{\textbf{\umlcdClassName}}
\insertAttributesAndOperations{}
};
\end{classAndInterfaceCommon}
}
\begin{document}
\begin{tikzpicture}
\begin{abstractclass}{Eingabe}{0,0}
\end{abstractclass}
\end{tikzpicture}
\end{document}
Die Ausgabe ist dann:
Ohne die optionale Umdefinierung (die man natürlich auch mit xpatch
hätte vornehmen können) wäre es übrigens:
In entsprechender Weise bietet das Paket auch eine interface
-Umgebung. Siehe dazu die Anleitung des Pakets. Das Paket pgf-umlcd
hat den Vorteil, dass es mit einer klaren geregelten freien Lizenz auf CTAN verbreitet wird und damit auch in gängigen TeX-Distributionen wie MiKTeX und TeX Live enthalten ist.
beantwortet
29 Jun '20, 09:53
gast3
(ausgesetzt)
Akzeptiert-Rate:
53%
Schritt 1 wäre sicher eine liebe E-Mail an den Betreuer von
tikz-uml
mit diesem Minimalbeispiel und der Bitte, zu überprüfen, ob es möglich wäre von den seit 25 Jahren veralteten Befehlen\it
und Freunden zu den LaTeX2e-Versionen umzusteigen (https://texfaq.org/FAQ-2letterfontcmd). Diese Befehle sind im LaTeX-Kern nämlich seit 1994 nicht mehr definiert und werden nur durch die Klassen am Leben gehalten. Die KOMA-Script-Klassen haben sich aber entschieden\it
und Co. nicht weiter zu unterstützen.Das kann man mit der offenbar undokumentierten Option
enabledeprecatedfontcommands
(\documentclass[enabledeprecatedfontcommands]{scrartcl}
) wieder rückgängig machen. Glücklich istscrartcl
darüber aber nicht, siehe.log
-Datei.BTW: Als freie Pakete gibt es übrigens auch
pgf-umlcd
undpgf-umlsd
. Die beiden sind in MiKTeX und TeX Live verfügbar.Als quick and dirty hack habe ich mal versuchsweise in der tikz-uml.sty (v1.0-2016-03-29) in den Zeilen 462 und 2483 das \it durch ein \textit ersetzt. Vielleicht nicht schön, und mit Sicherheit nicht einfach verteilbar, führt aber ohne weitere Fehlermeldungen zum gewünschten Ergebnis. Natürlich alles ohne Gewähr.
"Äquivalenter" wäre es,
\it
durch\itshape
zu ersetzen.\it
ist nämlich ein Schriftumschalter, der nicht wie\textit{...}
sein Argument kursiv setzt, sondern (von hier an) alles in der aktuellen Gruppe. Man VergleicheLorem \itshape ipsum dolor
mitLorem {\itshape ipsum} dolor
undLorem \textit{ipsum} dolor
. Siehe auch https://tex.stackexchange.com/q/8053/35864Der Autor hat mir gestern Abend noch geantwortet, dass er das Paket korrigeren möchte, allerdings keine weiteren Aussagen zu Zeitdauer etc. gemacht. Abwarten...