Sie sind hier

Command \@textsubscript already defined

Seit einiger Zeit erzeugt das Erstellen von KOMA-Script-Dokumenten die Fehlermeldung "Command \@textsubscript already defined¹". (Windows 7, MiKTeX 2.9, alle Pakte auf dem aktuellsten Stand, getestet mit LyX 2.1.3)

Das auskommentieren der folgenden Zeilen in den KOMA-Script cls-Dateien löst das Problem:¹

\DeclareRobustCommand*\textsubscript[1]{%
  \@textsubscript{\selectfont#1}%
}
\newcommand{\@textsubscript}[1]{%
  {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}%
}

[Admin-Edit:]

  1. <code></code> Tags eingefügt (siehe Formatierungshinweise)

Bild von Markus Kohm

Das Problem ist nicht reproduzierbar. Daher kann ich dazu nur allgemein sagen:

In KOMA-Script wird diese Anweisung seit 2001 definiert. Es waren damals die ersten Klassen/Pakete, die das gemacht haben. Schon seit 2011 verwendet KOMA-Script für die Definition von \@textsubscript nicht mehr \newcommand, wie bei Dir angegeben, sondern \providecommand, weil fixltx2e diese Anweisung ebenfalls definiert und von manchen Anwendern sogar noch vor der Klasse geladen wird. Seit LaTeX 2015/01/01 definiert bereits der LaTeX-Kern diese Anweisung.

Wenn Du also ein Paket lädst, das sich daran stört, dann ist das ein Fehler dieses Pakets und nicht von KOMA-Script. KOMA-Script macht an der Stelle alles richtig.

Wenn Deine Angaben stimmen, also bei Dir tatsächlich noch \newcommand für die Definition von \@textsubscript in den Klassen verwendet wird, sei außerdem ein Update von KOMA-Script empfohlen. Das ist bei Dir dann nämlich extrem veraltet!

Darüber hinaus sollte man niemals etwas an den Original-Klassendateien ändern.

Verantwortlich ist in der Tat MiKTeX und die Tatsache, dass es Pakte sowohl unter "C:\Program Files (x86)" als auch unter "...\Roaming\..." geben kann. Ruft man das MiKTeX -Update mit dem Zusatz "admin" auf (was ich immer gemacht habe) wird C:\Program Files (x86) aktualisiert - ohne den Zusatz "admin" wird "Roaming" aktualisiert (was ich allerdings bisher nicht gemacht habe). Windows bevorzugt nun Roaming vor C:\Program Files (x86) weshalb bei mir immer ein veraltetes KOMA-Script package geladen wurde.

Der Bug liegt also vielmehr in einem nicht offensichtlichen update-Verhalten von MiKTeX.

Danke theoky für den Tipp in die richtige Richtung.

Bild von Markus Kohm

Das ist kein Bug, sondern das normale Verhalten von MiKTeX bei einer Multi-User-Installation. Bei der vollautomatischen Auto-Installation von Paketen kann MiKTeX keine Admin-Rechte erlangen. Daher installiert es dann Pakete in einem Benutzer-TEXMF- Baum. Beim Update als Admin wiederum, hat der Admin keinen Zugriff auf die Benutzer-TEXMF-Bäume aller Benutzer. Daher muss man die dort installierten Pakete über den Updatemanager für Benutzer aktualisieren.

Es gibt zwei Auswege:

  • Man verwendet für einen einzelnen Anwender keine Multi-User-Installation, sondern eine reine Benutzerinstallation. Dann gibt es keine Werkzeuge, die Admin-Rechte benötigen.
  • Man installiert mit dem Admin-Paketmanager alle Pakete. Dann werden keine Pakete mehr on-the-fly nachinstalliert. Daher benötigt man für ein Update auch nur den Admin-Updatemanager. Falls man noch Benutzerpakete hat, sind diese über den Benutzer-Paketmanager zu löschen.
Comments for "Command \@textsubscript already defined" abonnieren