How to| 创建一个可计算文档格式(CDF)的文件
可计算文档格式(CDF)文件通过一个公共格式所提供的广泛分布,为充分利用 Mathematica 语言的能力与灵活性提供了丰富的部署方法. 作为 Mathematica 8 的一项内置功能,您可以直接将您的工作笔记本、自定义格式的论文和文章、或专用应用程序的开发工作流程保存为 .cdf 文件. Mathematica 中的任何计算都可以成为可与用户交互的对象,使您更清晰地阐明您的概念提供. 并且,您无需再为创建只供 Wolfram CDF Player 查看的文档作特殊考虑,笔记本的全部功能都可以显示与打印.
可计算文档格式的文件可以基于现有的笔记本创建,也可以或从头开始创建. 任何能够放到 Mathematica 笔记本中的内容都可以放到这类文件中.
创建 .cdf 文件的最简单方法是从菜单中选择 文件 ► 新建 ► FreeCDF (.cdf):
正如打开一个新的笔记本一样,这时将弹出一个新的空白窗口. 您可以像在 Mathematica 笔记本中一样在该窗口中添加内容.
Mathematica 笔记本与 .cdf 文件的主要不同体现于当您在 CDF Player 中查看文档时对互动的允许程度. 笔记本文件(扩展名为 .nb 的文件)可在 CDF Player 中作为静态文档查看,但任何 .cdf 文件中的 Manipulate 对象在 CDF Player 中都是完全互动的.
例如,如果将下面的输出放到一个 .cdf 文件中,通过 CDF Player 阅读该文档的用户将可以通过移动滑块与之互动:
| In[2]:= |
| Out[2]= | Play Animation ▪![]() |
动态与静态内容可以在 .cdf 文件中自由混合. 比如,您可以给该互动界面加一个标题:
然而,以这种方式创建的 .cdf 文件中的所有内容并不一定都是互动的. 更多信息,请参见".cdf 文件中的互动性".
也可采用两种方式将打开的笔记本放到一个 .cdf 文件中。第一种方法是使用 另存为 菜单,而第二种方法是使用 部署 菜单项。欲了解关于 部署 菜单项的更多信息或如何将 .cdf 文件嵌入到现有的 HTML 中,请参阅 "创建一个可计算文档格式(CDF)的文件".
如使用 另存为 菜单,需在 Mathematica 中选中您所打开的笔记本,然后选择 文件 ► 另存为...:
然后在出现的文件浏览器窗口的下拉菜单 Save as type: 中选择 可计算文档 (*.cdf) :
这样,您的笔记本就成为了一个互动的 .cdf 文件,可以在 CDF Player 中查看.
创建 .cdf 文件的第三个方法是利用 Export. Import 与 Export 都完全支持"CDF" 文件格式.
这是含有 Manipulate 输出的 Notebook 表达式的例子:
| In[1]:= |
要从该笔记本表达式创建一个 .cdf 文件,可以与任何其它文件格式一样使用 Export:
| In[2]:= |
| Out[2]= |
部署 .cdf 文件
使用 文件 ► CDF Export 菜单项,您既可以将 .cdf 文件另存为一个独立文档,也可以将整个文档或选定的内容轻松嵌入到现有的 HTML 代码中。
如要生成独立的 .cdf 文件,需选择菜单项 文件 ► CDF Export ► Standalone...:
按照向导说明将文档保存为独立的 .cdf 文件。需注意的是,如果您希望保存笔记本中的选定内容,而不是整个窗口,您必须在打开部署向导前将待部署的内容选中。
如果您希望创建一个可嵌入到网页中的 .cdf 文件,需选择菜单项 文件 ► CDF Export ► Web Embeddable...:
该向导将引导您完成将整个文档或部分内容保存为 .cdf 文件的整个过程,指定 .cdf 文件将要在您的网页服务器上存放的位置,然后提供一段 HTML 代码段供您复制并粘贴到已有的 HTML 文件中。注意,与部署独立文档相同,如果您希望保存笔记本的选定内容,而不是整个窗口,必须在打开部署向导前将待部署的内容选中。
.cdf 文件中的互动性
Mathematica 中的绝大多数函数均可用于创建 CDF Player 的应用程序,但必须注意几个编程方面的限制.
- 所有互动内容必须通过 Manipulate 命令创建,并且只能使用鼠标驱动的元素,例如 Slider、Locator、Checkbox、PopupMenu,等等.
- 不支持 CDF Player 内数据的导入与导出,经 Wolfram 编辑过的数据源(ChemicalData、CountryData、WordData,等等)除外.
由于 CDF Player 无法在运行时加载自定义数据,必须确保所有必要信息嵌入在 .cdf 文件的互动元素中. 这可以通过 Initialization 或 SaveDefinitions 实现,两者均是 Manipulate 的选项.
选项 Initialization 可用于包括互动输出中的小型代码及数据块,正如下面这个简单的例子所示:
| In[1]:= |
| Out[1]= | Play Animation ▪![]() |
另外,对于大型代码块、程序包或大型数据集来说,将它们在创建 Manipulate 输出之前定义,然后利用选项 SaveDefinitions 将其在输出内的状态保存,可能会更为方便. 下面这个简单的例子是上例的翻版,而没有使用 Initialization.
| In[2]:= |
| Out[4]= | ![]() |
有关 .cdf 文件中更高级别应用程序内容的激活,例如任意输入、对话窗口,及加载外部数据等,请与 Wolfram Research 联系.





