Versalitas (FauxSC en realidad) con salida de \jobname/\today

Versalitas (FauxSC en realidad) con salida de \jobname/\today

He estado usando "FauxSC" desdeSteven B. Segletesy estoy muy contento con ello. Excepto una cosa que no puedo resolver: darle texto normal como entrada está bien, pero tan pronto como su comando \today o \jobname o cualquier comando similar (que termina escupiendo texto), se rompe con unConstante alfabética incorrecta.

MWE terminó en el original de Stevens, solo cópielo y agregue \fauxsc{\today}.

Desafortunadamente, mi TeX no es lo suficientemente bueno para solucionarlo. Supongo que es la ruptura de \ifnum, pero no sé cómo hacer que tome el valor de \today.

¡Cualquier ayuda sería genial, gracias!

Respuesta1

Puede definir un \fauxscexppara los casos en que tenga una secuencia de control 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}

ingrese la descripción de la imagen aquí

información relacionada