Mathematica中的语法着色

500*_*500 12 wolfram-mathematica syntax-highlighting

如何用户定义的函数符号如f in

  • f[x_] = 2 x

或可变的符号,如乐透

  • lotto = Table[2, {10}];

自动着色?


在M8上的语法着色中,没有为此提供选项.

仅限本地变量或未分配值的全局符号.

Mr.*_*ard 15

这不是您要求的,但它可能对您有用.

您可以使用此方法按上下文突出显示符号:

SetOptions[$FrontEndSession, 
  AutoStyleOptions -> {"SymbolContextStyles" -> {"highlight`" -> Green}}
]

AppendTo[$ContextPath, "highlight`"];
Run Code Online (Sandbox Code Playgroud)

现在,当您在上下文中创建符号时highlight`,它将自动显示为绿色:

highlight`lotto ;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

并且由于highlight`附加了$ContextPath,之后符号可以明显地使用:

lotto
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


突出显示所有符号(变量)

如果您希望自动突出显示您创建的所有符号,请设置:

$Context = "highlight`"
Run Code Online (Sandbox Code Playgroud)

之后,您创建的所有符号都将属于上下文highlight`并将接收颜色.

新的意味着以前没有在会话中使用过的,或已经过Removed.

在我看来,实现这一点的更好方法是避免可能的"阴影"问题,可能是为Global`上下文本身设置突出显示.我没有考虑过这种情况的影响,但仅凭这一点就可以做到:

SetOptions[$FrontEndSession, 
  AutoStyleOptions -> {"SymbolContextStyles" -> {"Global`" -> Green}}
]
Run Code Online (Sandbox Code Playgroud)

使用提示

  • 上下文highlight`完全是任意的,您可以使用不同的颜色突出显示多个上下文.

  • 您可以为包的上下文着色,Units`以区分哪些符号属于该包.


WRe*_*ach 5

为这些变量赋值后,这些变量自动着色.在默认的Mathematica设置下,lotto分配值后,颜色会立即从蓝色变为黑色.严格地说,未分配的变量根据您在"首选项/外观/语法着色/其他/全局"符号中找不到的值设置而着色.

如果你正在寻找的是一种为全局符号分配不同颜色的方法,那么它的唯一定义就是自己的值,那么我相信你运气不好.据我所知,语法着色机制不区分自身值("变量赋值"),下值("函数定义")和上升值("表达式部分定义").