Small Caps (на самом деле FauxSC) с выводом из \jobname/\today

Small Caps (на самом деле FauxSC) с выводом из \jobname/\today

Я использую "FauxSC" отСтивен Б. Сеглетеcи я им вполне доволен. За исключением одной вещи, которую я не могу решить: если вводить обычный текст, все нормально, но как только это \today или \jobname или любая другая команда (которая в итоге выплевывает текст), он прерывается сНеправильная буквенная константа.

MWE в оригинале Стивенса закончен, просто скопируйте его и вставьте \fauxsc{\today}.

Мой TeX, к сожалению, недостаточно хорош, чтобы это исправить. Думаю, это ломается \ifnum, но я не знаю, как заставить его принимать значение \today.

Любая помощь будет полезна, спасибо!

решение1

Вы можете определить \fauxscexpдля случаев, когда у вас есть контрольная последовательность для расширения.

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

введите описание изображения здесь

Связанный контент