Hallo,
um ein Dokumentenlayout an eine Word-Vorlage anzupassen (ja ich weiß, schrecklich...), muß ich die Schriftgrößen in Überschriften ändern und zudem Überschriften auf Kapitelebene in Großbuchstaben setzen.
Dazu habe ich \size@chapter
¹ (und auch die anderen \size@...
¹) entsprechend umdefiniert und zudem ein \MakeUppercase
¹ in \size@chapter
¹ eingeführt. Für sich allein klappt das prima.
Zusätzlich soll der Beginn des Überschrifttextes um 1.5 cm eingerückt werden, und die Kapitel- bzw. Abschnittsnummer in den entstehenden Freiraum eingefügt werden. Dazu habe ich \chapterformat
¹ und \othersectionlevelsformat
¹ in Anlehnung an den scrguide's (Seite 115 und folgende) mit einer \makebox
¹ um die Kapitel- bzw. Abschnittszähler herum umdefiniert (siehe Beispiel unten). Für sich allein (ohne Verwendung von \MakeUppercase
¹ in der \size@chapter
¹ Definition) klappt das auch so wie es soll.
Wenn beide Definitionen wirksam sind, gibt es allerdings eine Fehlermeldung:
Chapter 1. ! Use of \@makepicbox doesn't match its definition. <argument> \def l.16 \blinddocument ?
Wenn man das \MakeUppercase
¹ in einer anderen \size@...
¹ Definition benutzt (etwa in \size@section
¹) gibt es ebenfalls Fehlermeldungen, wenn auch andere.
Offensichtlich vertragen sich also eine Umdefinition von \chapterformat
¹ oder \othersectionlevelsformat
¹ mittels einer \makebox
¹ nicht mit dem Standardbefehl \MakeUppercase
¹ in einer zugehörigen \size@...
¹ Definition. Woran liegt das, und gibt es einen "way around"?
Der folgende code generiert die o.a. Fehlermeldung:
\documentclass[headsepline=true]{scrreprt} \usepackage[english]{babel} \usepackage{blindtext} \makeatletter \renewcommand*{\size@chapter}{\normalsize\MakeUppercase} \renewcommand*{\size@section}{\normalsize} \makeatother \renewcommand*{\chapterformat}{\makebox[1.5cm][l]{\thechapter\autodot\enskip}} \renewcommand*{\othersectionlevelsformat}[3]{\makebox[1.5cm][l]{#3\autodot\enskip}} \begin{document} \tableofcontents \blinddocument \end{document}
Vielen Dank für die Hilfe,
Christian.
1 [Admin-Edit:] <code>...</code> eingefügt. Bitte künftig selbst beachten!
Geht nicht … oder genau genommen doch … oder auch nicht
Zunächst sei erwähnt, dass die Umdefinierung von
\size@chapter
und\size@section
als Umdefinierung interner Anweisungen nicht empfohlen werden kann. Außerdem ist sie überflüssig, das es mit\setkomafont
eine wohldefinierte Schnittstelle für die Änderung der Schrift gibt:Aber auch damit wirst Du nicht zum Ziel kommen, weil
\MakeUppercase
nun einmal eine in mehrerer Hinsicht stark limitierte Anweisung ist. Zum einen gilt das dafür, wo man diese Anweisung verwenden darf, zum anderen was man als Argumente dieser Anweisung verwenden darf und zum Dritten für das Ergebnis. Dein Beispiel lässt sich letztlich reduzieren zu:Bereits das funktioniert nicht.
Wenn man erst einmal so weit ist, dann stellt sich die Frage, warum das nicht geht. Alle Anweisungen, die eine Sternform oder ein optionales Argument besitzen, sind bei LaTeX zerbrechlich. Zerbrechliche Anweisungen sind innerhalb von
\MakeUppercase
nicht erlaubt. AFAIK habe ich auf diese Problematik irgendwo in der KOMA-Script-Anleitung (oder nur im Buch?) hingewiesen. Also liegt der nächste Schritt nahe: Man erstellte eine Anweisung, die garantiert nicht zerbricht:Wichtig! Damit ist das Problem der Kombinierbarkeit gelöst. Nicht gelöst ist jedoch das Problem, dass das Ergebnis nichts taugt. Alle Typografen dieser Welt sind sich einig, dass im Versalsatz – das ist der Satz von ganzen Wörtern oder Passagen in Großbuchstaben – Sperrung unabdingbar ist. Dabei darf nicht einfach zwischen alle Zeichen ein fester Abstand eingebaut werden. Vielmehr muss ausgeglichen gesperrt werden. Die Pakete soul und microtype versuchen so etwas zwar (siehe deren Anleitungen für die entsprechenden Befehle), aber auch deren Lösung ist nur eine Notlösung. Dabei wird nämlich lediglich das vorhandene Kerning der nicht gesperrten Paare mit berücksichtigt. Schon das funktioniert nur bei einigen, wenigen Fonts, da Kerningtabellen für Versalien oft sehr unzureichend sind. Beim ausgeglichenen Sperren müssen aber zusätzlich die konkrete Formen der Buchstaben, also die Glyphen, mit einbezogen werden (Stichwort sei hier Lochbildner). Das ist mit TeX und keiner Erweiterung von TeX automatisch zu machen. Wirklich korrekten Versalsatz kann man daher nur manuell und nur mit entsprechendem Fachwissen erreichen. Ich selbst hasse Versalsatz, weil er mir immer viel Arbeit macht, ich aber mit dem Ergebnis nie ganz zufrieden bin.
Das Ergebnis obiger technischer Lösung kann also keinesfalls als typografisch brauchbare Lösung verstanden werden. Sie ist in meinen Augen absolut unbrauchbar und untauglich! Und diese Aussage ist mir so wichtig, dass ich ausnahmsweise sogar eine aktive Auszeichnung zur Hervorhebung verwende …
Erstmal danke...
...für die technische Lösung meines Problems, die im Beispiel auch in der Tat funktioniert.
Bzgl. der Umdefinition der
\size@...
Befehle - wahrscheinlich bin ich beim Lesen des Codes auf die Idee gekommen, sie zu benutzen, da ich bis dahin lediglich ein\setkomafont{sectioning}
verwendet hatte, aber verschiedene Größen für die einzelnen Überschriftsebenen brauchte. Zu einem anderen Zeitpunkt hatte ich den KOMA Script Guide dann ordentlicher gelesen und auch die seperaten Umschaltbefehle für die einzelnen Ebenen entdeckt, aber nicht alles entsprechend umgestrickt. Aus dem gleichen Grund ist das Beispiel auch nicht ganz so minimal ausgefallen, wie es hätte sein sollen - ich habe einen Teil meines Kontexts beibehalten, wahrscheinlich auch deshalb, weil ich sonst überhaupt keine Idee hätte, warum man eine\makebox
in ein\MakeUppercase
stecken sollte. Ich bitte um Entschuldigung.Was die Typografie angeht - ja, Du hast recht. Ich würde von mir aus auch keinen Versalsatz benutzen. Es ist nur so (und diesen Hintergrund kann man in Minimalbeispielen halt nicht so einfach transportieren), daß die erwähnte Dokumentenklasse ein Versuch ist, auf LaTeX basierte technische Dokumente in einer ansonsten stark M$-Word orientierten Organisation einzuführen. Einige der Leute, die in ihren Dokumenten viele mathematische Formeln setzen müssen, wären darüber ganz glücklich. Die üblichen Entscheidungsträger (die in der Regel keine Formeln setzen müssen) erstmal damit zu überfahren, daß ihre seit 10 oder 15 Jahren verwendeten Vorlagen typografisch betrachtet Schrott sind, mag mein ästhetisches Empfinden befriedigen. Es hilft allerdings nicht unbedingt weiter, deren Akzeptanz für neue Arbeitsprozesse zu erreichen. Und ist somit der Arbeitserleichterung für die, die technische und wissenschaftliche Dokumente erstellen müssen, auch nicht nicht zuträglich. Stattdessen erhält die Wrapper-Klasse eben eine Option, LaTeX-Dokumente genauso hässlich aussehen zu lassen wie die derzeitigen Vorlagen - inklusive Überschriften in Großbuchstaben, wenn's denn sein muß.
Notlösung
Als Notlösung würde ich dann wenigstens das Tracking mit microtype einbauen:
Man sieht da aber, obwohl ich sehr, sehr moderat gesperrt habe, bei
HEADING
schon sehr deutlich die Grenzen des automatischen Sperrens. Eventuell könnte man das mit\SetExtraKerning
noch ein wenig verbessern. Aber Du willst ja ohnehin kein optimales Ergebnis, sondern nur eines, das besser als Word ist. ;-)