Sie sind hier

[gelöst] Fehler bei \addto\captionsenglish

Die Änderung eines sprachabhängigen Bezeichners von babel erzeugt bei scrartcl einen Fehler, bei article nicht.

Ich setze den Titel des Inhaltsverzeichnisses mit \addto\captionsenglish{\renewcommand{\contentsname}{My Content}} neu, obwohl ich "english" nicht als Sprache für babel setze.

Wenn ich "article" als Dokumentklasse verwende, funktioniert das, mit "scrartcl" gibt es die Fehlermeldung:

! LaTeX Error: Command \contentsname undefined.

Mache ich das gleiche mit ngerman, gibt es keine Fehlermeldung. Ich hab versucht, das im Minimalbeispiel zu verdeutlichen.

Das Verhalten ist mir vorher nicht aufgefallen, kann aber auch sein, dass ich es erst heute zufällig in dieser Konfiguration getestet habe. Ich bin mir nicht sicher, ob es ein Fehler von KomaScript ist oder babel, daher in diesem Forum und nicht bei Fehlermeldungen.

Kann das jemand verifizieren und mir evtl. helfen?

Danke,

Gruß, Ekkart.

Das Beispiel:

%\documentclass{article}
\documentclass{scrartcl}
 
\usepackage[ngerman]{babel} % Fehler bei scrartcl
%\usepackage[english, ngerman]{babel} % fehlerfrei
%\usepackage[ngerman, english]{babel} % fehlerfrei
%\usepackage[english]{babel} % fehlerfrei
 
\addto\captionsenglish{\renewcommand{\contentsname}{My Content}}
\addto\captionsngerman{\renewcommand{\contentsname}{Inhalt}}
 
\title{Test}
\author{Test}
\begin{document}
	\tableofcontents
	Text
\end{document}
 *File List*
scrartcl.cls    2020/01/24 v3.29 KOMA-Script document class (article)
scrkbase.sty    2020/01/24 v3.29 KOMA-Script package (KOMA-Script-dependent bas
ics and keyval usage)
 scrbase.sty    2020/01/24 v3.29 KOMA-Script package (KOMA-Script-independent b
asics and keyval usage)
  keyval.sty    2014/10/28 v1.15 key=value parser (DPC)
scrlfile.sty    2020/01/24 v3.29 KOMA-Script package (loading files)
tocbasic.sty    2020/01/24 v3.29 KOMA-Script package (handling toc-files)
scrsize11pt.clo    2020/01/24 v3.29 KOMA-Script font size class option (11pt)
typearea.sty    2020/01/24 v3.29 KOMA-Script package (type area)
   babel.sty    2020/03/22 3.42 The Babel package
 ngerman.ldf    2018/12/08 v2.11 German support for babel (post-1996 orthograph
y)
l3backend-pdfmode.def    2020-03-12 L3 backend support: PDF mode
 ***********
Bild von Markus Kohm

Man sollte in \caption eigentlich besser nicht \renewcommand, sondern \def verwenden. Das war früher auch mal so für babel dokumentiert. Leider wurde das zwischenzeitlich in der Doku geändert, was ich für einen großen Fehler halte.

Da KOMA-Script selbst mit \providecaptionname diverse Begriffe definiert, so auch \contentsname führt die Verwendung von \renewcommand an der Stelle immer zu Problemen. Du verlässt Dich hier darauf, dass der Begriff für die Sprache bereits definiert ist. Da Du die Sprache gar nicht lädst, ist das aber nicht der Fall. Für mich ist das daher ein Anwenderfehler, denn Du kannst nur umdefinieren, was bereits definiert ist.

Für die nächste Release habe ich einen Workaround für diesen Anwenderfehler eingebaut. Allerdings werden nur die daraus resultierenden Probleme mit \newcaptionname, \providecaptionname und \renewcaptionname abgefangen. Wenn der Anwenderfehler zu anderen Problemen führt, ist und bleibt das Dein Problem.

Hi Markus,

was ich im ersten text vergaß: danke für KomaScript und Deine Hilfe dazu :)

Danke für die Antwort, ja, ich hatte mich an die babel-Doku gehalten und bis texlive 2018 funktionierte das, daher hatte ich das nicht hinterfragt.

Was ich noch nicht verstehe ist, dass es keinen Fehler gibt, wenn ich "ngerman" nicht lade und renewcommand verwende, aber das ist auch egal, ich werde auf def umstellen und dann ist gut.

Nochmal Danke für die Antwort, schöne Ostern weiterhin.

Bild von Markus Kohm

Die Erweiterung und Änderung einer Sprache unabhängig vom verwendeten (oder nicht verwendeten) Sprachpaket ist nicht so trivial, wie man das gerne hätte. Und für english gilt zusätzlich die Besonderheit, dass es auch dann voreingestellt ist, wenn kein Sprachpaket geladen wird oder die Umschaltung auf eine bestimmte Sprache noch nicht vollständig erfolgt ist. Der Teil von KOMA-Script musste tatsächlich über die Jahre immer wieder an Änderungen bei babel angepasst werden. babel ist ja nicht nur ein Paket, es gibt auch einen Teil davon, der in das LaTeX-Format eingebunden wird. Es hat beispielsweise Jahre gedauert, bis endlich der Bug behoben war, dass ohne Laden des Pakets babel zwar die Sprache 0=English aktiv war, \languagename aber die Sprache der zuletzt in das Format eingebundenen Sprache ausgegeben hat. Für dieses und diverse weitere Probleme gibt es in KOMA-Script Workarounds. Die haben aber eben manchmal auch Auswirkungen, mit denen man nicht unbedingt rechnet.

Und KOMA-Script ist auch nicht der einzige beteiligte Teil, der sich seit TeX Live 2018 geändert hat. Im LaTeX-Kern und bei babel hat sich seither ebenfalls viel geändert. So stellt inzwischen auch babel selbst eine alternative Schnittstelle zur Definition von sprachabhängigen Bezeichner bereit. Und ich renne solchen Änderungen ständig hinterher, um deren Auswirkungen auf KOMA-Script heraus zu finden – oder eben auch nicht.

Comments for "[gelöst] Fehler bei \addto\captionsenglish" abonnieren