Вопрос по matlab – MATLAB: заставить команду doc открыть указанную ссылочную HTML-страницу

9

Скажем, я написал класс в пакете, который называетсяmypackage.myclass, Я написал свою собственную HTML-документацию для пакета и класса и включил ее в справочный браузер MATLAB, как описано вдокументация MATLAB.

Я могу отобразить эту документацию HTML, используя браузер справки, чтобы перейти непосредственно к ней, но набравdoc mypackage.myclass не отображает его; вместо этого он отображает некоторую документацию HTML, которая автоматически генерируетсяhelpwin (это хорошая функция, но не то, что я хочу - автоматически сгенерированная документация слишком сложна для моих пользователей).

Как я могу заставитьdoc отобразить мою документацию, а не автоматически сгенерированную документацию?

Эквивалентное:

Когда ты бежишьdoc docTopicвнутри команды doc класс Javacom.mathworks.mlservices.MLHelpServices.showReferencePage(docTopic) вызывается. Если справочная страница дляdocTopic существует, он отображает его и возвращает значение успеха. Если ссылочной страницы не существует, она возвращает значение ошибки, которое затем вызываетhelpwin(docTopic) позвонить. Где-то должен быть какой-то каталог, который соединяет значенияdocTopic с отдельными ссылочными файлами HTML. Как я могу возиться с этим каталогом - или я могу создать его для своего пакета?

MathWorkers и @Yair, пожалуйста, дайте мне достаточно недокументированной веревки, чтобы повеситься :)

Возможно где-то внутри[matlab_root]\toolbox\matlab\helptools? Я не исчерпывающе искал там, но он мог существовать. Nathan Donnellan
Вы уверены, что где-то не ошиблись?xUnit пакет, кажется, делает хорошо с точки зрения документации. Jonas
@Jonas Да - когда я бегуdoc runtests или жеdoc TestComponentЯ получаю HTML-документацию, которая автоматически генерируется для этих классовhelpwin, Хотя xUnit включает в себя отличную учебную документацию (у меня нет проблем с этим), он не включает собственную отдельную HTML-документацию для самих классов / функций. Sam Roberts
Участок сгущается ... но пока было весело. Я достиг предела, когда он начал использовать движок Apache Lucene (com.mathworks.mlwidgets.help.search.lucene.LuceneDocSearchEngine). Я предполагаю, что некоторые (казалось бы, запутанные) поиски в текстовых файлах продолжают искать точный URL для файла справки. Ole Thomsen Buus
О, я вижу. Я неправильно понял ваш вопрос раньше. Я думаю, тогда возникает вопрос: будет ли легче научить людей использоватьdoc mypackage получить доступ к справке с гиперссылками? Jonas

Ваш Ответ

1   ответ
3

это невозможно и не предназначено MathWorks. Я также не знаю недокументированного способа сделать это. Насколько я помню ключевые слова дляdoc где-то жестко

В зависимости от вашей настройки вы можете попробовать следующее: Подготовить свой собственныйdoc команда, которая используетweb(..., '-helpbrowser') для отображения HTML-страниц в справочном браузере MATLAB:

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.

Конечно, вы можете использовать какое-то другое место для хранения своего пользовательского отображения документов (например, файл) или использовать какую-то схему динамического поиска.

UPDATE: Начиная с MATLAB R2012b,'-helpbrowser' вариантweb не имеет документов Вероятно, это связано с изменениями графического интерфейса в той версии MATLAB, которая также включает в себя справочный браузер.web(..., '-helpbrowser') все еще работает как задумано, но это может измениться в будущих версиях MATLAB. , нет документированного способа открытияany HTML-страница в браузере справки в R2012b.

@SamRoberts: Рад, что тебе нравится. Это, без сомнения, взлом, и использование его для нескольких независимых проектов приведет к неприятностям. Мы столкнулись с той же проблемой и решили отправить наш собственныйdoc команда с другим именем вместо затененияdoc, Недостатком является то, что пользователи должны помнить, какую команду использовать.
Я чувствовал бы себя немного грязно, чтобы скрыть подобную команду doc, но, как хак, похоже, она может сработать. Конечно, будет сложнее, если у меня будет несколько таких пакетов, и каждый из них будет нуждаться в собственной команде doc. Я собираюсь принять, тем не менее, так как это наиболее близко к решению, которое у меня есть после долгого времени. Благодарю. Sam Roberts

Похожие вопросы