笔记本操作

作为 Wolfram 语言表达式的单元
与 Wolfram 语言中其他对象类似,笔记本中的单元和笔记本本身都是用 Wolfram 语言表达式表示的. 在标准的笔记本前端中,用 显示表达式 命名可以观察与任何单元对应的 Wolfram 语言表达式的内容.
Show Expression menu item
显示形式和 Wolfram 语言内部表达式之间的联系
Ctrl+* or Ctrl+8 (between existing cells)
提供按 Wolfram 语言表达式形式输入单元的对话框
在笔记本前端中处理 Cell 表达式.
笔记本前端所显示的一个单元.

1.gif

与这个表达式对应的 Wolfram 语言表达式.

2.gif

Cell[contents,"style"]
具有指定风格的单元
Cell[contents,"style",options]
有额外指定选项的单元
Cell[contents,"style1","style2",,options]
具有一些风格的单元
笔记本中对应于单元的 Wolfram 语言表达式.
在给定的笔记本中,有一个风格集合决定单元的外观和特性. 一般地,风格的名称反映了具有该风格的单元在笔记本中所起的作用.
"Title"
笔记本标题
"Section"
节标题
"Subsection"
小节标题
"Text"
常用文本
"Input"
Wolfram 语言输入
"Output"
Wolfram 语言输出
笔记本中定义的一些典型单元风格.
具有不同风格的单元.

3.gif

对应于这些单元的表达式.

4.gif

"Section""Text" 等风格定义了与单元有关的各种选项设置. 在这些单元中,用户明确设置的选项可以覆盖这些选项.
一个单元的表达式,其中的选项是灰度底色,并对此单元加一个框.

5.gif

该单元在笔记本中的显示.

6.gif

选项
默认值
CellFrameFalse
单元是否加框
BackgroundAutomatic
单元底色的颜色选择
EditableTrue
是否能对单元内容进行编辑
TextAlignmentLeft
单元中的文本如何对齐
FontSize12
文本字形的尺寸
CellTags{}
与单元相关的标记
大量单元选项中的一部分.
在 Wolfram 语言标准的笔记本前端中,有几种途径去改变单元选项. 有一些菜单项来改变尺寸和文本颜色,但一般要使用前端内部设置的选项检查. 这一般是在 格式 菜单中调用 选项设置 菜单项来实现的.
用菜单改变某一选项设置.
用选项检查观察和修改选项.
编辑与单元所对应的表达式的内容.
改变具有特定风格的全部单元设置.
前端中处理单元的方式.
有时候仅需要改变与一特点单元有关的设置. 但更常见的则是要改变与笔记本中具有某一风格的全部单元有关的选项. 为此,先用 编辑样式表 命令在前端中打开一个与笔记本有关的风格页面,然后在这个风格页面中修改单元的选项.
CellPrint[Cell[]]
在当前笔记本中插入一个单元
CellPrint[{Cell[],Cell[],}]
在当前笔记本中插入一系列单元
在笔记本中插入单元.
在当前笔记本中插入一个节单元.

7.gif

插入一个带框的文本单元.

8.gif

CellPrint 允许用户取出一个初级的 Cell 表达式并插入当前笔记本中. CellPrint 所创建的单元使用输入分组,并且如果输入被重新计算的话,这些单元将被覆盖.
作为 Wolfram 语言表达式的笔记本
Notebook[{cell1,cell2,}]
包含一系列单元的笔记本
Notebook[cells,options]
有指定选项的笔记本
对应于笔记本的表达式.
一个简单的 Wolfram 系统笔记本.

9.gif

对应于这个笔记本的表达式.
Notebook[{
Cell["Section heading", "Section"],
Cell["Some text.", "Text"],
Cell["More text.", "Text"]}]
与每个单元一样,Wolfram 系统中的笔记本也有选项. 在标准笔记本前端中,可以用选项设置来观察和修改这些选项.
选项
默认值
WindowSize{nx,ny}
用来显示笔记本的窗口尺寸
WindowFloatingFalse
该窗口是否位于其他窗口之上
WindowToolbars{}
窗口上端包括哪些工具栏
ShowPageBreaksFalse
是否显示打印笔记本时的分页
CellGroupingAutomatic
笔记本中怎样对单元分组
Evaluator"Local"
用什么内核进行笔记本中的计算
SaveableTrue
笔记本是否应该被保存
大量笔记本选项中的一部分.
使用选项设置 Saveable->False 的笔记本总是可以使用 另存为 菜单项保存,但是不对 保存 做出响应,并且当关闭的时候,也不提示保存.
除笔记本选项外,还可以在笔记本层设置任意单元选项. 这样的处理使 Wolfram 系统将该选项设置作为笔记本中所有单元的默认设置. 对各个单元内可以直接设置选项去改变这些默认的设置.
对应于一共笔记本的表达式. 在窗口的上侧有一个带标尺的工具栏.
Notebook[{
Cell["Section heading", "Section"],
Cell["Some text.", "Text"]},
WindowToolbars->{"RulerBar"}]
笔记本在前端中看起来的样子.

10.gif

设置笔记本中所有单元的默认底色.
Notebook[{
Cell["Section heading", "Section"],
Cell["Some text.", "Text"]},
Background->GrayLevel[.7]]
所有单元有灰底色.

11.gif

在 Wolfram 系统之外看对应于笔记本文件的原始内容时,所看到的就是表示这个笔记本的表达式的文本形式. 所有产生 Wolfram 系统笔记本的另一途径就是构造一个合适的表达式,并将其放在一个文件中.
在 Wolfram 系统生成的笔记本文件中,包含一些额外的信息,这使得 Wolfram 系统可以很快地读入这个文件. 这些信息包含在 Wolfram 语言注解中,注解的标记为 (**),不影响存在文件中的实际表达式.
NotebookOpen["file.nb"]
在前端打开一个笔记本文件
NotebookPut[expr]
在前端建立一个对应于 expr 的笔记本
NotebookGet[obj]
得到一个与前端打开的笔记本对应的表达式
在前端通过内核设置笔记本.
将一个笔记本表达式写到文件 sample.nb 内:
从这个文件读入笔记本表达式:
sample.nb 打开作为前端的一个笔记本:

