如果您已经使用 Mathematica 一段时间,您可能已经加入了文档中心。在这些页面中总会找到新的东西。让它成为一个函数的选项,或者只是一些在某些时候对你没用的例子。
您可能已经编写了包含您一直使用的专用函数的软件包。有时您可能会想到一个与您的功能一起使用的简洁示例,但很可能它最终被遗忘在硬盘中的某个地方。如果您在考虑它的那一刻将其写入文档,那么您可能不会在以后拼命寻找它。
出于这个原因,我想知道如何以编程方式将 Mathematica的文档中心的文档集成到自己的函数中。这个问题是为了探索如何调整文档。如果您有编写的脚本可以帮助您执行此操作,请与社区分享。
对于这个问题,Wolfram的Workbench不是一个可接受的解决方案。一切都必须通过 Mathematica 的简单安装来完成。解决方案应涵盖几点:
?Symbol
Search: Symbol
这是一个非常广泛的主题,我有1,2和3的解决方案。我缺少第4点。那么请告诉我们,您如何使用文档中心记录您的功能?
我添加了另一个答案。希望这个答案对于Mathematica的用户用他们的包编写文档页面更令人鼓舞。我认为编写文档页面对应用程序编写者以及应用程序的用户都是有益的。如果你下载我写的软件包,我建议你按照教程进行操作,这样你就可以看到每一步都会发生什么。这将为您未来的项目提供宝贵的经验。
自从我写这个软件包以来,有几个人对这个软件包很感兴趣。我已将软件包上传到Github:https://github.com/jmlopez-rod/ApplicationMaker。如果您想成为存储库的贡献者,请与我联系。
答案 0 :(得分:44)
答案 1 :(得分:31)
我花了一些时间,但我终于完成了一个记录的Mathematica应用程序,以帮助Mathematica用户编写他们记录的包。
此应用程序称为ApplicationMaker
。它包含三个包含各种功能的包,可帮助您创建应用程序。通过使用这些功能,您可以跳过我在之前的答案中描述的所有混乱。
如果您从我的网站下载ApplicationMaker
,您会找到详细的教程,向您展示如何使用其文档创建完整的应用程序。
要创建新应用程序,请先致电NewApplication
。这将创建我在上一个答案中提到的目录树。要查找有关Mathematica文件组织的更多信息,请单击here。
下一步是创建包。为此,你打电话给NewPackage
。此函数创建一个用于编写代码的模板。
完成代码编写后,您需要致电UpdateInit
。这会更新Mathematica所需的init文件,以便您可以使用函数Get (<<)
。
此时您已准备好创建文档。只需致电CreateReferencePages
,这将创建一个基本文档,您可以编辑该文档以记录应用程序中每个符号的参考页面。
如果您要为自己的应用程序创建指南或教程,可以拨打NewGuide
和NewTutorial
。
完成编辑后,您需要构建应用程序,以便Mathematica可以将其调整到文档中心。您可以致电BuildApplication
。
此时你已经完成了。如果您在包裹的任何符号上使用Information
,您会看到附加的箭头,引导您转到该符号的参考页面。
如果您希望共享此应用程序,则应首先进行部署。当前应用程序包含与文档中心一起使用的参考页面以及您编辑的参考页面。通过部署它,您将获得一个目录,其中只包含应用程序所需的文件。
您只需将ApplicationMaker
或$UserBaseDirectory/Applications/
中的文件夹$BaseDirectory/Applications/
删除即可。
开始使用文档中心并查找“ApplicationMaker”。这应该向您显示指南,其中显示了包中包含的所有功能。在最底部,您应该看到教程的链接。
这是我为Mathematica构建的第一个应用程序。我将尝试不断更新包我发现新的东西,以使包更好。现在,我希望第一版的ApplicationMaker对任何试图记录他们的Mathematica应用程序的人都有用。
您可以下载ApplicationMaker here。
答案 2 :(得分:4)
我已经下载了您的ApplicationMaker,并在Windows 7 64位上使用Mathematica 10进行测试。伟大的工作和有据可查的!我发现了一个小错误,在使用NewApplication
创建新应用程序时需要修复我的设置。似乎函数root
中的变量MakeDirectory
不能是长度为零的字符串(导致创建目录时出错)。我通过在原始代码中包含一个测试来解决这个问题:
MakeDirectory[root_, start_, main_, sub_] := Module[
{nm, ns, tmp},
nm = Position[main, start];
If[Length@nm != 0, nm = nm[[1, 1]]];
If[Length@sub[[nm]] != 0,
Do[
tmp =
If[StringLength[root] != 0,
FileNameJoin[{root, start, sub[[nm, i]]}],
FileNameJoin[{start, sub[[nm, i]]}]];
If[DirectoryQ[tmp],
Print[Style["Existing Directory : ", "MSG", Gray],
Style[tmp, "MSG", Bold]],
CreateDirectory[tmp];
Print[Style["Directory Created : ", "MSG", Blue],
Style[tmp, "MSG", Bold]]
];
, {i, Length@sub[[nm]]}]
];
Do[
MakeDirectory[
If[StringLength[root] != 0, FileNameJoin[{root, start}], start],
sub[[nm, i]], main, sub],
{i, Length@sub[[nm]]}
]
]