2010-10-01 51 views
19

我找不到可用于为您自己的MATLAB函数编写帮助的格式。很少有信息可用in official documentationMATLAB m文件帮助格式化

您是否知道可以通过帮助浏览器(不带帮助功能)看到的其他任何格式?就像内置函数一样。如何格式标题(如语法,说明,示例)?子弹,桌子可能吗? 或者可能它应该是一个单独的文件?

我试过文字标记用于发布和HTML,没有工作。

我发现只有一件有趣的事情。如果你的函数包含混合的情况下,像testHelpFunction,它的名字将被突出显示:

alt text

不突出,如果它只是testhelpfunction

还有其他想法吗?

UPDATE

这里是大量的文档我创建自己的帮助文件中找到:

Providing Your Own Help and Demos
(与Web归档链接替换死链接)


(死链接删除)


再次更新:

+0

您添加第二个环节正是我正要建议。那里非常有用的东西。 – gnovice 2010-10-01 16:52:22

+0

你应该把你的UPDATE作为答案,并接受它! – 2010-10-01 16:57:57

+1

@Alex,我打算收集关于m文件格式的信息。创建单独的文档只是一个侧面问题。 – yuk 2010-10-01 18:42:35

回答

13

尝试在官方文档中的其他部分。它更彻底。 MATLAB>用户手册>桌面工具和开发环境>自定义帮助和演示>提供您自己的帮助和演示。这描述了简单的帮助文本和生成单独的HTML帮助文件。

这里是我选择的帮助文本格式,并发现有用。

function foo(x,y,z) 
%FOO One-line description goes here 
% 
% foo(x,y,z) 
% 
% Multi-line paragraphs of descriptive text go here. It's fine for them to 
% span lines. It's treated as preformatted text; help() and doc() will not 
% re-wrap lines. In the editor, you can highlight paragraphs, right-click, 
% and choose "Wrap selected comments" to re-flow the text. 
% 
% More detailed help is in the <a href="matlab: help foo>extended_help">extended help</a>. 
% It's broken out like this so you can keep the main "help foo" text on 
% a single screen, and then break out obscure parts to separate sections. 
% 
% Examples: 
% foo(1,2,3) 
% 
% See also: 
% BAR 
% SOMECLASS/SOMEMETHOD 

disp(x+y+z); 

function extended_help 
%EXTENDED_HELP Some additional technical details and examples 
% 
% Here is where you would put additional examples, technical discussions, 
% documentation on obscure features and options, and so on. 

error('This is a placeholder function just for helptext'); 
  • 函数签名后的第一行被称为“H1线”。它需要只是一行,因此它可以由contentrpt()正确拾取,它可以从函数中的帮助文本自动生成Contents.m文件。
  • H1行中的函数名称全部为大写,无论实际大写在签名中的函数名称
  • “另请参见”的情况。我不确定哪些案件都有效;这个确实如此。
  • “另请参阅:”后的函数名称全部大写。方法名称是合格的;我认为与当前方法在相同类中的方法名称可能是不合格的。

H1行与“Examples:”之间的所有内容都是我发现可读的传统格式; help()不会专门处理它。

您可以在帮助中使用有限形式的超链接。特别是,您可以使用超链接来调用任意的Matlab命令,并通过调用help()指向helptext的其他部分。你可以用它来指向任何函数; “function> subfunction”只是在help()调用中寻址子函数的语法。不幸的是,由于您需要在这些超链接中放置“帮助”或“文档”,它只能以一种或另一种表示形式工作。如果有一个直接的helptext超链接表单,会更好。

+0

我决定接受这个答案,作为m文件帮助格式化功能的最完整摘要。谢谢,安德鲁。我非常感谢其他答案。 – yuk 2010-10-08 15:36:10

+0

你提到的帮助部分似乎在最新版本中没有了? – 2014-10-28 14:56:49

4

我想,有一些(见例子),但我从来没有发现相应的文档。我经常有这样的块:

% ... 
% 
% See also: 
% this_other_function() 
% 
% <author> 

而且See also部分被格式化为标题,但如果你用别的东西代替See also,这是行不通的。如果有人发现这些支持的标题的列表,请在这里链接到它!

编辑

我最近来了解MATLAB的内置发布系统。看起来MATLAB评论支持某种形式的标记,与Markdown的语法(与SO本身使用的语法不同)不支持LaTeX等式和所有的语法。

“Loren在MATLAB的艺术”上有一篇关于发布和标记的文章short introduction。有关完整参考资料,请参见Mathworks网站上的Making Up MATLAB Comments for Publishing

当您的代码准备好后,您可以使用publish() function将结果导出为HTML/PDF/XML等。我使用以下片段导出我的文件:

% Other formats are supported, refer to documentation. 
options.format = 'html'; 

    % I don't evaluate the code, especially for functions that require arguments. 
    % However, if providing a demo, turning this on is a fantastic way to embed 
    % figures in the resulting document. 
options.evalCode = false; 

    % You can run this in a loop over files in the currrent directory if desired. 
publish('script.m', options); 
+0

谢谢。很棒的发现+1。有趣的是,“另请参阅”部分将在帮助浏览器帮助的最后。现有的功能将链接到其帮助页面。 – yuk 2010-10-01 15:54:04

4

我认为帮助格式化中最重要的方面是有帮助,并且格式是一致的,以便您(以及与您一起工作的人)不会浪费时间找到如何查找信息。请注意,对于OOP,使用'help'方法调用doc(class(obj))是非常有用的,因为您无法轻松地从类的实例化中获取帮助。

为了帮助我保持一致(并确保我不会忘记东西),我在文件交换中创建了一个automatic function template

这里是最小的头

function testhelp 
%TESTHELP is an example (this is the H1 line) 
% 
% SYNOPSIS: a=testhelp(b,c) 
% 
% INPUT b: some input parameter 
%  c: (opt) some optional input parameter. Default: [] 
% 
% OUTPUT a: some output parameter 
% 
% REMARKS This is just an example, it won't run 
% 
% SEE ALSO testHelpFunction 
% 
% created with MATLAB ver.: 7.11.0.584 (R2010b) on Mac OS X Version: 10.6.4 Build: 10F569 
% 
% created by: Jonas 
% DATE: 01-Oct-2010 
%