12.gif

在前端中用 NotebookOpen 设置了笔记本以后,就可以像其他笔记本一样对其进行交互式的操作. 但使用NotebookOpen 时,文件中必须明显地含有一个笔记本表达式. 用 NotebookPut 可以将在内核中产生的笔记本表达式立即作为一个笔记本显示在前端中.
内核中的一个笔记本表达式:
用这个表达式在前端建立一个笔记本:

13.gif

NotebookGet 能得到对应于一个返回到内核的 NotebookObject 笔记本:
通过内核操作笔记本
在 Wolfram 语言笔记本中进行简单运算时,用标准 Wolfram 语言前端交互功能是非常方便的. 但要进行复杂和系统的运算时,最好要使用内核.
Notebooks[]
所有打开的笔记本集合
Notebooks["name"]
所有打开的有指定名的笔记本集合
InputNotebook[]
用于输入的笔记本
EvaluationNotebook[]
对这个函数正进行计算的笔记本
ButtonNotebook[]
可能包含启动这个计算的按钮的笔记本
给出对应笔记本的函数.
在 Wolfram 语言内核中,前端中打开的笔记本用形式为 NotebookObject[fe,id] 的笔记本对象来表示. NotebookObject 中的第一个变量是该笔记本所在的前端 FrontEndObject,第二个变量是给出这个笔记本唯一的序列号.
名为 Example.nb 的笔记本:

14.gif

在前端中找出对应的笔记本对象:
得到内核中对应于该笔记本的表达式:
"Text" 代替每一个出现的 "Section"
在前端中产生一个修改后的新笔记本:

15.gif

NotebookGet[obj]
得到对应于笔记本对象 obj 的笔记本表达式
NotebookPut[expr,obj]
expr 作为对应于笔记本对象 obj 的表达式
NotebookPut[expr]
expr 作为对应于当前所选笔记本的表达式
在内核和前端之间交换笔记本表达式.
对一个笔记本进行大量操作时,用 NotebookGet 将整个笔记本作为内核的一个表达式是非常方便的. 但是对笔记本进行一系列小操作时,最好还是把笔记本放在前端,然后从内核向前端发出一系列命令来指出进行怎样的操作.
在 Wolfram 语言中,笔记本前端中能交互进行的任何工作也可以从内核向前端发送适当的指令进行.
Options[obj]
给出对应于笔记本对象 obj 的笔记本的所有选项集合
Options[obj,option]
给出一个选项的设置
AbsoluteOptions[obj,option]
即使当实际设置是 Automatic 时给出绝对选项值
CurrentValue[obj,option]
给出并且设置 option 的值
SetOptions[obj,option->value]
设置选项的值
笔记本选项的查找与设置.
对当前选择的笔记本给出 WindowSize 选项设置:
改变屏幕上当前所选笔记本的尺寸:

16.gif

另一方面,可以使用 CurrentValue 直接获得 WindowSize 的选项值:
CurrentValue 使用简单的赋值来改变选项:

17.gif

在任何打开的笔记本中,前端总是保持当前的选择,这个选择由一个单元中的文本区域组成,或者是由这个单元组成. 通常这个选择在屏幕上是由一个高亮度形式表明. 这个选择也可以在文本的两个字符之间,或者在两个单元之间,这时其在屏幕上由两个竖直或水平的插入杠来表明.
可以用内核中的指令来修改所打开笔记本中的当前选择.
SelectionMove[obj,Next,unit]
移动当前选择使其成为具有指定类型的下一单位
SelectionMove[obj,Previous,unit]
移到上一单位
SelectionMove[obj,After,unit]
移动到具有指定类型的当前单位的后面
SelectionMove[obj,Before,unit]
移动到当前单位之前
SelectionMove[obj,All,unit]
将当前选择扩展到覆盖具有指定类型的整个单位
笔记本中移动当前选择.
Character
单个字符
Word
词或其他语言符号
Expression
完全的子表达式
TextLine
文本行
TextParagraph
文本段
GraphicsContents
图形内容
Graphics
图形
CellContents
单元内容
Cell
完整单元
CellGroup
单元组
EvaluationCell
与当前计算有关的单元
ButtonCell
与启动计算按钮相关的单元
GeneratedCell
由当前计算产生的单元
Notebook
完整的笔记本
指定选择中的单位.
一个简单笔记本:

18.gif

定义 nb 为对应于当前所选笔记本的笔记本对象:
将笔记本中当前选择移到下一个词:

19.gif

将选择扩充到整个单元:

20.gif

将选择放在整个笔记本的后面:

21.gif

NotebookFind[obj,data]
将当前选择移到笔记本中下一次出现的指定数据
NotebookFind[obj,data,Previous]
移到前一次出现的指定数据
NotebookFind[obj,data,All]
使当前选择覆盖所有出现的指定数据
NotebookFind[obj,data,dir,elems]
按照方向 dir 在每一个单元的指定元素中查找
NotebookFind[obj,"text",IgnoreCase->True]
在文本中不区分大小写字母
查找笔记本的内容.
将当前选择移到前一个词 cell 出现的位置:

22.gif

由于 字母没有在当前笔记本中出现,所以返回的是 $Failed,选择没有移动:

24.gif

