框符的字符串表示

Wolfram 语言提供了一种简洁的方式来用字符串表示框符. 在将框符的设定作为普通文本进行导入和导出时,这种方式尤其方便.

生成一个代表 SuperscriptBoxInputForm 字符串.
In[1]:=
Click for copyable input
Out[1]=
创建一个 SuperscriptBox.
In[2]:=
Click for copyable input
Out[2]=
ToExpressionSuperscriptBox 解释成一个幂指数.
In[3]:=
Click for copyable input
Out[3]//FullForm=

重要的一点是区分表示原始框符的格式和表示框符意义的格式.

这对应于一个原始 SuperscriptBox.
In[4]:=
Click for copyable input
Out[4]=
这对应于 SuperscriptBox 代表的幂指数.
In[5]:=
Click for copyable input
Out[5]=
此处生成的表达式是一个幂.
In[6]:=
Click for copyable input
Out[6]//FullForm=
(input)原始框符
!(input)框符的意义

区分原始框符和其代表的表达式.

如果将一个 StandardForm 单元的内容复制到另一个如文本编辑器的程序中,Wolfram 系统将在必要时生成一个 形式. 这样做是为了当讲这个格式的内容重新复制回 Wolfram 系统中时,该 StandardForm 单元的原始内容会自动再次生成. 如果没有 ,则仅得到对应于这些内容的原始框符.

在选项的默认设置下,贴入 Wolfram 系统笔记本中的 格式自动显示成二维格式.

"(input)"一个原始字符串
"!(input)"含有框符的字符串

字符串中嵌入二维框件结构.

Wolfram 语言通常将出现在字符串内的 格式与其它的一系列字符一样对待. 通过插入 可以令 Wolfram 语言将这个格式视作它所代表的框符. 通过这种方式可以在普通字符串内嵌入框符结构.

Wolfram 语言把这当成一个普通字符串.
In[7]:=
Click for copyable input
Out[7]=
告诉 Wolfram 语言这个字符串含有框符.
In[8]:=
Click for copyable input
Out[8]=
可将框符与普通文本混合.
In[9]:=
Click for copyable input
Out[9]=
(box1,box2,)RowBox[box1,box2,]
box1^box2SuperscriptBox[box1,box2]
box1_box2SubscriptBox[box1,box2]
box1_box2%box3SubsuperscriptBox[box1,box2,box3]
box1&box2OverscriptBox[box1,box2]
box1+box2UnderscriptBox[box1,box2]
box1+box2%box3UnderoverscriptBox[box1,box2,box3]
box1/box2FractionBox[box1,box2]
@boxSqrtBox[box]
\@box1\%box2RadicalBox[box1,box2]
form` boxFormBox[box,form]
\*input构建来自 input 的框符

框符的输出格式.

Wolfram 语言要求用户给框符的任何输入格式被包括在 内. 在最外围的 内还可使用附加的 来进行分组.

这里使用普通括号表示分组.
In[10]:=
Click for copyable input
Out[10]//DisplayForm=
没有括号时,分成的组是不同的.
In[11]:=
Click for copyable input
Out[11]//DisplayForm=
对分组进行设定,但不像显式的括号一样被显示.
In[12]:=
Click for copyable input
Out[12]//DisplayForm=
里边的 构建了一个 RowBox.
In[13]:=
Click for copyable input
Out[13]=

当用户在 Wolfram 语言中敲入 作为输入时,首先发生的是, 被当作一个个单独的项. 当由包括在 内的输入构建框件时,也同样如此. 而在框件内部,每一项是以一个字符串的形式给出,而非其原始格式.

RowBox 中的 被分成单独的字符串.
In[14]:=
Click for copyable input
Out[14]//FullForm=
默认设置时, 周围的空格是忽略不计的.
In[15]:=
Click for copyable input
Out[15]//FullForm=
这里形成了两个嵌套的 RowBox 对象.
In[16]:=
Click for copyable input
Out[16]//FullForm=
即使给出的字符串不与一个完整的 Wolfram 语言表达式对应,所形成的还是相同的框件结构.
In[17]:=
Click for copyable input
Out[17]//FullForm=

序列内部,可以通过使用反斜杠标记如 等来设置某些类型的框符. 但对其它的框符,用户需要给出普通的 Wolfram 系统输入,以  作为开始.

构建一个 GridBox.
In[18]:=
Click for copyable input
Out[18]//DisplayForm=
构建一个 StyleBox.
In[19]:=
Click for copyable input
Out[19]//DisplayForm=

的行为实际上像一个换码:它允许用户即使在一个 序列内也能进入普通 Wolfram 语言语法. 用户在一个 后给出的输入自身也能够含有 序列.

可以对嵌套的 互换. 在 的外部需要显式引用.
In[20]:=
Click for copyable input
Out[20]//DisplayForm=
!(input)解释当前形式中的输入
!(form`input)使用指定形式解释输入

控制输入被解释的方式.

在一个 StandardForm 单元中,这将在 StandardForm 中被解释,产生一个乘积.
In[21]:=
Click for copyable input
Out[21]=
反斜杠反引号序列令 Wolfram 语言将其在 TraditionalForm 中被解释.
In[22]:=
Click for copyable input
Out[22]=

当用户将一个笔记本中的单元内容复制到文本编辑器等程序中时,通常不包括显式的反斜杠反引号序列. 但如果用户希望将所得到的重新复制到一个不同类型的单元中时,则需包括反斜杠反引号序列以确保所有的解释均正确.