文本输入和输出
输入和输出形式 | Wolfram 语言的语法 |
输入和输出的工作过程 | 无内部定义的运算符 |
文本形式的表示 | 定义输出格式 |
文本形式的翻译 | 底层的输入输出规则 |
缩短输出 | 生成无结构的输出 |
面向字符串的输出格式 | 格式化输出 |
数字的输出格式 | Wolfram 语言中的网格、行和列 |
表与矩阵 | 要求输入 |
输出的样式和字体 | 消息 |
文本格式的框符表示 | 国际消息 |
框符的字符串表示 | 文件结构 |
字符串、框符和表达式之间的转换 |
FullForm[expr] | 表达式的内部形式 |
InputForm[expr] | 适于直接从键盘输入的形式 |
OutputForm[expr] | 仅用键盘字符的二维形式 |
StandardForm[expr] | Wolfram 系统笔记本中的默认格式 |
TraditionalForm[expr] | 传统的数学记号 |
TeXForm[expr] | 适合导出到 TeX 中的输出 |
MathMLForm[expr] | 适用于网上的 MathML 的输出 |
CForm[expr] | 适合导出到 C 中的输出 |
FortranForm[expr] | 适合导出到 Fortran 中的输出 |
one‐dimensional strings | InputForm , FullForm,等. |
two‐dimensional boxes | StandardForm , TraditionalForm,等. |
ToExpression[input] | 通过翻译字符串或字符盒创建一个表达式 |
FullForm | 显式函数记号 |
InputForm | 一维记号 |
StandardForm | 二维记号 |
ToExpression[input,form] | 假设 input 按指定的文本形式给出,试图创建一个表达式 |
Short[expr] | 用一行显示 expr 的缩略形式 |
Short[expr,n] | 用 n 行显示 expr 的缩略形式 |
Shallow[expr] | 显示 expr 的 “顶层” |
Shallow[expr,{depth,length}] | 显示 expr 中指定深度和长度的部分 |
StringForm["cccc``cccc",x1,x2,…] | 输出一个字符串,其中相继的 `` 用相继的 xi 替换 |
StringForm["cccc`i`cccc",x1,x2,…] | 输出一个字符串,其中每个 `i` 由对应的 xi 替换 |
Row[{expr1,expr2,…}] | 给出连接在一起的 expri 表达式的输出形式 |
Row[list, s] | 在连续元素之间插入 s |
Spacer[w] | 可用于 Row 的 w 个点的空格 |
Invisible[expr] | 由 expr 的物理尺寸决定的空格 |
Column[{expr1,expr2,…}] | 左对齐的列 |
Column[list,alignment] | |
Column[list,alignment,s] | 各元素间隔为 s 个x 高度(x-heights)的列 |
Defer[expr] | 给出 expr 的输出形式且保持不对 expr 进行计算 |
Interpretation[e,expr] | 以 e 的形式在输出中显示,但作为 expr 进行计算 |
ScientificForm[expr] | 按照科学记数法显示所有数 |
EngineeringForm[expr] | 按照工程记数法显示所有数(10 的方幂是3的倍数) |
AccountingForm[expr] | 按照标准会计记数法显示所有数 |
NumberForm[expr,tot] | 最多显示 tot 位近似于 expr 的实数 |
ScientificForm[expr,tot] | 使用最多有 tot 位的科学记数法 |
EngineeringForm[expr,tot] | 使用最多有 tot 位的工程记数法 |
选项名称
|
默认值
| |
DigitBlock | Infinity | 两分隔符之间一组数字的最大长度 |
NumberSeparator | {","," "} | 在小数点左边和右边的数字之间的空格位置要插入的字符串 |
NumberPoint | "." | 用作小数点的字符串 |
NumberMultiplier | "∖[Times]" | 在科学记数法中用作乘法记号的字符串 |
NumberSigns | {"-",""} | 用作正负数标记的字符串 |
NumberPadding | {"",""} | 用作左右填充符(padding)的字符串 |
SignPadding | False | 是否在符号后插入填充符 |
NumberFormat | Automatic | 产生数字最终格式的函数 |
ExponentFunction | Automatic | 决定是否使用指数的函数 |
PaddedForm[expr,tot] | 所有数字用 tot 位显示,不足时前面加空格 |
PaddedForm[expr,{tot,frac}] | 所有数字用 tot 位显示,小数点右边有 frac 位 |
NumberForm[expr,{tot,frac}] | 所有数字最多有 tot 位,其中小数点右边有 frac 位 |
Column[{expr1,expr2,…}] | expri 左对齐排在一列 |
BaseForm[expr,b] | 在 b 进制下显示所有数 |
PaddedForm[Column[list],tot] | 显示一列,所有数字可以填充至 tot 位 |
PaddedForm[Grid[list],tot] | 显示一个表格,所有数字可以填充至 tot 位 |
PaddedForm[Grid[list],{tot,frac}] | 对于所有的近似实数中,在小数点后面显示 frac 位 |
SpanFromLeft | 左边的元素横跨 |
SpanFromAbove | 上边的元素向下跨越 |
SpanFromBoth | 左边和上边的元素跨越 |
选项
|
缺省值
| |
Background | None | 使用何种背景颜色 |
BaselinePosition | Automatic | 如何与周围的文本基线对齐 |
BaseStyle | {} | 网格基本样式规格 |
Frame | None | 在哪里画网格框架 |
FrameStyle | Automatic | 框架样式 |
选项
|
缺省值
| |
Alignment | {Center,Baseline} | 水平和垂直对齐元素 |
Dividers | None | 在网格中何处画分割线 |
ItemSize | Automatic | 每个元素的宽度和高度 |
ItemStyle | None | 行列的样式 |
Spacings | {0.8,0.1} | 水平和垂直的间隔 |
选项
|
缺省值
| |
Alignment | {Center,Baseline} | 水平和垂直对齐项 |
Background | None | 使用何种背景颜色 |
BaseStyle | {} | 项的基本样式规格 |
Frame | None | 何处画边框线 |
FrameStyle | Automatic | 边框线的样式 |
ItemSize | Automatic | 每项的宽度和高度 |
多维数据格式化