CellContents
每个单元的内容
CellStyle
每个单元的风格名
CellLabel
每个单元的标记
CellTags
与每个单元有关的标志
{elem1,elem2,}
几类元素
NotebookFind 可能查找的单元元素.
在设置大笔记本时,插入一些通常不显示的记号是十分方便的,这些记号给单元加标记,使得他们能用 NotebookFind 进行查找. 可以在前端交互地设置标志,也可以明确对单元设置选项 CellTags.
NotebookLocate["tag"]
在当前笔记本中确定和选择具有指定记号的单元
NotebookLocate[{"file","tag"}]
必要时打开另一笔记本
笔记本中单元全局定位.
NotebookLocate 是在笔记本中沿着超链接前进时 Wolfram 语言调用的一个潜在函数. 菜单项 插入 超链接 将适当的 NotebookLocate 设置为特定超链接按钮文本的一部分.
NotebookWrite[obj,data]
在一个笔记本中当前选择位置写入 data
NotebookApply[obj,data]
data 写入一个笔记本,把当前选择插入 data 中第一次出现 的位置
NotebookDelete[obj]
在笔记本中删除当前选择内容
NotebookRead[obj]
得到一个笔记本中与当前选择对应的表达式
笔记本中的读和写.
NotebookWrite[obj,data] 与笔记本前端中的 Paste 运算类似. 用 data 替换笔记本中的当前选择. 若当前选择是一个单元时,NotebookWrite[obj,data] 将用 data 替换这个单元. 若当前选择位于两个单元之间时,NotebookWrite[obj,data] 就产生一个或一些适当的新单元.
选择了文本中一个词的笔记本:

25.gif

用新文本替换所选词:

26.gif

将当前选择移到这个笔记本的第一个单元之后:

27.gif

在笔记本的第一个单元之后插入一个文本单元:

28.gif

将笔记本中的下一个单元作为当前选择:

29.gif

读取当前选择,将其作为内核的一个表达式:

30.gif

NotebookWrite[obj,data]data 替换当前选择. 但在设置面板时,先将当前选择插入 data 的某一位置对其修改往往是很方便的. 这可以选定占位符和 NotebookApply 来实现. 在 data 第一次出现字符 "" 的位置,该字符的输入方法是 [SelectionPlaceholder]EscsplEscNotebookApply 就用当前选择去替换这个字符.
一个简笔记本,其当前选择是一个单元的内容:

31.gif

用包含其前一个形式拷贝的字符串替换当前选择:

32.gif

SelectionEvaluate[obj]
对当前选择进行计算
SelectionCreateCell[obj]
产生一个仅包含当前选择的新单元
SelectionEvaluateCreateCell[obj]
计算当前选择并产生一个单元放置结果
SelectionAnimate[obj]
激活当前选择中的图形
SelectionAnimate[obj,t]
激活图形
当前选择的计算.
将当前选择作为整个单元:

34.gif

计算当前选择:

35.gif

SelectionEvaluate 从笔记本选取内容并将其送往内核进行计算. SelectionEvaluate 总是覆盖以前选取的内容,但使用 SelectionCreateCell 等函数可以保持所产生形式序列的记录,这与标准 Wolfram 语言进程一样.
将当前选择作为整个单元:

36.gif

产生一个新单元,并将当前选择复制到其中:

37.gif

Factor 把当前单元的内容包含起来:

38.gif

计算当前单元的内容,产生一个新单元以给出结果:

39.gif

NotebookWriteSelectionEvaluate 等函数默认将当前选择放在笔记本中所插入的内容之后. 明确地用SelectionMove 能移动选择. 但是在 NotebookWriteSelectionEvaluate 等函数中使用另外的变量也可指定任务完成后当前选择所在的位置.
NotebookWrite[obj,data,sel]
data 写进笔记本,用 sel 指定当前选择
NotebookApply[obj,data,sel]
用原当前选择替换 写出 data,然后用 sel 指定当前选择
SelectionEvaluate[obj,sel]
计算当前选择,并用 sel 指定新的当前选择
SelectionCreateCell[obj,sel]
产生一个仅包含当前选择的新单元,产生用 sel 指定新的当前选择
SelectionEvaluateCreateCell[obj,sel]
计算当前选择,为结果产生一个新单元,并用 sel 指定新的当前选择
新的当前选择的确定和运算.
After
紧跟所插入的内容(默认)
Before
在所插入的内容之前
All
所插入内容本身
Placeholder
所插入内容中第一个
None
保持当前选择不变
新当前选择的指定.
一个空笔记本:

40.gif

在笔记本中写入 10!,并将其作为当前选择:

41.gif

及计算当前选择,为其结果产生新单元,并将整个结果结果作为当前选择:

42.gif

FactorInteger 包含当前选择:

43.gif

计算当前选择,将当前选择放在结果之前:

44.gif

在当前选择中插入另外的内容:

45.gif

Options[obj,option]
找出完整笔记本的一个选项值
Options[NotebookSelection[obj],option]
找出当前选择的值
SetOptions[obj,option->value]
设置完整的笔记本的一个选项值
SetOptions[NotebookSelection[obj],option->value]
设置当前选择的值
为整个笔记本和当前选择寻找和设置选项.
将当前选择作为一个完整的单元:

46.gif

对当前选择的这个完整单元加框:

47.gif

