Me gustaría redefinir un comando dentro de un encabezado de página que se genera usando scrheading
. La razón de esto es que el encabezado de la página debe estar en mayúsculas; sin embargo, el encabezado del capítulo contiene un comando personalizado que cambia eltamaño de fuente. Necesito deshacer este cambio de tamaño de fuente únicamente dentro del encabezado.
Aquí hay un 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}
El resultado esperado aquí sería que el encabezado de la página 2 se vea así:
En cambio, se ve así:
Como \itex
muestra el ejemplo, la \lowsc
macro se utiliza junto con \textsc
el estilo de una abreviatura en versalitas, pero con letras minúsculas intermitentes. Sin la \lowsc
macro, estos se verían demasiado grandes al lado de las letras minúsculas.
El \renewcommand*\lowsc
interior \headfont
parece no tener ningún efecto. Si uso \gdef
(o alguna \grenewcommand
macro personalizada) en su lugar, funciona. Sin embargo, eso redefine el comando.globalmente, de modo que los usos posteriores en el texto principal también cambien, lo cual no debería ser así. Esto me parece un problema de alcance, pero honestamente no sé por qué no se aplica mi macro redefinida (no globalmente).
Respuesta1
Debido a cómo lo definiste \lowsc
, la redefinición en el encabezado no se aplica a nada, porque lo que TeX ve en ese punto \lowsc
ya no es, sino \scalebox{0.8}{i}
.
Usar \DeclareRobustCommand
for \lowsc
resuelve el problema. Sin embargo, usaría un condicional.
\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}