我正在研究下标以及如何格式化围绕它的各种事物。
因此,我想在下标表达式前面添加一个宏,这样我就可以访问下划线之前和之后的项目。
例如:
让它做到:
\smartind A_b
和...相同A_(b)
\smartind ALPHABET_b
和...相同ALPHABET_(b)
我觉得这是一份工作xparse
附言
出于兴趣,我最终将其做成了以下形式:https://codereview.stackexchange.com/questions/183255/a-smart-subscript-indexing-macro
答案1
您可以使用参数文本规范来\def
识别期望的确切模式;它的功能可能类似于xparse
的u{<token>}
参数规范:
\documentclass{article}
\def\smartind#1_#2{#1_{(#2)}}
\begin{document}
$A_b \quad \smartind A_b$
$AB_c \quad \smartind AB_c$
$ABC_{def} \quad \smartind ABC_{def}$
\end{document}
答案2
简单的例子就是把_
作为强制性参数吃掉
\usepackage{xparse}
\DeclareDocumentCommand{\smartind}{m m m}{
% \ifstrequal{#2}{_}{}{\errmessage{Expected underscore (not #2) between #1 and #3}}
% the above line requires etoolbox, uncomment it to assert that the _ is inplace
\ind{#1}{#2}
}
这对 来说可以工作\smartind A_b
,但你必须写\smartind {ALPHABET}_b
你真正追求的是直到说明符解析:
u
读取参数“直到”〈tokens〉
遇到,其中所需的〈tokens〉
作为说明符的参数给出:u{tokens}
\DeclareDocumentCommand{\smartind}{u{_} m}{
#1_{(#2)}
}
效果很好