我一直在使用“FauxSC”史蒂文·B·塞格莱特斯并且对它非常满意。除了一个我无法解决的问题:给它输入普通文本是没问题的,但只要输入 \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}