在此示例中:
\documentclass{article}
\usepackage{xspace}
\newcommand{\pt}{\ensuremath{p_{T}}\xspace}
\newcommand{\capitalise}[1]{
% if string
\MakeUppercase #1
% if math expression
#1
}
\begin{document}
\capitalise{abc}
\capitalise{\pt}
\end{document}
\capitalise
如果参数是字符串,则应将其首字母大写;如果参数是数学表达式,则应保持参数不变。如何检查参数是否是数学表达式?
答案1
使用\text_titlecase:n
这个很简单
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\capitalise}{m}{\text_titlecase:n{#1}}
\ExplSyntaxOff
\newcommand{\pt}{\ensuremath{p_{T}}}
\begin{document}
\capitalise{abc}
\capitalise{\pt}
\end{document}
其工作原理是逐个扩展参数,然后检查“不可扩展”的结果以查看它们是否可以进行大小写更改。在数学模式材料的情况下,任何产生 的标记都会开始“不改变大小写”的方法,该方法通过匹配(或/对)$
停止。 AS扩展为插入,这一切都“按预期”工作。$
\(
\)
\ensuremath
$