CreateWindow[]
产生一个新笔记本
CreateWindow[options]
产生一个具有指定选项的笔记本
NotebookOpen["name"]
打开一个已有的笔记本
NotebookOpen["name",options]
打开一个具有指定选项的笔记本
SetSelectedNotebook[obj]
选择一个指定的笔记本
NotebookPrint[obj]
打印一个笔记本
NotebookPrint[obj,"file"]
将一个笔记本的 PostScript 版本输出到一个文件
NotebookPrint[obj,"!command"]
将一个笔记本的 PostScript 版本送到一个外部命令
NotebookSave[obj]
将笔记本的当前版本存入一个文件
NotebookSave[obj,"file"]
将笔记本存为一个给定文件名的文件
NotebookClose[obj]
关闭一个笔记本
整个笔记本的操作.
调用 CreateWindow[] 时,屏幕上出现一个空笔记本.
执行 SetSelectedNotebookNotebookOpen 等指令时,就是让 Wolfram 语言改变所看到的窗口. 在NotebookOpenCreateWindow 中使用选项设置 Visible->False 可以处理笔记本,但不将其显示在屏幕上.
通过内核操作前端
$FrontEnd
当前使用的前端
Options[$FrontEnd,option]
前端全局选项的设置
AbsoluteOptions[$FrontEnd,option]
选项的绝对设置
SetOptions[$FrontEnd,option->value]
在前端重设选项
CurrentValue[$FrontEnd, option]
返回选项值,当用于赋值的左边时,允许设置选项.
在前端操作全局选项.
像单元和笔记本一样,完整的 Wolfram 系统前端有各种选项供你从内核操作和查看.
给出当前使用的前端的对应对象:
给出笔记本文件前端当前所使用的目录:
选项
缺省值
NotebookBrowseDirectory
(取决于系统)
打开和保存笔记本文件的缺省目录
NotebookPath
(取决于系统)
当试图打开笔记本时的搜索路径
Language"English"
文本的缺省语言
MessageOptions
(设置列表)
如何处理各种帮助和警告消息
Wolfram 系统前端的一些全局选项.
NotebookWrite 可以从键盘向前端输入任何普通文本. 用 FrontEndTokenExecute 可以从内核发送任何前端能执行的指令,这些指令包括菜单项和控制序列.
FrontEndTokenExecute["name"]
前端执行一个命名的指令
在前端执行一个已命名的指令.
"Indent"
所有选定的行缩进一个 tab 键
"NotebookStatisticsDialog"
显示当前笔记本的统计数据
"OpenCloseGroup"
一个单元组的打开和关闭切换
"CellSplit"
在当前插入点将一个单元分为二个
"DuplicatePreviousInput"
产生一个新单元,其是上边最近的一个输入单元的复制
"FindDialog"
调出 查找 对话框
"ColorSelectorDialog"
调出 颜色设置 对话框
"GraphicsAlign"
对齐所选择的图形
"CompleteSelection"
完成当前选择的指令名
一些可以给予前端的已命名的指令,这些指令一般与菜单项相对应.
前端令牌
通过前端令牌,用户可以执行通常情况下使用菜单才能实现的内核命令. 前端令牌对于编写操作笔记本的程序特别方便.
FrontEndToken 是一个内核命令,确定其变量为前端令牌. FrontEndExecute 是一个将其变量发送到前端来执行的内核命令. 例如,下面命令创建一个新的笔记本.
FrontEndExecute 可以采用列表作为其自变量,允许在单一的计算过程中执行多个令牌. 当用户计算下面的命令时,前端创建一个新的笔记本,并且把剪贴板的内容粘贴到笔记本中.

简单和合成前端令牌

前端令牌分为两类:简单令牌和具有参数的合成令牌.

简单令牌

对于简单令牌,FrontEndToken 可以具有一个或者两个变量.
如果 FrontEndToken 具有一个变量,令牌就对输入笔记本进行操作. 下面的例子使用前端令牌 "Save". 结果与使用文件 保存 相同.
在两个变量的情况下,FrontEndToken 的变量必须是一个 NotebookObject 并且是一个前端令牌. 例如,要保存包含当前计算的笔记本,FrontEndToken 的第一个变量是笔记本对象 EvaluationNotebook,而第二个变量是前端令牌 "Save".
通过使用命令 FrontEndTokenExecute[token],用户可以执行一个简单、单变量的前端令牌. 这与FrontEndExecute[FrontEndToken[token]] 等价.
例如,下面的命令将保存输入笔记本.

合成令牌

