\jobname/\today からの出力による小文字大文字 (実際には FauxSC)

\jobname/\today からの出力による小文字大文字 (実際には FauxSC)

私は「FauxSC」をスティーブン・B・セグレテスかなり満足しています。解決できないことが1つあります。通常のテキストを入力すると問題ありませんが、\todayや\jobnameなどのコマンド(テキストを出力するもの)を入力すると、不適切なアルファベット定数

MWE は Stevens のオリジナルにあります。それをコピーして \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}

ここに画像の説明を入力してください

関連情報