9

假设我在一个包中编写了一个类,名为mypackage.myclass. 我已经为包和类编写了自己的 HTML 文档,并将其包含在 MATLAB 帮助浏览器中,如MATLAB 文档中所述

我可以通过使用帮助浏览器直接导航到它来显示这个 HTML 文档,但是键入doc mypackage.myclass不显示它;相反,它显示了一些由自动生成的 HTML 文档helpwin(这是一个很好的功能,但不是我想要的 - 自动生成的文档对我的用户来说太技术性了)。

如何强制doc显示我的文档,而不是自动生成的文档?

等效地:

当您运行时doc docTopic,在 doc 命令中com.mathworks.mlservices.MLHelpServices.showReferencePage(docTopic)会调用 Java 类。如果存在参考页面docTopic,则显示它并返回成功值。如果参考页面不存在,它会返回一个失败值,然后导致helpwin(docTopic)被调用。某处必须有一些目录将 的值docTopic与单个参考 HTML 文件连接起来。我怎样才能摆弄那个目录——或者我可以为我的包裹创建一个目录?

MathWorkers 和@Yair,请给我足够的无证绳索让我上吊:)

4

1 回答 1

3

据我所知,这是不可能的,也不是 MathWorks 的意图。我也不知道这样做的无证方式。据我记得,关键字在doc某处是硬编码的。

根据您的设置,您可以尝试以下操作: 准备您自己的doc命令,用于web(..., '-helpbrowser')在 MATLAB 的帮助浏览器中显示 HTML 页面:

function doc(topic)

    my_topics = {
        'foo', 'foo.html'
        'bar', 'bar/help/intro.html'
    };

    for i = 1 : size(my_topics, 1)
        if strcmpi(topic, my_topics{i, 1})      
            web(my_topics{i, 2}, '-helpbrowser');
            return;
        end
    end

    % Fall back to MATLAB's doc. Note that our doc shadows MATLAB's doc.
    docs = which('doc', '-all');
    old_dir = cd();
    c = onCleanup(@() cd(old_dir));
    cd(fileparts(docs{2}));
    doc(topic); 
end

如果您将该函数放在一个文件中doc.m并将相应的目录放在 MATLAB 路径的开头(请参阅 参考资料help addpath),那么它将被调用而不是内置的doc.

当然,您可以使用其他地方来存储您的自定义文档映射(例如文件)或使用某种动态查找方案。

更新:从 MATLAB R2012b 开始,没有记录的'-helpbrowser'选项web。这可能与该 MATLAB 版本中的 GUI 更改有关,其中还包括帮助浏览器。web(..., '-helpbrowser')仍然可以按预期工作,但在未来的 MATLAB 版本中可能会发生变化。据我所知,在 R2012b 的帮助浏览器中,没有记录在案的方式可以打开任何HTML 页面。

于 2012-06-29T13:21:37.800 回答