2012-05-02 12 views
9

Dire che ho scritto una classe in un pacchetto, chiamato mypackage.myclass. Ho scritto la mia documentazione HTML per il pacchetto e la classe e l'ho inclusa nel browser di aiuto di MATLAB come descritto in the MATLAB documentation.MATLAB: forza il comando doc per aprire una pagina HTML di riferimento specifica

Posso visualizzare questa documentazione HTML utilizzando il browser della guida per navigare direttamente su di esso, ma digitando doc mypackage.myclass non lo visualizza; visualizza invece una documentazione HTML che viene generata automaticamente da helpwin (che è una funzionalità interessante, ma non è ciò che voglio: la documentazione generata automaticamente è troppo tecnica per i miei utenti).

Come è possibile forzare doc per visualizzare la documentazione, anziché la documentazione generata automaticamente?

Equivalentemente:

Quando si esegue doc docTopic, all'interno del comando doc classe Java com.mathworks.mlservices.MLHelpServices.showReferencePage(docTopic) viene chiamato. Se esiste una pagina di riferimento per docTopic, la visualizza e restituisce un valore positivo. Se una pagina di riferimento non esiste, restituisce un valore di errore, che provoca la chiamata a helpwin(docTopic). Da qualche parte ci deve essere un catalogo che collega i valori di docTopic con i singoli file HTML di riferimento. Come posso giocare con quel catalogo - o posso crearne uno per il mio pacchetto?

MathWorkers e @Yair, per favore mi dia abbastanza corda non documentato per impiccarmi con :)

+0

Sei sicuro di non aver fatto un errore da qualche parte? Il pacchetto [xUnit] (http://www.mathworks.com/matlabcentral/fileexchange/22846-matlab-xunit-test-framework) sembra funzionare correttamente in termini di documentazione. – Jonas

+0

@Jonas Sì: quando eseguo 'doc runtests' o' doc TestComponent', ottengo la documentazione HTML che viene generata automaticamente per tali classi da 'helpwin'. Sebbene xUnit includa una buona documentazione tutorial (non ho problemi a farlo), non include la sua documentazione HTML separata per le classi/funzioni stesse. –

+0

Oh, capisco. Ho frainteso la tua domanda prima.Immagino che la domanda diventi: sarà più facile educare le persone a usare 'doc mypackage' per accedere all'aiuto con collegamenti ipertestuali? – Jonas

risposta

3

Per quanto ne so questo non è possibile e non inteso da MathWorks. Non conosco nemmeno un modo non documentato per fare questo. Per quanto mi ricordo le parole chiave per doc sono codificate da qualche parte.

A seconda della configurazione è possibile provare i seguenti: Preparare il proprio doc comando che utilizza web(..., '-helpbrowser') per visualizzare le pagine HTML nel browser l'aiuto di 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 

Se metti che funzione in un file doc.m e mettere il directory corrispondente all'inizio del percorso MATLAB (vedere help addpath) quindi verrà richiamata al posto del doc integrato.

Ovviamente è possibile utilizzare un altro posto per memorizzare la mappatura doc personalizzata (un file, ad esempio) o utilizzare una sorta di schema di ricerca dinamico.

UPDATE: Come di MATLAB R2012b, la possibilità di '-helpbrowser'web è documentato. Questo è probabilmente correlato alle modifiche della GUI in quella versione di MATLAB, che include anche il browser della guida. web(..., '-helpbrowser') funziona ancora come previsto, ma potrebbe cambiare nelle versioni future di MATLAB. Per quanto ne so, non esiste un modo documentato per aprire qualsiasi pagina HTML nel browser della Guida in R2012b.

+0

Mi farebbe sentire un po 'sporco mettere in ombra il comando doc in questo modo, ma come un hack sembra che funzioni. Ovviamente, diventerà più complicato se avrò più pacchetti come questo e ognuno avrà il proprio comando doc. Accetterò, tuttavia, poiché è il più vicino a una soluzione che ho finora dopo molto tempo. Grazie. –

+0

@SamRoberts: sono contento che ti piaccia. È un hack, senza dubbio, e usarlo per diversi progetti indipendenti porterà a guai. Abbiamo affrontato lo stesso problema e abbiamo deciso di spedire il nostro comando '' doc'' con un altro nome invece di ombreggiare '' doc''. Lo svantaggio è che gli utenti devono ricordare quale comando usare. –

Problemi correlati