检查参数是否为数学表达式。将首字母大写的情况

检查参数是否为数学表达式。将首字母大写的情况

在此示例中:

\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$

答案2

在此处输入图片描述

\documentclass{article}
\usepackage{xspace}
\usepackage[overload]{textcase}
\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}

相关内容