小型大写字母(实际上是 FauxSC),输出自 \jobname/\today

小型大写字母(实际上是 FauxSC),输出自 \jobname/\today

我一直在使用“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}

在此处输入图片描述

相关内容