合成令牌具有一个令牌参数,以控制他们某些方面的行为. 对于一个合成令牌,FrontEndToken 的三个变量必须是NotebookObject、前端令牌和选中的令牌参数.
例如,这里把选中的笔记本保存为普通文本.
在前端直接执行笔记本指令
在执行 NotebookWrite[obj,data] 等指令时,向笔记本中插入数据的实际操作是在前端进行的. 但为了估算原来的指令和构造送向前端的适当请求,还是要使用内核的. 不过,前端可以直接执行一定量的指令,而不需涉及内核.
NotebookWrite[obj,data]
在内核执行的 NotebookWrite 版本指令
FrontEnd`NotebookWrite[obj,data]
在前端直接执行的 NotebookWrite 版本指令
区分指令的内核和前端版本.
Wolfram 语言区分在内核执行的指令和前端直接执行的指令的基本方式是使用上下文. 内核指令通常在 System` 上下文中,而前端指令通常在 FrontEnd` 上下文中.
FrontEndExecute[expr]
expr 发送到前端执行
把表达式发送到前端执行.
一个空笔记本:

48.gif

使用内核指令向笔记本写数据:

49.gif

这些指令在内核中什么都不做:

50.gif

一旦将送到前端时,就向笔记本写入数据:

51.gif

在书写操纵笔记本的精细复杂的程序时,这些程序必须在内核执行但对于通过简单按钮所进行的运算,可以在前端直接执行所需要的所有指令,甚至不需要运行内核.
单元结构
Cell[contents,"style"]
有特殊风格的单元
Cell[contents,"style1","style2",]
有多个风格的单元
Cell[contents,"style",options]
有额外选项设置的单元
对应于单元的表达式.
包含一个文本单元和一个 Wolfram 系统输入单元的笔记本:

52.gif

与这些单元对应的表达式:

53.gif

包含其内有 Wolfram 系统输入文本的单元的笔记本:

54.gif

对应于该单元的表达式. 这个 Wolfram 系统输入是在文本内的一个单元:

55.gif

"text"
纯文本
TextData[{text1,text2,}]
不同样式或包含单元的文本
BoxData[boxes]
格式化的 Wolfram 系统表达式
GraphicsData["type",data]
图形或声音
OutputFormData["itext","otext"]
InputFormOutputForm 产生的文本
RawData["data"]
显示表达式 产生的无格式表达式
CellGroupData[{cell1,cell2,},Open]
一个打开的单元组
CellGroupData[{cell1,cell2,},Closed]
一个关闭的单元组
StyleData["style"]
定义样式的单元
表示不同形式单元内容的表达式.
选项设置的风格与继承
Global
完整前端和打开的笔记本
当前笔记本
当前单元的风格
特定的当前单元
Selection
单元中的选择
选项设置的层次等级.
包含三个单元的笔记本:

56.gif

对第三个单元设置 CellFrame->True 时的结果:

57.gif

对整个笔记本全局地设置 CellFrame->True 时的效果:

58.gif

设置 "Section" 样式时的结果:

59.gif

在标准笔记本前端中,用 选项设置 菜单项可以设置可以层次的选项. 如果未在某一层设置选项,则其值总会从上层继承下来. 例如,当一个单元没有设置 CellFrame 选项时,则所用的值就会从单元样式或包含这一单元的笔记本的设置中继承下来.
于是,在整个笔记本层设置了 CellFrame->True 后,则在没有用单元样式或单元本身的设置明确覆盖他时,这个笔记本的所有单元都加框.
对笔记本选择基本默认格式
选择屏幕样式和显示样式环境
编辑笔记本的指定样式
在笔记本中设置样式的方式.
可以为笔记本选择不同的基本默认样式以适应不同的目的. 在标准的笔记本前端中,可以在 样式表 菜单中选择样式或使用 编辑样式表 菜单项.
"StandardReport"
日常工作和报告样式
"NaturalColor"
具有多种色彩的介绍日常工作的样式
"Outline"
概述思想的样式
"Notepad"
使用纯文本文件工作的样式
一些基本默认样式的典型选择.
在每个基本默认选择中,所给出的样式会变化. 例如,Notepad 样式表中提供了有限数目的不同样式,因为他是设计用来对纯文本文件进行工作的.
使用 StandardReport 默认样式的一个笔记本:

60.gif

选项
默认值
ScreenStyleEnvironment"Working"
屏幕显示的样式环境
PrintingStyleEnvironment"Printout"
打印输出的样式环境
指定样式环境的选项.
在一个基本默认样式中,Wolfram 系统使用两种不同的样式环境:一种用于屏幕显示,另一种用于打印机输出. 者两种用于屏幕和打印机的不同样式环境可以分别用来优化设置低分辨率的屏幕显示和高分辨率的打印机.
"Working"
屏幕工作环境
"Presentation"
屏幕演示环境
"Condensed"
屏幕最大显示密度环境
"Slideshow"
展示幻灯片的屏幕环境
"Printout"
纸打印环境
样式环境的典型设置.
Wolfram 系统实际上用样式定义单元来定义样式. 这些单元可以放在另外的样式定义笔记本中,也可以包含在一个笔记本的选项中. 不论哪一种情形,都可以在标准笔记本前端中用 编辑样式表 菜单项访问他们.
单元选项
Wolfram 语言提供了大量的单元选项,这些选项都可以在前端中通过 选项设置 菜单项访问. 他们可以在单个单元层上直接设置,也可以在高层设置而让单个单元去继承.
选项
典型默认值
CellDingbatNone
用于强调单元的标志
CellFrameFalse
单元是否加框
BackgroundNone
单元背景色
ShowCellBracketTrue
是否显示单元括号
Magnification1.
单元显示的缩放率
CellOpenTrue
是否显示单元的内容
一些基本的单元显示选项.
用所有选项的默认设置产生一个 "Section" 样式单元:

61.gif

产生一个有标志和修改了背景选项的单元:

62.gif

选项
典型默认值
CellMargins{{7,0},{4,4}}
按打印点计算单元内容周围的边幅
CellFrameMargins8
单元框内的边幅
CellElementSpacings
list of rules
单元元素布局的细节
CellBaselineBaseline
怎样对齐文本中内嵌单元的基准线
单元位置选项.
选项 CellMargins 用来指定单元四周的边幅. 在前端选择了 工具条 标尺 菜单项后,可以根据所显示的标尺用边幅定位交互式地设置水平边幅.
当一个选项涉及单元的四边时,Wolfram 语言中的约定形式是 {{left,right},{bottom,top}}. 给出了 topbottom 的非零值后,CellMargins 就指定一个单元上面和下面应该留出的间隙. 这些值的单位总是打印点.
在单元左侧留出50点的空间,而在上下各留20点的空间:

63.gif

Wolfram 语言笔记本的每个方面几乎都能用一些选项控制. 更细致的方面一般由 CellElementSpacings聚合选项处理. 这些选项的设置是一系列 Wolfram 语言规则,他们为子选项序列指定值. 这些子选项名一般是字符串,而不是符号.
给出与 CellElementSpacings 有关子选项的设置:
在 Wolfram 语言中可将单元嵌入文本块中. 选项 CellBaseline 决定这些内嵌单元在竖直方向怎样与周围文本对齐. 与 GridBaselinePosition 选项相同,选项 CellBaseline 指定单元的基线.
一个包含内嵌公式的单元,公式的基线与周围文本的基线对齐:

64.gif

在这个单元中,公式的底部与周围文本的基线对齐:

65.gif

CellBaseline->Bottom 设置指定对齐方式:

66.gif

选项
典型默认值
CellLabel""
单元标签
ShowCellLabelTrue
是否显示单元标签
CellLabelAutoDeleteTrue
单元修改后是否删除标签
CellTags{}
一个单元的标志
ShowCellTagsFalse
是否显示的标志
ConversionRules{}
外部转化规则
与单元相关的辅数据选项.
除了单元的实际内容外,将各种辅助数据与单元相联系是非常有用的.
在一个标准的 Wolfram 语言进程中,包含相继内核输入和输出单元的标记形式是 In[n]:=Out[n]=. 选项ShowCellLabel 决定是否显示这样的标记. CellLabelAutoDelete 确定一个单元的内容修改后是否删除单元标记. 这样做可以保证 In[n]:=Out[n]= 标记仅与没有修改过的内核输入和输出相联系.
单元标志一般用来联系单元的关键词或其他属性,可以用 NotebookFind 等函数进行搜索. Wolfram 语言笔记本中超链接的目标可以用这些单元标志来实现.
选项 ConversionRules 用来给出包含 "TeX"->data 等条目的集合,这些条目指定一个单元的内容怎样转化为外部形式. 对于那些从外部格式转化为 Wolfram 语言笔记本中的单元,要保存该单元的原始形式时,这种转化形式是非常有用的.
选项
典型默认值
DeletableTrue
能否在前端交互式地删除一个单元
CopyableTrue
能否拷贝一个单元
SelectableTrue
能否选择一个单元的内容
EditableTrue
是否能编辑一个单元的内容
DeployedFalse
单元中的用户界面是否能被激活
单元交互式运算选项.
选项 DeletableCopyableSelectableEditable 用来控制单元内的交互运算. 在笔记本层将这些选项设置为 False 后,就可以保护该笔记本内的所有单元.
Deployed 允许用户把单元内的内容作为用户界面来处理. 在用户界面中,标签是不能被选择的,并且控制了按钮是可用但不可修改的. Deployed 也可以在一个单元的特定元素上设置,使得例如 Manipulate 的输出总是被部署即使该单元具有设置为 FalseDeployed 选项.
选项
典型默认值
Evaluator"Local"
用于计算的内核名
EvaluatableFalse
单元内容是否被计算
CellAutoOverwriteFalse
产生新输出时是否覆盖以前的输出
GeneratedCellFalse
该单元是否从内核产生
InitializationCellFalse
打开笔记本时是否自动计算该单元
计算选项.
Wolfram 语言可以对笔记本中的每个单元指定不同的计算方式. 但是常常是在笔记本层设置选项 Evaluator,这一般是用前端中的 内核配置选项 菜单项完成.
选项 CellAutoOverwrite 一般设置为 True,表示 Wolfram 语言输出风格. 这意味着重新计算一个输入块时,Wolfram 语言将自动删除前一次从该输入块产生的输出,并用新输出覆盖.
当一个外部请求在前端产生一个单元(而不是通过前端的交互运算产生的单元)时就设置选项 GeneratedCell. 例如,任何由内核技术输出产生的单元将具有 GeneratedCell->True. 由低层函数产生并设计用来直接操作笔记本的单元,如 NotebookWriteNotebookApply,不具有 GeneratedCell 选项设置.
选项
典型默认值
PageBreakAboveAutomatic
是否恰在一个单元之前换页
PageBreakWithinAutomatic
是否在某一单元内换页
PageBreakBelowAutomatic
是否恰在一个单元后换页
GroupPageBreakWithinAutomatic
是否在一个单元组内换页
打印单元时的换页控制选项
在屏幕上显示一个笔记本时可以连续滚动他,但在打印一个笔记本时就要决定是否换页. 将换页选项设置为 Automatic 时,Wolfram 语言就在必要时换页,设置为 True 时意味着总要换页,而设置为 False 时意味着总不换页.
使用 PageBreakAbovePageBreakBelow 选项的换页设置也决定了在一个幻灯片中页面之间的停顿. 当创建一个幻灯片时,用户通常使用具有特定名称风格的单元来决定每个幻灯片从什么位置开始. 这种命名风格将具有某一种换页选项设置.
文本和字体选项
选项
典型默认值
PageWidthWindowWidth
页宽
TextAlignmentLeft
怎样对齐文本行
TextJustification0
允许文本行伸展多少
HyphenationFalse
是否用连字符连接
ParagraphIndent0
每段第一行缩进多少打印点
文本格式的一般选项.
对没有明确换行符的大文本块,Wolfram 系统将文本块分成文本行序列. 选项 PageWidth 指定每行的宽度.
WindowWidth
屏幕窗口宽度
PaperWidth
打印时的页宽
Infinity
无限宽度(无换行)
n
用打印点给出的确切页宽
设置单元和笔记本中的 PageWidth 选项.
TextAlignment 选项指定文本中的相继行怎样对齐. 由于 Wolfram 系统在空格或标点处对文本分行,所有通常各行长短不一. 变换的长度使文本的边界不整齐. 但是 Wolfram 系统允许对文本相继行的空隙进行调节以便各行长度大致相同. TextJustification 设置给出 Wolfram 系统允许额外增加的空隙比例. TextJustification->1 为全调整,其使得文本的所有行调整到相同的长度.
Left
左对齐
Right
右对齐
Center
居中
x
x 处对齐,其值从 -1+1 变化
设置 TextAlignment 选项.
选项为 TextAlignment->LeftTextJustification->0 的文本:

67.gif

用了 TextAlignment->Center 后,该文本居中:

68.gif

TextJustification->1 调节词间的距离,使各行左、右边均对齐:

69.gif

TextJustification->0.5 减少了不整齐程度,但并没有使左、右边界都对齐:

70.gif

用了 Hyphenation->True,文本使用连字符连接:

71.gif

在 Wolfram 系统笔记本中输入文本块时,Wolfram 系统把明显的换行符当作分段符处理. 选项 ParagraphIndent 指定每段第一行缩进多少. 将 ParagraphIndent 选项设置为负值时,就是让各段的第一行突出到其他行的左侧之外.
LineSpacing->{c,0}
留出的距离使得每行的总高度是其内容高度的 c
LineSpacing->{0,n}
每行的总高度恰是 n 个打印点
LineSpacing->{c,n}
每行总高度是内容高度的 c 倍再加 n 个打印点
ParagraphSpacing->{c,0}
每段开始前额外留出 c 倍字体高度的距离
ParagraphSpacing->{0,n}
每段开始前额外留出恰好 n 个打印点的距离
ParagraphSpacing->{c,n}
额外留出的距离为字体高度的 c 倍再加 n 个打印点
文本中的行距选项.
默认设置是 LineSpacing->{1,1} 的文本,这对相邻行间额外插入1个打印点的距离:

72.gif

选用 LineSpacing->{1,5} 时,文本就较松散:

73.gif

LineSpacing->{2,0} 使得文本行距加倍:

74.gif

LineSpacing->{1,-2} 时,文本排得很紧:

75.gif

选项
典型默认值
FontFamily"Courier"
所用字体族
FontSubstitutions{}
用于替换的字体名集合
FontSize12
字符高度的最大值
FontWeight"Bold"
所用字符的粗细度
FontSlant"Plain"
所用字符的斜度
FontTracking"Plain"
字符的水平伸缩
FontColorGrayLevel[0]
字符颜色
BackgroundGrayLevel[1]
字符的背景色
字体选项.
"Courier"
text like this
"Times"
text like this
"Helvetica"
text like this
一些典型的字体名.
FontWeight->"Plain"
text like this
FontWeight->"Bold"
text like this
FontWeight->"ExtraBold"
text like this
FontSlant->"Oblique"
text like this
字体选项设置.
Wolfram 系统中可以非常仔细地给出所用字形的描述. 但有时在使用的计算机系统中没有所需字体的组合和变化,这时,Wolfram 系统就找出与其最接近的字体. 有 FontPostScriptName 等附加选项,这些选项设置可以帮助 Wolfram 系统找到合适的字体. 另外,还可以把 FontSubstitutions 设置为一个规则集合,由此给出试用字体名的替换.
常用文本可使用多种字体. 但对一些特殊字符(甚至对希腊字母),可用的字体不多. Wolfram 系统包含了支持其所使用的各种特殊字符的字体. 有三种类型的字体:普通(如Times)、单空(如Courier)和无衬线(如Helvetica).
对给出的文本字体,Wolfram 系统选择尽量与其匹配的字体. 在设置 FontProperties 选项时,对"FontSerifed""FontMonospaced" 给出规则可帮助 Wolfram 系统选择匹配. 也可以对 "FontEncoding" 给出规则明确指定每个字符所用的字体.
表达式输入和输出选项
选项
典型默认值
AutoIndentAutomatic
回车符输入后是否缩进
DelimiterFlashTime0.3
匹配的定界符输入后闪烁的秒数
ShowAutoStylesTrue
是否显示句法结构等的自动风格变化
ShowCursorTrackerTrue
光标位置跳跃时是否用椭圆点去指出其踪迹
ShowSpecialCharactersTrue
当输入 ] 时是否用一个特殊字符去代替 [Name]
ShowStringCharactersTrue
输入字符串时是否显示 "
SingleLetterItalicsFalse
单字母符号是否为斜体
ZeroWidthTimesFalse
是否用零宽度字符表示乘法
InputAliases{}
允许 EscnameEsc 别名
InputAutoReplacements{"->"->"",}
输入时自动替换的字符串
AutoItalicWords{}
自动排位斜体的词
LanguageCategory"NaturalLanguage"
一个单元拼写校队和连字符用的语言范畴
交互输入表达式选项.
当一个单元使用 TraditionalForm 时一般就设置 SingleLetterItalics 选项.
StandardForm 默认值输入的一个表达式:

76.gif

SingleLetterItalics->TrueZeroWidthTimes->True 在一个单元中输入的同一表达式:

77.gif

Wolfram 语言中常用特殊字符有许多别名. InputAliases 可以给更多的特殊字符或其他类型的 Wolfram 语言输入定义别名. 形如 "name"->expr 的规则决定 EscnameEsc 应该在输入时立即被 expr 替换.
别名用明确的 Esc 字符定界. 选项 InputAutoReplacements 指定一些类型的输入序列即使设有明显的定界符也应该被立即替代. 例如,在默认设置下,-> 立即被 替换. 可以用形如 "seq"->"rhs" 的规则去指定输入中出现的 seq 立即用 rhs 替换.
"NaturalLanguage"
英语等语言
"Mathematica"
Wolfram 语言输入
"Formula"
数学公式
None
不用拼写校对或连字符连接
控制拼写校对和连字符的 LanguageCategory 设置.
LanguageCategory 选项告诉 Wolfram 语言单元内容的类型. 这决定怎样进行拼写和结构检查,以及怎样使用连字符.
GridBox[data,opts]
给出用于某个网格盒的选项
StyleBox[boxes,opts]
给出用于 boxes 中所有盒子的选项
Cell[contents,opts]
给出用于 contents 中所有盒子的选项
Cell[contents,GridBoxOptions->opts]
给出 contents 中所有 GridBox 对象的默认设置
指定表达式显示选项的例子.
"文本输入和输出" 中讨论的相同,Wolfram 语言提供了如何显示表达式的许多选项. 用StyleBox[boxes,opts] 能将选项用到盒子的集合中. 在 Wolfram 语言中,能用于 StyleBox 的选项可以用于一个完整的单元 Cell 对象,甚至可用于一个完整的 Notebook. 例如,BackgroundLineIndent 等选项既可以用于StyleBox 对象,也可以用于完整的单元.
GridBox 等选项仅用于某些特殊类型的盒子. 这些选项在需要时最好在每个 GridBox 中分别给出. 但有时要指定默认设置,使得某一个单元中出现的所有 GridBox 对象能继承. 这可以通过把这些默认设置定义为整个单元选项GridBoxOptions 的值来实现.
对名为 XXXBox 型的盒子,Wolfram 语言有一个单元选项 XXXBoxOptions,可以用来给出这类盒子选项的默认设置. 通过定义 XXX 风格,采取选项的盒子类型也可以在一个样式表中具有他们的选项集合. Wolfram 语言具有的样式表定义了许多这样的风格.
笔记本选项
选项设置 菜单交互式的改变选项.
使用内核的 SetOptions[obj,options].
CreateWindow[options] 产生具有指定选项的新笔记本.
改变笔记本选项的方式.
创建一个笔记本,并显示在具有细框的 40x30 窗口中:
选项
典型默认值
StyleDefinitions"Default.nb"
用于笔记本的基本样式表
ScreenStyleEnvironment"Working"
用于屏幕显示的样式环境
PrintingStyleEnvironment"Printout"
用于打印的样式环境
笔记本样式选项.
当对于特定笔记本给出样式定义时,Wolfram 语言允许用户或者指向另一个笔记本,或者明确包含定义样式的Notebook 表达式.
选项
典型默认值
CellGroupingAutomatic
如何在笔记本中对于单元进行分组
ShowPageBreaksFalse
是否显示打印笔记本时的分页位置
NotebookAutoSaveFalse
在每次输出后,是否自动保存笔记本
笔记本一般选项.
使用 CellGrouping->Automatic,单元将自动基于样式分组:

79.gif

使用 CellGrouping->Manual,用户必须手动对单元进行分组:

80.gif

选项
典型默认值
DefaultNewCellStyle"Input"
笔记本中所产生新单元的默认样式
DefaultDuplicateCellStyle"Input"
从已有单元拷贝所产生单元的默认样式
指定笔记本中所产生单元默认样式的选项.
Wolfram 语言中可以在笔记本层定义单元选项,这就可以在笔记本中指定选项的全局默认值.
选项
典型默认值
EditableTrue
笔记本中是否能对单元进行编辑
SelectableTrue
是否可以选择单元
DeletableTrue
是否可以删除单元
ShowSelectionTrue
是否用高亮度显示当前选项
BackgroundGrayLevel[1]
笔记本所用的背景色
Magnification1
笔记本的大小
PageWidthWindowWidth
单元内容的宽度
经常在笔记本层设置的几个单元选项.
一个在笔记本层设置 Background 选项的笔记本:

81.gif

选项
典型默认值
VisibleTrue
窗口是否可以在屏幕看见
WindowSize{Automatic,Automatic}
窗口宽度和高度的打印点数
WindowMarginsAutomatic
屏幕显示时窗口周围的边幅
WindowFrame"Normal"
窗口框线的样式
WindowElements{"StatusArea",}
窗口中包含的元素
WindowTitleAutomatic
窗口标题
WindowFloatingFalse
该窗口是否总放在其他窗口之上
WindowClickSelectTrue
在该窗口点击时是否就选择了
DockedCells{}
指定窗口上面docked区域内容的单元列表
笔记本窗口的特征.
WindowSize 决定一个窗口的大小;WindowMargins 决定窗口在屏幕上的位置. 设置 WindowMargins->{{left,right},{bottom,top}} 以像素形式指定屏幕上在该窗口四周的边幅. 一般是明确地设置两个边幅;其余两个是 Automatic 的,这些边幅是根据所使用的屏幕尺寸决定的.
WindowClickSelect 是决定窗口是否与面板同样工作的主要选项. 面板通常是具有内容基于其他窗口工作的窗口,而不是在自身进行选择的窗口. 面板也普遍具有其他选项设置集合如 WindowFloating->TrueWindowFrame->"Palette".
DockedCells 允许用户指明需要位于窗口之上并且从来不滚动出屏幕的内容. DockedCells 选项的典型应用是顶一个一个自定义的工具条. 许多默认样式表具有定义在某些环境中用来对幻灯片演示和编辑程序包文件的 DockedCells 选项.
"Normal"
通常的窗口
"Palette"
面板窗口
"ModelessDialog"
无模式对话框窗口
"ModalDialog"
形式对话框窗口
"ThinFrame"
具有细边框的窗口
"Frameless"
无边框窗口
"Generic"
具有一般边界的窗口
WindowFrame 的典型选项设置.
Wolfram 语言中有不同类型的窗口. 在不同的计算机系统中一个窗口的显示可能有细微的区别,但是总的形式是相同的. WindowFrame 指定窗口边界的类型. WindowElements 给出窗口中所包含的元素的集合.
"StatusArea"
显示状态信息的区域,例如从 StatusArea 选项得到的区域
"MagnificationPopUp"
通常的缩放弹出菜单
"HorizontalScrollBar"
水平滚动条
"VerticalScrollBar"
竖直滚动条
WindowElements 集合中的一些典型元素.
一个有状态区域和水平移动条的窗口,但没有放大弹出菜单的竖直移动条:

82.gif

前端的全局选项
在标准笔记本前端中,可以设置许多 Wolfram 系统全局选项. 默认情况下,这些选项的值保存在一个偏好文件中,当重新运行 Wolfram 系统时就自动再次使用. 这些选项包含可以用偏好设置对话框生成的设置.
style definitions
新笔记本使用的默认样式定义
file locations
搜索笔记本和系统文件的目录
data export options
如何用各种格式输出数据
character encoding options
如何对特殊字符编码
language options
文本使用的语言
message options
如何处理 Wolfram 系统产生的信息
dialog settings
对话框中的选择
system configuration
对特定计算机系统的私有选项
前端全局选项的一些类型.
可以用 Options[$FrontEnd,name] 从内核访问前端全局选项. 但通常在前端使用选项设置去交互式地访问这些选项.