问题:
是否可以定义一个\myFunction
不需要分隔符的函数,例如,将其自身名称后的第一个字符串视为其参数?例如\myFunctionfoo
(或者可能\myFunction foo
被解析为\myFunction{foo}
?
我只熟悉使用\newcommand{}[]{}
函数定义的命令,我相信它会自动将参数包装在其中{ }
;但是,我知道一些处理简单情况的命令的功能(有争议的:D),就像\frac12
功能等效的一样\frac{1}{2}
,所以我希望可以定义一些行为类似的东西。
语境:
我正在使用一个将 KaTeX 与其他编程语言集成的平台,我们正在寻找清理代码的方法,使其更具可读性。目前,我们正在获得很多嵌套调用不同的语言,例如
$\left\{ \frac{\eval{foo}\eval{bar}}{2}\right\}^{\eval{baz}}$
其中\eval{foo/bar/baz}
返回由其他编程语言之一生成的一些适合 tex 的字符串。
这些表达是到处这使得花括号的数量显著增加,并使代码越来越难读。注意:这只是一个例子,为了清楚起见,实际情况涉及对的调用要多得多\eval{}
;基本上所有不是 KaTeX 命令的东西都会以这种方式包装,所以它很快就会变得丑陋。
现在,95%的调用\eval{ }
实际上只是调用一个变量或函数(即自然范围有限的东西),所以括号实际上不是必要的,因为参数毫无疑问是下一个字符串(无论\myFunction<string>
(\myFunction <string>
NB 空格在和后<string>
)。
注意:我们还将维护该函数的完全分隔版本,这只是为了明确的调用,主要是对变量名的调用。
答案1
好吧,如果你还可以添加空间,那就很容易了:
\def\myFunction#1 {[something to do]#1}
。
TeX 期望参数以空格结尾(在本例中)。当然,用法是\myFunction foo bar
,参数是foo
。