Laut tikz-uml-Doku sollen abstrakte Klassen mit \umlabstract bzw. \umlclass[type=abstract] dargestellt werden. Wenn ich aber den folgenden Code verwende
Auch bei \umlclass[type=abstract] kommt die gleiche Fehlermeldung.
Es scheint also mit der Italics-Schriftart ein Problem zu geben.
Was kann ich tun, um im UML-Diagramm abstrakte Klassen auch mit kursiver Beschriftung darzustellen?
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 ist scrartcl darüber aber nicht, siehe .log-Datei.
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 Vergleiche Lorem \itshape ipsum dolor mit Lorem {\itshape ipsum} dolor und Lorem \textit{ipsum} dolor. Siehe auch https://tex.stackexchange.com/q/8053/35864
Der Autor hat mir gestern Abend noch geantwortet, dass er das Paket korrigeren möchte, allerdings keine weiteren Aussagen zu Zeitdauer etc. gemacht. Abwarten...
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:
Code, hier editierbar zum Übersetzen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
! 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
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:
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:
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:
Code, hier editierbar zum Übersetzen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
\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)
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.
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...