Small Caps (FauxSC na verdade) com saída de \jobname/\today

Small Caps (FauxSC na verdade) com saída de \jobname/\today

Eu tenho usado "FauxSC" deSteven B. Segletese estou muito feliz com isso. Exceto uma coisa que não consigo resolver: fornecer texto normal como entrada está tudo bem, mas assim que for \today ou \jobname ou qualquer comando desse tipo (que acaba cuspindo texto), ele quebra com umConstante alfabética inadequada.

MWE acabou no original de Stevens, basta copiá-lo e colocar um \fauxsc{\today}.

Meu TeX, infelizmente, não é bom o suficiente para consertar isso. Acho que é a quebra do \ifnum, mas não sei como fazer com que ele assuma o valor do \today.

Qualquer ajuda seria ótima, obrigado!

Responder1

Você pode definir um \fauxscexppara os casos em que possui uma sequência de controle para expandir.

\documentclass{article}
\usepackage{fontspec}

\newcommand\fauxsc[1]{\fauxschelper#1 \relax\relax}
\def\fauxschelper#1 #2\relax{%
  \fauxschelphelp#1\relax\relax%
  \if\relax#2\relax\else\ \fauxschelper#2\relax\fi%
}
\def\Hscale{.83}\def\Vscale{.72}\def\Cscale{1.00}
\def\fauxschelphelp#1#2\relax{%
  \ifnum`#1>``\ifnum`#1<`\{\scalebox{\Hscale}[\Vscale]{\uppercase{#1}}\else%
    \scalebox{\Cscale}[1]{#1}\fi\else\scalebox{\Cscale}[1]{#1}\fi%
  \ifx\relax#2\relax\else\fauxschelphelp#2\relax\fi}
\newcommand{\fauxscexp}[1]{%
  \begingroup\edef\x{\endgroup\noexpand\fauxschelper#1 \relax\relax}\x
}

\begin{document}

Normal: \fauxsc{Small Caps}

Job name: \fauxscexp{\jobname}

Today: \fauxscexp{\today}

\end{document}

insira a descrição da imagem aqui

informação relacionada