选项名
|
缺省值
| |
TableDepth | Infinity | 表格中所包含的最大层数 |
TableDirections | {Column,Row,Column,…} | 每一维是否按行或列排列 |
TableAlignments | {Left,Bottom,Left,…} | 每一维中如何对齐元素 |
TableSpacing | {1,3,0,1,0,…} | 在每一维中加多少空格 |
TableHeadings | {None,None,…} | 怎样标记每一维的元素 |
选项
|
典型设置
| |
FontSize | 12 | 以打印机点数计的字符尺寸 |
FontWeight | "Plain" or "Bold" | 字符的粗细 |
FontSlant | "Plain" or "Italic" | 字符是否为斜体 |
FontFamily | "Courier"
,
"Times"
,
"Helvetica" | 字体类 |
FontColor | GrayLevel[0] | 字符颜色 |
Background | GrayLevel[1] | 字符的背景色 |
DisplayForm[boxes] | 表明 boxes 被显示的格式 |
"text" | 原样的文本 | |||||||||
RowBox[{a,b,…}] | 一行框符或字符串 a,b,… | |||||||||
GridBox[{{a1,b1,…},{a2,b2,…},…}] | ||||||||||
一个框符网
| ||||||||||
SubscriptBox[a,b] | 下标 ab | |||||||||
SuperscriptBox[a,b] | 上标 ab | |||||||||
SubsuperscriptBox[a,b,c] | 上下标 ![]() | |||||||||
UnderscriptBox[a,b] | 底标 ![]() | |||||||||
OverscriptBox[a,b] | 顶标 ![]() | |||||||||
UnderoverscriptBox[a,b,c] | 顶底标 ![]() | |||||||||
FractionBox[a,b] | 分式 ![]() | |||||||||
SqrtBox[a] | 平方根 ![]() | |||||||||
RadicalBox[a,b] | b 次方根 ![]() |
FrameBox[box] | 在 box 的周围加边框 |
GridBox[list,RowLines->True] | 在 GridBox 内的行间加线条 |
GridBox[list,ColumnLines->True] | 在列间加线条 |
GridBox[list,RowLines->{True,False}] | |
仅在第一行下面加线条 |
FormBox[boxes,form] | 用与指定格式有关的规则解释 boxes |
InterpretationBox[boxes,expr] | 将 boxes 当作表达式 expr 的表示形式 |
TagBox[boxes,tag] | 用 tag 引导 boxes 的解释 |
ErrorBox[boxes] | 指出错误并不再对 boxes 进行解释 |
选项
|
默认值
| |
Editable | Automatic | 是否允许对内容进行编辑 |
Selectable | True | 是否允许对内容进行选择 |
Deletable | True | 是否允许对框符进行删除 |
DeletionWarning | False | 是否在框符被删除时发出警告 |
BoxAutoDelete | False | 当内容修改后是否除去这个框符 |
StripWrapperBoxes | False |
∖(box1,box2,…∖) | RowBox[box1,box2,…] |
box1∖^box2 | SuperscriptBox[box1,box2] |
box1∖_box2 | SubscriptBox[box1,box2] |
box1∖_box2∖%box3 | SubsuperscriptBox[box1,box2,box3] |
box1∖&box2 | OverscriptBox[box1,box2] |
box1∖+box2 | UnderscriptBox[box1,box2] |
box1∖+box2∖%box3 | UnderoverscriptBox[box1,box2,box3] |
box1∖/box2 | FractionBox[box1,box2] |
∖@box | SqrtBox[box] |
\@box1\%box2 | RadicalBox[box1,box2] |
form∖` box | FormBox[box,form] |
\*input | 构建来自 input 的框符 |
ToString[expr,form] | 创建一个字符串,表示 expr 的指定文本形式 |
ToBoxes[expr,form] | 创建一个框符,表示 expr 的指定文本形式 |
ToExpression[input,form] | 通过将一个字符串或框件解释为指定文本形式的输入创建一个表达式 |
ToString[expr] | 使用 OutputForm 创建一个字符串 |
ToBoxes[expr] | 使用 StandardForm 创建一个框符 |
ToExpression[input] | 使用 StandardForm 创建一个表达式 |
InputForm | 对应于键盘输入的字符串 |
StandardForm | 对应于标准二维输入的字符串或框符(默认) |
TraditionalForm | 与传统数学记号相似的字符串或框符 |
ToExpression[input,form,h] | 创建一个表达式,然后由头部 h 封装 |
SyntaxQ["string"] | 确定一个字符串是否是语法正确的 Wolfram 语言输入 |
SyntaxLength["string"] | 测试从字符串开始多长的字符序列在语法上是正确的 |


prefix | !x | Not[x] |
postfix | x! | Factorial[x] |
infix | x+y+z | Plus[x,y,z] |
matchfix | {x,y,z} | List[x,y,z] |
compound | x/:y=z | TagSet[x,y,z] |
overfix | ![]() | OverHat[x] |
符号名的扩展 | x_
,
#2
,
e::s
, 等等.
|
函数应用变量 | e[e]
,
e@@e
, 等等.
|
与幂相关的运算 | √e
,
e^e
, 等等.
|
与乘法相关的运算
| ∇e
,
e/e
,
e⊗e
,
ee
, 等等.
|
与加法相关的运算 | e⊕e
,
e+e
,
e⋃e
, 等等.
|
关系型运算符 | e==e
,
e∼e
,
e⪡e
,
e⧏e
,
e∈e
, 等等.
|
箭头及向量运算 | e⟶e
,
e↗e
,
e⇌e
,
e⥓e
, 等等.
|
逻辑运算符 | ∀ee
,
e&&e
,
e∨e
,
e⊢e
, 等等.
|
模式和规则运算符 | e..
,
e|e
,
e->e
,
e/.e
, 等等.
|
纯函数运算符 | e& |
赋值运算符 | e=e
,
e:=e
, 等等.
|
复合表达式 | e;e |
x⊕y | CirclePlus[x,y] |
x≈y | TildeTilde[x,y] |
x∴y | Therefore[x,y] |
x↔y | LeftRightArrow[x,y] |
∇x | Del[x] |
x | Square[x] |
〈x,y,…〉 | AngleBracket[x,y,…] |


xy | Subscript[x,y] |
x+ | SubPlus[x] |
x- | SubMinus[x] |
x* | SubStar[x] |
x+ | SuperPlus[x] |
x- | SuperMinus[x] |
x* | SuperStar[x] |
x† | SuperDagger[x] |
![]() | Overscript[x,y] |
![]() | Underscript[x,y] |
![]() | OverBar[x] |
![]() | OverVector[x] |
![]() | OverTilde[x] |
![]() | OverHat[x] |
![]() | OverDot[x] |
![]() | UnderBar[x] |
Prefix[f[x],h] | 前缀形式 h x |
Postfix[f[x],h] | 后缀形式 x h |
Infix[f[x,y,…],h] | 中缀形式 x h y h… |
Prefix[f[x]] | 标准前缀形式 f@x |
Postfix[f[x]] | 标准后缀形式 x//f |
Infix[f[x,y,…]] | 标准中缀形式 x~f~y~f~… |
PrecedenceForm[expr,n] | 加括号具有 n 级优先权的对象 |
MakeBoxes[expr,form] | 按指定格式构造代表 expr 的框符 |
MakeExpression[boxes,form] | 构造与 boxes 对应的表达式 |

■ 将输入分解为记号. |
■ 去掉空格字符. |
■ 使用内部的优先级构造框符. |
■ 去掉 StyleBox 和其他不需要被解释的框符. |
■ 执行为 MakeExpression 定义的规则. |
Print[expr1,expr2,…] | 显示表达式 expri,中间无空格,但结尾换行 |
样式化输出(Styling Output)
菜单
| Style[] 选项 | Style[] 指令 |
格式 ▶ 尺寸 ▶ 14 | FontSize->14 | 14 |
格式 ▶ 字体颜色 ▶ 灰色 | FontColor->Gray | Gray |
格式 ▶ 字体效果 ▶ 粗体 | FontWeight->Bold | Bold |
格式 ▶ 字体效果 ▶ 斜体 | FontSlant->Italic | Italic |
格式 ▶ 背景颜色 ▶ 黄色 | Background->Yellow | |
格式 ▶ 字体 | FontFamily->"Times" | |
格式 ▶ 样式 ▶ Subsection | "Subsection" |
网格布局(Grid Layout)
将输出用作输入
特殊网格条目(Special Grid Entries)
框架和标签
其他注释
默认样式
默认选项
数学排版
使用框符语言(Box Language)
基本结构
这些结构可以分为三类:显示在笔记本中的排版结构,产生内容排列在网格上的图形函数,在网格内可以调整格式细节的结构.
网格系列
Grid[{{expr11,expr12,…},{expr21,expr22,…},…}] | |
将 exprij 放置于二维网格的对象 | |
Column[{expr1,expr2,…}] | 将 expri 排列成一列的对象,其中 expr1 在 expr2 之上,依此类推 |
Row[{expr1,expr2,…}] | 将 expri 排成一行、可能延续数行的对象 |
图形网格系列
GraphicsGrid[{{g11,g12,…},…}] | 生成一个图形,其中 gij 布局在一个二维网格中 |
GraphicsColumn[{g1,g2,…}] | 生成一个图形,gi 布局在一列中,其中 g1 位于 g2 上方,依此类推 |
GraphicsRow[{g1,g2,…}] | 生成一个图形,gi 布局在一行中 |
嵌入结构系列
Item[expr,options] | 显示 expr 内容,指定适用于包含 expr 区域的选项 |
SpanFromLeft | 指定该位置被其左方的内容占用 |
SpanFromAbove | 指定该位置被其上方的内容占用 |
SpanFromBoth | 指定该位置被其上方和左方的内容占用 |
功能类别
Grid 和相关的结构允许大量的外观自定义,只需很少的语法. 下表显示所支持的功能,在后面的章节会有详细的说明.
选项的语法
调整网格的外观存在着各种各样的选项. 本节介绍了这些选项共同的常用语法. 此语法提供了一种不仅对整个网格分配选项值,而且对单个的行、列、甚至项分配选项值.
对于许多选项的整体语法,诸如 Background 是基于像 Background->{specx,specy} 这种形式,其中 specx 是模块语法包含不同列的值,specy 包含不同行的值.
spec | 在所有项应用 spec |
{specx} | 在连续水平位置应用 specx |
{specx,specy} | 在连续水平和垂直位置应用 speck |
{specx,specy,rules} | 基于 i,j 在数组的位置给出项的规则 |
这两种方法有不同的长处,详见 "使用规则" 和 "使用列表".
使用规则
规则提供了一个直接和可读的方法来提供一个具体的行或列的特定值.
规则还可以用于对特定的网格构件或分区域赋值. 但是请注意,尽管在概念上是类似的,这下面的语法和先前所讨论的 specx 和 specy 是不同的.
规则可以有效地指定值的例外. 然而,当用手动指定网格的每块的值时,效率较低.
为了获得重复模式,建议您使用 下一节 讲述的列表语法.
使用列表
给出列表的序列值是一种紧密方便的方式,可以指定相邻的行或列的大量选项值.
因为列表中的位置与网格位置相对应,指定中间位置的单个值需要给出其前面的所有值. 若要更直接地获得这些,使用本节 “使用规则” 所描述的规则.
同时使用
最好是两全其美,使用列表语法指定网格的重复部分,同时使用规则语法指定例外.
{s1,s2,…,sn} | 使用 s1 到 sn;然后是缺省值 |
{{c}} | 所有情况下使用 c |
{{c1,c2}} | 在 c1 和 c2 间变换 |
{{c1,c2,…}} | 循环使用所有的 ci |
{s,{c}} | 使用 s,然后重复使用 c |
{s1,{c},sn} | 使用 s1,然后重复使用 c,最后使用 sn |
{s1,s2,…,{c1,c2,…},sm,…,sn
}
| 开头使用 si 第一个序列,然后循环使用 ci,结尾使用 si 的剩余序列 |
{s1,s2,…,{},sm,…,sn} | 开头使用 si 第一个序列,结尾使用 si 的剩余序列 |
{i1->v1,i2->v2,…} | 指定在位置 ik 使用什么 |
{spec,rules} | 使用 rules 覆盖 spec 中的规则 |
列、行、 缝隙和项
Grid 和 GraphicsGrid 遵循描述网格不同部分的相同的约定. Column、GraphicsColumn 和 GraphicsRow 遵循相同的约定,但只处理两维中的一维. Row 不参与这种约定.
选项集合
下表列出了可以处理的选项,没有选项适用于所有的结构. 从下表中可以看出在给定的结构中可以使用哪些选项.
注意 Row 没有采纳任何选项.
先列后行
要记住选项的语法,最重要的一步是要知道,首先指定列的具体值,然后是指定行的值.
在 Wolfram 语言中,带有横向设置 h 和垂直设置 v 的选项指定为 opt->{h,v}. ImageSize 和 PlotRange 是两个常用的建立该约定的选项.
在网格中,这些横向和纵向设置分别对应列和行的值. 这是因为列水平堆叠,因此其属性:如宽度和位置,是与水平方向相对应的. 行是垂直叠放,其属性是与纵向相对应的.
缝隙
与属性相关的许多 Grid 选项最终与网格中的一列,行或项相关.
Dividers 和 Spacings 的语法与其他选项一样. 对于一个在特定方向上有 n 个项的网格,Dividers 和 Spacings 可以指定元素之间的 n+1 个间隔,在第一个元素之前开始和在最后一个元素之后结束.
项
描述最细致的是项,在网格中的每个项都可以自己的值,如 Background、 Alignment 和 Frame.
分割线和框架
Dividers | 在行或列间画分割线 |
Frame | 围绕着网格区域画框架 |
FrameStyle | 用于线的整体样式 |
Frame 总是在封闭区域的四面画线,Dividers 允许更低层次的控制.
分割线和框架的样式
优先级
当样式给定有冲突时,Dividers 优先于 Frame,而他们优先于 FrameStyle. Item 定义的样式优先级最高.
对齐和位置
背景和样式
普通常识
虽然单个元素可以有自己的背景,但当您把所有元素放在一起时,结果会很糟糕.
Grid 和相关的函数把背景放在包含这些元素的全部项的组合上.
重叠背景设置的优先级
跨越和嵌套
尺寸和间隙
网格中的尺寸
Grid 通常不修改其内容的大小. 此外,默认情况下,行和列设计成只需容纳内容即可.
在上面的例子中,第二行比第一行长,第二列比第一列窄,但元素的尺寸没有改变.
如果在网格中的元素交互或动态变化,整个网格的大小将自动适当调整.
一个有用的例外是, Button 将自动填充可用空间.
ItemSize 可以用来覆盖缺省的设置.
ItemSize 的单位是排版单位:“exs” 和 “ems”.
也可以使用 Scaled 来指定封闭区的一小部分的宽度.
网格中的换行
GraphicsGrid 中的尺寸
默认情况下,GraphicsGrid 将返回一个有相同大小项的网格.
和相同的 Grid 例子比较,并没有改变任何一个整体大小或纵横比.
GraphicsGrid 不支持 ItemSize 选项,但是支持 ImageSize.
Input[] | 读入一个表达式输入 |
InputString[] | 读入一个字符串输入 |
Input["prompt"] | 产生提示,然后读入表达式 |
InputString["prompt"] | 产生提示,然后读入字符串 |
Quiet[expr] | 计算 expr 不显示任何消息 |
Quiet[expr,{s1::tag,s2::tag,…}] | 计算 expr 不显示指定的消息 |
Off[s::tag] | 关闭消息使其不显示 |
On[s::tag] | 打开消息 |


s::tag | 给出消息内容 |
s::tag=string | 设置消息内容 |
Messages[s] | 显示与 s 相关的消息 |







$MessageList | 在一个计算过程中产生的消息列表 |
MessageList[n] | 在一个 Wolfram 语言进程中处理第 n 个输入行时产生的消息列表 |


Check[expr,failexpr] | 当计算 expr 时没有产生消息,则返回值 expr; 否则返回 failexpr |
Check[expr,failexpr,s1::t1,s2::t2,…] | 仅检查消息 si::ti |



$Language="lang" | 设定使用的语言 |

symbol::tag | 消息的默认形式 |
symbol::tag::Language | 特定语言的消息 |
相关指南
-
▪
- 底层笔记本结构 ▪
- 底层笔记本编程 ▪
- 数学排版 ▪
- 表达式和字符串间的转换 ▪
- Wolfram 语言语法 ▪
- 符号的表示形式 ▪
- 笔记本格式和样式 ▪
- 网格和表