Befehl im Seitenkopf neu definieren

Befehl im Seitenkopf neu definieren

Ich möchte einen Befehl innerhalb eines Seitenkopfes neu definieren, der mit generiert wurde scrheading. Der Grund dafür ist, dass der Seitenkopf komplett in Großbuchstaben sein sollte; der Kapitelkopf enthält jedoch zufällig einen benutzerdefinierten Befehl, der denSchriftgröße. Ich muss diese Änderung der Schriftgröße nur in der Kopfzeile rückgängig machen.

Hier ist ein MWE:

\documentclass{scrreprt}

\usepackage[markcase=lower]{scrlayer-scrpage}
\usepackage{graphics}
\usepackage{hyperref}

\newcommand*\lowsc[1]{\texorpdfstring{\protect\scalebox{0.8}{#1}}{#1}}

\pagestyle{scrheadings}
\automark[chapter]{chapter}
\renewcommand*\headfont{%
    \scshape%
    \renewcommand*\lowsc[1]{##1}}

\newcommand\itex{\lowsc{i}\textsc{tex}}

\begin{document}
\chapter{\itex{} test}

\clearpage
Some text. \itex{}.
\end{document}

Die erwartete Ausgabe wäre hier, dass die Kopfzeile auf Seite 2 folgendermaßen aussieht:

erwartet

Stattdessen sieht es so aus:

tatsächlich

Wie das \itexBeispiel zeigt, wird das \lowscMakro in Verbindung mit verwendet, um \textsceine Abkürzung in Kapitälchen, aber mit dazwischenliegenden Kleinbuchstaben darzustellen. Ohne das \lowscMakro würden diese neben den Kapitälchen zu groß wirken.

Das \renewcommand*\lowscdarin \headfontscheint keine Wirkung zu haben. Wenn ich stattdessen \gdef(oder ein benutzerdefiniertes \grenewcommandMakro) verwende, funktioniert es. Das definiert den Befehl jedoch neuglobal, sodass nachfolgende Verwendungen im Haupttext ebenfalls geändert werden, was nicht der Fall sein sollte. Das sieht für mich nach einem Scoping-Problem aus, aber ich bin ehrlich gesagt völlig ratlos, warum mein (nicht global) neu definiertes Makro nicht angewendet wird.

Antwort1

Aufgrund Ihrer Definition \lowschat die Neudefinition im Header keine Auswirkungen, da TeX an dieser Stelle nicht \lowscmehr sieht, sondern \scalebox{0.8}{i}.

Die Verwendung von \DeclareRobustCommand„for“ \lowsclöst das Problem. Ich würde jedoch einen Bedingungssatz verwenden.

\documentclass{scrreprt}

\usepackage[markcase=lower]{scrlayer-scrpage}
\usepackage{graphics}
\usepackage{hyperref}

\newif\ifinheader
\DeclareRobustCommand\lowsc[1]{%
  \ifinheader
    #1%
  \else
    \texorpdfstring{\scalebox{0.8}{#1}}{#1}%
  \fi
}

\pagestyle{scrheadings}
\automark[chapter]{chapter}
\renewcommand*\headfont{%
    \scshape\inheadertrue
}

\newcommand\itex{\lowsc{i}\textsc{tex}}

\begin{document}
\chapter{\itex{} test}

\clearpage
Some text. \itex{}.
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen