![检查参数是否为数学表达式。将首字母大写的情况](https://linux22.com/image/384163/%E6%A3%80%E6%9F%A5%E5%8F%82%E6%95%B0%E6%98%AF%E5%90%A6%E4%B8%BA%E6%95%B0%E5%AD%A6%E8%A1%A8%E8%BE%BE%E5%BC%8F%E3%80%82%E5%B0%86%E9%A6%96%E5%AD%97%E6%AF%8D%E5%A4%A7%E5%86%99%E7%9A%84%E6%83%85%E5%86%B5.png)
在此示例中:
\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
$