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:
Em vez disso, é assim:
Como \itex
mostra o exemplo, a \lowsc
macro é usada em conjunto com \textsc
para estilizar uma abreviatura em versalete, mas com letras minúsculas intermitentes. Sem a \lowsc
macro, elas pareceriam muito grandes ao lado das letras maiúsculas.
O \renewcommand*\lowsc
interior \headfont
parece 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 é \lowsc
mais, mas sim \scalebox{0.8}{i}
.
Usar \DeclareRobustCommand
for \lowsc
resolve 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}