Sie sind hier

Schriften zurücksetzen

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}

Standardmäßig wird die Überschrift zentriert gesetzt. Mit der Angabe der Option sollte die Überschrift eigentlich wieder linksbündig gesetzt werden, wird sie aber nicht. Ich habe mich schon durch die Definitionen des KOMA-Scriptes gewälzt, finde allerdings keinen Ansatzpunkt mehr.

Im Voraus schon vielen Dank für die Hilfe
Falk

Bild von Markus Kohm

Löse es lieber ohne interne KOMA-Script-Makros:

\RequirePackage{filecontents}%
\begin{filecontents}{\jobname.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{\jobname}
\LoadClassWithOptions{scrreprt}
 
\addtokomafont{section}{\section@fnt@extension}%
 
\newcommand*{\section@fnt@extension}{%
  \if@fnt@deny\else\centering\fi
}
 
\DefineFamily{FAM}
\DefineFamilyMember{FAM}
\FamilyBoolKey{FAM}{origfonts}{@fnt@deny}
\FamilyProcessOptions{FAM}
\endinput
\end{filecontents}
 
\documentclass[origfonts]{\jobname}
\begin{document}
\section*{Test}
\end{document}

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@extension sind. Weitere Änderungen sind davon nicht betroffen.

Warum Deine Lösung nicht funktioniert? Weil \scr@fnt@section nicht die Definition enthält, sondern nur einen Verweis auf die Definition. Das wird recht schnell klar, wenn Du \show\scr@fnt@section in Deiner Lösung einmal vor und einmal nach \addtokomafont einfügst und die Ergebnisse in der log-Datei vergleichst.

Ich habe schon gesehen, dass \scr@fnt@section selber nicht die Definition enthält. Auf die Variante hätte ich auch selber kommen können. :/ Vielen Dank Markus

Comments for "Schriften zurücksetzen" abonnieren