2012-05-02 20 views
9

Giả sử tôi đã viết một lớp trong một gói, được gọi là mypackage.myclass. Tôi đã viết tài liệu HTML của riêng tôi cho gói và lớp, và đã bao gồm điều này trong trình duyệt trợ giúp MATLAB như được mô tả trong the MATLAB documentation.MATLAB: lệnh force doc để mở trang HTML tham chiếu được chỉ định

Tôi có thể hiển thị tài liệu HTML này bằng cách sử dụng trình duyệt trợ giúp để điều hướng trực tiếp đến tài liệu đó, nhưng nhập doc mypackage.myclass không hiển thị nó; thay vào đó, nó hiển thị một số tài liệu HTML được tự động tạo bởi helpwin (đây là một tính năng đẹp, nhưng không phải là những gì tôi muốn - tài liệu được tạo tự động quá cao đối với người dùng của tôi).

Làm cách nào để bắt buộc doc hiển thị tài liệu của tôi, chứ không phải tài liệu được tạo tự động?

Tương:

Khi bạn chạy doc docTopic, bên trong lệnh doc lớp Java com.mathworks.mlservices.MLHelpServices.showReferencePage(docTopic) được gọi. Nếu trang tham chiếu cho docTopic tồn tại, nó sẽ hiển thị nó và trả về giá trị thành công. Nếu một trang tham chiếu không tồn tại, nó sẽ trả về một giá trị thất bại, và sau đó gây ra helpwin(docTopic) để được gọi. Một nơi nào đó phải có một số danh mục kết nối các giá trị của docTopic với các tệp HTML tham chiếu riêng lẻ. Làm thế nào tôi có thể fiddle với danh mục đó - hoặc tôi có thể tạo một cho gói của tôi?

MathWorkers và @Yair, xin vui lòng cho tôi đủ dây cung cấp tài liệu để treo bản thân mình với :)

+0

Bạn có chắc chắn bạn đã không phạm sai lầm ở đâu đó? Gói [xUnit] (http://www.mathworks.com/matlabcentral/fileexchange/22846-matlab-xunit-test-framework) dường như hoạt động tốt về mặt tài liệu. – Jonas

+0

@ Jonas Có - khi tôi chạy 'doc runtests' hoặc' doc TestComponent', tôi nhận được tài liệu HTML được tạo tự động cho các lớp đó bằng 'helpwin'. Mặc dù xUnit bao gồm một số tài liệu hướng dẫn tuyệt vời (tôi không gặp vấn đề gì), nhưng nó không bao gồm tài liệu HTML riêng cho chính các lớp/chức năng của nó. –

+0

Ồ, tôi hiểu rồi. Tôi đã hiểu lầm câu hỏi của bạn trước đây.Tôi đoán sau đó câu hỏi sẽ trở thành: sẽ dễ dàng hơn để giáo dục mọi người sử dụng 'doc mypackage' để truy cập trợ giúp siêu liên kết? – Jonas

Trả lời

3

Theo như tôi biết điều này là không thể và không có ý định bởi MathWorks. Tôi cũng không biết cách nào để làm điều này. Theo tôi nhớ từ khóa cho doc được mã hóa cứng ở đâu đó.

Tùy thuộc vào thiết lập của bạn, bạn có thể thử như sau: Chuẩn bị doc lệnh của riêng bạn mà sử dụng web(..., '-helpbrowser') để hiển thị các trang HTML trong trình duyệt giúp đỡ của 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 

Nếu bạn đặt hàm trong một file doc.m và đặt thư mục tương ứng ở đầu đường dẫn MATLAB (xem help addpath) sau đó nó sẽ được gọi thay vì được xây dựng trong doc.

Tất nhiên bạn có thể sử dụng một số nơi khác để lưu trữ ánh xạ tài liệu tùy chỉnh của bạn (ví dụ: tệp) hoặc sử dụng một loại lược đồ tra cứu động nào đó.

CẬP NHẬT: Kể từ MATLAB R2012b, tùy chọn '-helpbrowser'web không có giấy tờ. Điều này có thể liên quan đến các thay đổi GUI trong phiên bản MATLAB đó, bao gồm cả trình duyệt trợ giúp. web(..., '-helpbrowser') vẫn hoạt động như dự định, nhưng điều đó có thể thay đổi trong các phiên bản sau của MATLAB. Theo tôi biết, không có cách nào được ghi tài liệu về việc mở bất kỳ trang HTML nào trong trình duyệt trợ giúp trong R2012b.

+0

Nó sẽ làm cho tôi cảm thấy một chút bẩn để bóng lệnh doc như thế, nhưng như là một hack nó có vẻ như nó có thể làm việc. Tất nhiên, nó sẽ trở nên phức tạp hơn nếu tôi có nhiều gói như thế này và họ cần có lệnh doc riêng của họ. Mặc dù vậy, tôi sẽ chấp nhận, vì nó gần nhất với một giải pháp mà tôi có cho đến nay sau một thời gian dài. Cảm ơn. –

+0

@SamRoberts: Rất vui khi bạn thích nó. Nó là một hack, không có nghi ngờ, và sử dụng nó cho một số dự án độc lập sẽ dẫn đến rắc rối. Chúng tôi phải đối mặt với cùng một vấn đề và quyết định gửi lệnh '' doc'' của riêng chúng ta với một tên khác thay vì che đi '' doc''. Nhược điểm là người dùng phải nhớ những gì lệnh để sử dụng. –

Các vấn đề liên quan