2012-05-02 4 views
9

Digamos que he escrito una clase en un paquete, llamado mypackage.myclass. Escribí mi propia documentación HTML para el paquete y la clase, y la incluí en el navegador de ayuda de MATLAB, como se describe en the MATLAB documentation.MATLAB: comando force doc para abrir una página HTML de referencia especificada

Puedo mostrar esta documentación en HTML usando el navegador de ayuda para navegar directamente hacia ella, pero al escribir doc mypackage.myclass no aparece; en su lugar, muestra cierta documentación HTML que se genera automáticamente en helpwin (que es una buena característica, pero no lo que quiero, la documentación generada automáticamente es demasiado técnica para mis usuarios).

¿Cómo puedo forzar doc para mostrar mi documentación, en lugar de la documentación generada automáticamente?

De manera equivalente:

Cuando se ejecuta doc docTopic, dentro de la instrucciones de control de la clase Java com.mathworks.mlservices.MLHelpServices.showReferencePage(docTopic) se llama. Si existe una página de referencia para docTopic, la muestra y devuelve un valor correcto. Si no existe una página de referencia, devuelve un valor de falla, que luego hace que se llame a helpwin(docTopic). En algún lugar debe haber algún catálogo que conecte valores de docTopic con archivos HTML de referencia individuales. ¿Cómo puedo jugar con ese catálogo, o puedo crear uno para mi paquete?

MathWorkers y @Yair, por favor, dame suficiente cuerda indocumentado ahorcarme con :)

+0

¿Estás seguro de que no cometiste un error en alguna parte? El paquete [xUnit] (http://www.mathworks.com/matlabcentral/fileexchange/22846-matlab-xunit-test-framework) parece funcionar bien en términos de documentación. – Jonas

+0

@Jonas Sí, cuando ejecuto 'doc runtests' o' doc TestComponent', obtengo la documentación HTML que se genera automáticamente para esas clases mediante 'helpwin'. Aunque xUnit incluye una gran documentación tutorial (no tengo problemas para hacerlo), no incluye su propia documentación HTML separada para las clases/funciones. –

+0

Oh, ya veo. He malentendido tu pregunta antes.Supongo que entonces la pregunta es: ¿será más fácil educar a las personas a usar 'doc mypackage' para acceder a la ayuda hipervinculada? – Jonas

Respuesta

3

Por lo que yo sé que esto no es posible y no intencionada por MathWorks. No sé de una forma indocumentada de hacer esto tampoco. Por lo que recuerdo, las palabras clave para doc están codificadas en alguna parte.

Dependiendo de su configuración, puede intentar lo siguiente: Prepare su propio comando doc que utiliza web(..., '-helpbrowser') para mostrar las páginas HTML en el navegador de la ayuda de 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 

Si pones esa función en un archivo doc.m y poner el el directorio correspondiente al comienzo de la ruta MATLAB (consulte help addpath) se llamará en lugar del doc incorporado.

Por supuesto, podría utilizar otro lugar para almacenar su asignación de documentos personalizada (un archivo, por ejemplo) o utilizar algún tipo de esquema de búsqueda dinámica.

ACTUALIZACIÓN: Como de MATLAB R2012b, la opción de '-helpbrowser'web es indocumentado. Esto probablemente esté relacionado con los cambios de la GUI en esa versión de MATLAB, que también incluye el navegador de ayuda. web(..., '-helpbrowser') sigue funcionando según lo previsto, pero eso puede cambiar en futuras versiones de MATLAB. Por lo que yo sé, no hay una forma documentada de abrir ninguna página HTML en el navegador de ayuda en R2012b.

+0

Me haría sentir un poco sucio para sombrear el comando de doc así, pero como un truco parece que podría funcionar. Por supuesto, se volverá más complicado si tengo varios paquetes como este y cada uno necesita su propio comando de doc. Voy a aceptar, sin embargo, ya que es lo más cercano a una solución que tengo hasta ahora después de mucho tiempo. Gracias. –

+0

@SamRoberts: Me alegro de que te guste. Es un truco, sin duda, y usarlo para varios proyectos independientes dará lugar a problemas. Nos enfrentamos al mismo problema y decidimos enviar nuestro propio comando '' doc'' con otro nombre en lugar de sombrear '' doc''. La desventaja es que los usuarios deben recordar qué comando usar. –

Cuestiones relacionadas