MATLAB m-файл форматирования справки - PullRequest
21 голосов
/ 01 октября 2010

Я не мог найти, какое форматирование доступно, чтобы написать справку для вашей собственной функции MATLAB. Очень мало информации доступно в официальной документации .

Знаете ли вы о каком-либо другом форматировании, которое можно увидеть в браузере справки (кроме функции справки)? Как это для встроенных функций. Как форматировать заголовки (например, синтаксис, описание, примеры)? Возможны ли пули, столы? Или, может быть, это должен быть отдельный файл?

Я пробовал текстовую разметку, используемую для PUBLISH и HTML, не работает.

Я нашел только одну интересную вещь. Если ваша функция содержит смешанный регистр, например testHelpFunction, ее имя будет выделено:

alt text

Без выделения, если это просто testhelpfunction.

Есть еще мысли?

UPDATE

Вот обширная документация по созданию собственных файлов справки, которую я нашел:

Предоставление собственной справки и демонстраций
(Мертвая ссылка заменена ссылкой на веб-архив)


(мертвая ссылка удалена)


Обновлено снова:

Ответы [ 3 ]

14 голосов
/ 01 октября 2010

Попробуйте этот другой раздел в официальной документации. Это более тщательно. 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 и «Примеры:» - это просто обычное форматирование, которое я считаю читабельным; help () не обрабатывает это специально.

Вы можете использовать ограниченную форму гиперссылок в справке. В частности, вы можете использовать гиперссылки для вызова произвольных команд Matlab и указывать на другие разделы справочного текста, вызывая его help (). Вы можете использовать это, чтобы указать на любую функцию; «function> subfunction» - это просто синтаксис для адресации подфункций в вызовах help (). К сожалению, поскольку в эти гиперссылки необходимо добавить «help» или «doc», он работает только в той или иной форме представления. Было бы лучше, если бы существовала форма гиперссылки с прямым текстом справки.

4 голосов
/ 02 октября 2010

Я думаю, что наиболее важным аспектом в форматировании справки является то, что помощь вообще существует, и что ваше форматирование согласованно, так что вы (и люди, работающие с вами) не теряете время на поиск того, как искатьИнформация.Обратите внимание, что для ООП полезно иметь суперкласс с «справочным» методом, который вызывает doc(class(obj)), так как вы не можете легко получить доступ к справке из экземпляра вашего класса

Чтобы помочь мне быть последовательным (и чтобы убедиться, что я ничего не забыл), я создал автоматический шаблон функции при обмене файлами.

Вот минимальный заголовок

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
%
4 голосов
/ 01 октября 2010

Я полагаю, что есть некоторые (см. Пример), но я никогда не находил соответствующей документации. У меня часто бывают такие блоки:

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

И часть See also форматируется как заголовок, но если вы замените See also чем-то другим, это не сработает. Если кто-нибудь найдет список таких поддерживаемых названий, пожалуйста, ссылку на него здесь!

EDIT

Недавно я узнал о встроенной издательской системе Matlab. Похоже, что комментарии MATLAB поддерживают некоторую форму разметки, не столь далекую от синтаксиса Markdown (как используется в самом SO), с поддержкой уравнений LaTeX и всего.

Есть сообщение "Лорен об искусстве MATLAB" с кратким введением 1015 * по публикации и разметке. Для получения полной информации см. Составление комментариев MATLAB для публикации на веб-сайте Mathworks.

Когда ваш код готов, вы можете экспортировать результат в HTML / PDF / XML и т. Д., Используя функцию publish() . Я использую следующий фрагмент для экспорта моих файлов:

    % 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...