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 ***********
Anwenderfehler
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,
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 aufdef
umstellen und dann ist gut.Nochmal Danke für die Antwort, schöne Ostern weiterhin.
Besonderheit von english als Default
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.