小號大寫字母(實際上是 FauxSC),輸出來自 \jobname/\today

小號大寫字母(實際上是 FauxSC),輸出來自 \jobname/\today

我一直在使用“FauxSC”史蒂文·B·塞格萊斯我對此非常滿意。除了我無法解決的一件事:將普通文字作為輸入都很好,但是一旦它的 \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}

在此輸入影像描述

相關內容