Mathworks生成Matlab HTML文档的方法是什么?

时间:2014-10-07 17:54:43

标签: matlab doxygen python-sphinx documentation-generation

我正在处理共享的Matlab代码,我们希望在本地网络中共享生成的文档作为可搜索的HTML文档。

我知道以下生成文档的方法:

  1. 将转换器写入类似C ++的文件。这是在Using Doxygen with Matlab(2011年上次更新)和mtoc++(2013年最后更新)中完成的。然后,Doxygen会解析类似C ++的文件。
  2. 使用Python sphinxcontrib-matlabdomain生成HTML文档。
  3. 使用m2html,这也是第三方解决方案。
  4. 此问答中列出了其他选项:OneTwoThree
  5. Mathworks不支持所有可能性。所有可能性都需要我自己提及函数的参数。从某种意义上说,他们不会分析代码,Doxygen会为Java做分析:

    //! an object representation of the advertisement package sent by the beacon
    private AdvertisementPackage advertisementPackage;
    

    我听说过Matlab的publish()功能,但我从未在上述意义上看到过它。

    问题:生成Matlab HTML文档的Mathworks方式是什么。代码本身可以分析吗?我可以使用提供给Matlab输入分析器的信息吗?请在评论中提及您的个人偏好。

    示例:

    %% Input parser
    p = inputParser;
    addRequired(p, 'x', @isnumeric);
    
    validationFcn = @(x) (isnumeric(x) && isscalar(x));
    addRequired(p, 'fftSize', validationFcn);
    addRequired(p, 'fftShift', validationFcn);
    
    validationFcn = @(x) (isa(x, 'function_handle'));
    addRequired(p, 'analysisWindowHandle', validationFcn);
    
    parse(p, x, fftSize, fftShift, analysisWindowHandle);
    

3 个答案:

答案 0 :(得分:14)

我认为您已经很好地研究了这个主题(如何从MATLAB函数生成HTML文档),现在由您来决定哪种方法最适合您。

publish功能可用于author documentation。您使用specially crafted comments编写常规M文件(实际上文件可能是没有代码的所有注释),然后您发布文件以获取呈现的HTML(它还支持other targets,如PDF,DOC, LaTeX等...)。可以把它想象成一个更简单的特定于MATLAB的Markdown版本,它在Stack Exchange sites上用来格式化帖子。

您未提及的一个方面是将生成的文档集成到内置的帮助查看器中。这是通过创建info.xmldemos.xml文件以及以特定方式组织文档来完成的。您还可以使用Lucene函数(内部为MATLAB自定义文档中的搜索功能提供支持)构建builddocsearchdb索引文件,从而使您的自定义文档可搜索。请注意,生成HTML文档的方式无关紧要(您可以使用publish甚至手动编写的HTML文件)。

实际上,基于publish的工作流是可扩展的,您可以通过创建自定义XSL模板文件来转换和呈现已解析的注释,以有趣的方式使用它。例如,我已经看到它曾使用render equations MathJax而非依赖内置解决方案。另一个例子是publishing to MediaWiki markupWikipedia使用的格式)。其他人用它来写博客文章(参见MATLAB Central上的official blogs创建这种方式),甚至generate text files后来由静态站点生成器处理(如Jekyll和{{ 3}}框架)。

据我所知,没有公共工具可以在更深层次上检查MATLAB代码并分析功能参数。我能想出的最好的方法是使用Octopress来获取有关函数和类的一些元数据,尽管这个解决方案并不完美......

MathWorks似乎正在使用自己的内部系统来编写HTML文档。太糟糕了,他们不与我们的用户分享:))

答案 1 :(得分:4)

我认为这是官方提到的Mathworks'写文档的方式: http://www.mathworks.co.uk/help/matlab/matlab_prog/display-custom-documentation.html

基本上编写HTML,并添加一堆文件,使其可以在MATLAB文档中搜索和显示。

答案 2 :(得分:1)

有一种简单的方法可以使用带有功能和发布功能的发布。它是相应的输入。看看publish('test',struct('codeToEvaluate','test(inputs);','showCode',false, ))