Wolfram mathematica 如何禁用Mathematica函数中的区分大小写功能?

Wolfram mathematica 如何禁用Mathematica函数中的区分大小写功能?,wolfram-mathematica,case,Wolfram Mathematica,Case,我想让mathematica对函数的第一个大写字母不敏感。例如,它接受“Plot”和“Plot”作为绘图函数。这不是对您问题的直接回答,我强烈建议您不要仅仅为了字母大小写而重新定义Mathematica函数 然而,当您转到编辑->首选项->界面时,您是否看到命令完成中有一个选项匹配情况 如果关闭此选项,则可以在笔记本中键入plot,并从自动完成中获得正确的plot。您只需按enter键,就可以插入正确的命令。我同意用户的看法:“您不想这样做。”通常的做法是以小写字母开头用户符号,这样既可以识别

我想让mathematica对函数的第一个大写字母不敏感。例如,它接受“Plot”和“Plot”作为绘图函数。

这不是对您问题的直接回答,我强烈建议您不要仅仅为了字母大小写而重新定义Mathematica函数

然而,当您转到编辑->首选项->界面时,您是否看到命令完成中有一个选项匹配情况

如果关闭此选项,则可以在笔记本中键入
plot
,并从自动完成中获得正确的
plot
。您只需按enter键,就可以插入正确的命令。

我同意用户的看法:“您不想这样做。”通常的做法是以小写字母开头用户符号,这样既可以识别用户符号,又可以防止与内置符号发生冲突。然而,您可以通过几种方式来实现这一点。一种方法是按照george的建议创建别名,例如

plot = Plot;
sin = Sin;

plot[sin[x], {x, 0, 6}]
这具有即使在包中也能工作的优点,因为它不依赖于前端。但是,由于这些原因,它在某些情况下会失败,例如:

evaluate = Evaluate;
Hold[evaluate[2 + 2]]
而“实”函数的行为如下所示:

Hold[Evaluate[2 + 2]]
要获得完全的等效性,尽管只在前端,您可以使用
$PreRead
。(.)您需要构建一个规则列表,用大写字符串替换每个小写符号的字符串形式。我将仅对
系统`
上下文中的所有符号执行此操作

With[{rules = Thread[ToLowerCase[#] -> #] & @ Names["System`*"]},
  $PreRead = # /. rules &
];
现在这两个例子都起作用了:

plot[sin[x], {x, 0, 6}]

hold[evaluate[2 + 2], 3 + 4]
后者产生:


对于一个特定的示例,您只需执行
plot=plot
。一般来说,我怀疑答案是“你不想那样做”,但你应该在mathematica.stackexchange.com上询问
With[{rules = Thread[ToLowerCase[#] -> #] & @ Names["System`*"]},
  $PreRead = # /. rules &
];
plot[sin[x], {x, 0, 6}]

hold[evaluate[2 + 2], 3 + 4]
Hold[4, 3 + 4]