Hallo,
ich möchte auf Basis der KOMA-Klassen eine eigene Klassen für eine Vorlage zu entwerfen. Ich möchte gerne standardmäßig die Einstellung für die Schriftart der Überschriften ändern, allerdings dem Anwender die Möglichkeit lassen, auf die Originaldefinition des KOMA-Scriptes zurückzuschalten. Leider ist dies anscheinend nicht trivial möglich. Folgendes Minimalbeispiel dazu:
\RequirePackage{filecontents}% \begin{filecontents}{\jobname.cls} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{\jobname} \LoadClassWithOptions{scrreprt} \makeatletter \let\ORIGscr@fnt@section\scr@fnt@section \addtokomafont{section}{\centering}% \DefineFamily{FAM} \DefineFamilyMember{FAM} \newif\if@opt \DefineFamilyKey{FAM}{option}[true]{% \FamilySetBool{FAM}{option}{@opt}{#1} \if@opt% \let\scr@fnt@section\ORIGscr@fnt@section \addtokomafont{section}{\rmfamily}% \fi% } \FamilyProcessOptions{FAM} \endinput \end{filecontents} \documentclass[option]{\jobname} \begin{document} \section*{Test} \end{document}
Im Voraus schon vielen Dank für die Hilfe
Falk
Interne Makros sind gefährlich
Löse es lieber ohne interne KOMA-Script-Makros:
Vorteil: Ändert der Benutzer die Fonts und will dann später die Änderungen der Klasse noch abschalten, ohne seine Änderungen zu vernichten, dann geht das noch immer mit dieser Option.
Nachteil: Ändert der Benutzer die Fonts und will dann später seine Änderungen abschalten, dann geht das nicht mehr mit dieser Option.
Fazit: Die Option schaltet nun nur noch die Änderungen aus und ein, die Teil von
\section@fnt@extensionsind. Weitere Änderungen sind davon nicht betroffen.Warum Deine Lösung nicht funktioniert? Weil
\scr@fnt@sectionnicht die Definition enthält, sondern nur einen Verweis auf die Definition. Das wird recht schnell klar, wenn Du\show\scr@fnt@sectionin Deiner Lösung einmal vor und einmal nach\addtokomafonteinfügst und die Ergebnisse in der log-Datei vergleichst.Kopf meets Tischplatte
Ich habe schon gesehen, dass
\scr@fnt@sectionselber nicht die Definition enthält. Auf die Variante hätte ich auch selber kommen können. :/ Vielen Dank Markus