Redefinir comando dentro do cabeçalho da página

Redefinir comando dentro do cabeçalho da página

Gostaria de redefinir um comando dentro de um cabeçalho de página gerado usando scrheading. A razão para isso é que o cabeçalho da página deve estar em letras maiúsculas; no entanto, o cabeçalho do capítulo contém um comando personalizado que altera otamanho da fonte. Preciso desfazer essa alteração no tamanho da fonte apenas dentro do cabeçalho.

Aqui está um 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}

A saída esperada aqui seria que o cabeçalho na página 2 se parecesse com isto:

esperado

Em vez disso, é assim:

real

Como \itexmostra o exemplo, a \lowscmacro é usada em conjunto com \textscpara estilizar uma abreviatura em versalete, mas com letras minúsculas intermitentes. Sem a \lowscmacro, elas pareceriam muito grandes ao lado das letras maiúsculas.

O \renewcommand*\lowscinterior \headfontparece não ter efeito. Se eu usar \gdef(ou alguma macro personalizada \grenewcommand), funciona. No entanto, isso redefine o comandoglobalmente, para que os usos subsequentes no texto principal também sejam alterados, o que não deveria ser. Isso parece um problema de escopo para mim, mas honestamente não sei por que minha macro redefinida (não globalmente) não é aplicada.

Responder1

Devido à forma como você definiu \lowsc, a redefinição no cabeçalho não se aplica a nada, porque o que o TeX vê naquele ponto não é \lowscmais, mas sim \scalebox{0.8}{i}.

Usar \DeclareRobustCommandfor \lowscresolve o problema. Eu usaria uma condicional, no entanto.

\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}

insira a descrição da imagem aqui

informação relacionada