2013-10-09 23 views
18

tôi có một dự án với một bộ trang markdown được liên kết với nhau bằng liên kết nhưLàm cách nào để liên kết giữa các tài liệu đánh dấu trong doxygen?

[Go to this page](subdir/MyOtherPage.md) 

Các trang tất cả được nhặt bởi doxygen và xuất hiện trong đầu ra, nhưng các liên kết không được thay đổi để trỏ đến họ phiên bản html mới.

Tôi có thể thay đổi liên kết để trỏ đến trang html, nhưng dự án của tôi được lưu trữ trên github và sau đó các liên kết đó sẽ bị hỏng vì github hỗ trợ liên kết giữa các trang đánh dấu tự động.

Tôi không thể thấy bất kỳ điều gì trong tài liệu doxygen về hỗ trợ các liên kết ngoài các liên kết bên ngoài. Có cách nào để làm cho doxygen sản xuất một liên kết HTML từ một markdown?

+1

Lệnh doxygen \ ref có trợ giúp không? Nó hoạt động cho tôi để liên kết tới các tiêu đề phần doxygen \ trong các trang markdown khác, nhưng tôi không chắc liệu nó có giúp các yêu cầu cụ thể của bạn trở lại github hay không. – Cheeseminer

Trả lời

2

Tính năng này đã được bổ sung trong Doxygen 1.8.6 (Dec 2013)

Allow @ref to unlabeled markdown page by name, i.e. @ref mypage.md 
Allow links to other markdown pages of the form [link text](page.md) 

Bạn có thể cần phải incldue thư mục tài liệu trong liên kết cho nó hoạt động, ví dụ như

[link text](docs/page.md) 
+3

Tôi sử dụng 1.8.7 và nó vẫn không hoạt động. Nó luôn đề cập đến nguồn của tệp .md (trong html), không phải là trang kết xuất (html). nó không quan trọng cho dù tôi sử dụng '@ ref' hay' [ở đây] (document.md) '. đó có phải là cách giải quyết? – verpfeilt

+0

Không hoạt động cho tôi, hoặc là, trên 1.8.6 ... – Kyle

+0

Không hoạt động trong 1.8.11 cũng như – dwj

11

Theo Doxygen 1.8.7 có ba cách để thực hiện việc này:

  • Sử dụng siêu liên kết đánh dấu tiêu chuẩn như được mô tả trong câu hỏi ban đầu của bạn.
  • Sử dụng @ref và đặt tiền tố cho mục tiêu với md_ cùng với bất kỳ thư mục phụ nào.
  • Đặt tên trang và sử dụng @ref để tham chiếu đến tên.

Phương pháp đầu tiên rất đơn giản và điều này cũng sẽ hoạt động mà không có Doxygen (ví dụ: khi duyệt kho lưu trữ mã của bạn trên Github).

[Go to this page](subdir/MyOtherPage.md) 

Trong khi phương pháp thứ hai bạn sẽ cần phải liên kết nó như thế này:

[Go to this page](@ref md_subdir_MyOtherPage) 

Rõ ràng đây cũng là the way prescribed by the Doxygen's primary author.

Cuối cùng trong phương thức thứ ba, bạn sẽ cần phải có tên cho trang đích và sau đó liên kết với tên đó. Ví dụ:

Trong MyOtherPage.md có điều này là tiêu đề

# My Other Page Title {#MyOtherPageName} 

sau đó liên kết nó như liên kết Markdown nên

[Go to this page](@ref MyOtherPageName) 
+0

Lưu ý rằng doxygen * 1.8.7 * là quan trọng, CentOS 7 vẫn đi kèm với 1.8.5 trong đó tùy chọn thứ ba không làm việc. Chỉ mới hơn ba năm, tốt hơn nên giữ cho doxygen ổn định. – ted

3

Regular tuổi được xử lý như của Doxygen 1.8.6, ví dụ [link text](docs/page.md). Tuy nhiên, điều này hoạt động khá ít, URL phải tương đối từ thư mục làm việc Doxygen (tức là không phải thư mục của tệp Doxyfile hoặc .md, nhưng thư mục mà Doxygen là RUN). Nếu bạn nhận thấy rằng việc nhấp vào liên kết hiển thị Markdown thô thay vì HTML được hiển thị, điều đó có nghĩa là URL của bạn không tương đối so với thư mục làm việc của Doxygen.

+1

Điều này đã khắc phục sự cố đối với tôi trong trường hợp của tôi, tôi có tài liệu thư mục với thư mục doxyfile và markdown. Vì vậy tôi phải viết '[file] (markdown/file.md)'. Cảm ơn bạn! –

0

Các bước sau đây có thể giải quyết vấn đề,

  • thiết STRIP_FROM_PATH để Doxyfile thư mục. Đã xảy ra sự cố với đường dẫn tương đối trong khi liên kết các tệp đánh dấu.
  • nối mã sau vào tệp nguồn doxygen src/docparser.cpp tại 2438 số dòng có chứa mã pd = Doxygen::pageSDict->find(target); (nếu chưa có). Nó sửa chữa các tập tin markdown tìm kiếm trong danh sách trang.

    if (pd == 0 & & lang == SrcLangExt_Markdown) {pd = Doxygen :: pageSDict-> tìm (markdownFileNameToId (target));}

  • Cuối cùng biên dịch doxygen và thử lại.

Nó làm việc cho tôi.

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