web-dev-qa-db-ja.com

doxygenのマークダウンドキュメント間をリンクするにはどうすればよいですか?

次のようなリンクと相互リンクされている一連のマークダウンページを持つプロジェクトがあります

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

すべてのページはdoxygenによって取得され、出力に表示されますが、リンクは新しいhtmlレンディションを指すように変更されていません。

リンクを変更してhtmlページを指すようにすることもできますが、プロジェクトはgithubでホストされており、githubはマークダウンページ間のリンクを自動的にサポートしているため、これらのリンクは壊れてしまいます。

外部リンク以外のサポートリンクについては、doxygenのドキュメントに何も表示されません。 doxygenにマークダウンリンクからHTMLリンクを生成させる方法はありますか?

25
izb

Doxygen 1.8.7によると、これを行うには3つの方法があります。

  • 元の質問で説明されているように、標準のマークダウンハイパーリンクを使用します。
  • @refを使用し、ターゲットの前にmd_とサブディレクトリを付けます。
  • ページに名前を付け、@refを使用して名前を参照します。

最初の方法は簡単で、これはDoxygenがなくても機能します(Githubでコードリポジトリを参照する場合など)。

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

2番目の方法では、次のようにリンクする必要があります。

[Go to this page](@ref md_subdir_MyOtherPage)

どうやらこれも Doxygenの筆頭著者によって規定された方法 です。

最後に、3番目の方法では、ターゲットページの名前を付けて、その名前にリンクする必要があります。例:

MyOtherPage.mdでこれをヘッダーとして使用します

# My Other Page Title {#MyOtherPageName}

次に、そのようにリンクします

[Go to this page](@ref MyOtherPageName)
17
adib

通常の古いMarkdownリンクは、Doxygen1.8.6以降で処理されます。 [link text](docs/page.md)。ただし、これは少し不安定に機能します。URLはDoxygenの作業ディレクトリ(つまり、Doxyfileまたは.mdファイルのディレクトリではなく、Doxygenが実行されているディレクトリ)からの相対的なものである必要があります。リンクをクリックすると、レンダリングされたHTMLではなく生のMarkdownが表示されることに気付いた場合は、URLがDoxygenの作業ディレクトリから相対的ではないことを意味します。

7
Kyle

この機能はDoxygen1.8.6(2013年12月)で追加されました

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)

それが機能するためには、リンクにドキュメントディレクトリを含める必要があるかもしれません。

[link text](docs/page.md)
2
rockgecko

次の手順で問題が解決する場合があります。

  • _STRIP_FROM_PATH_をDoxyfileディレクトリに設定します。マークダウンファイルのリンク中に相対パスに問題があります。
  • コードpd = Doxygen::pageSDict->find(target);を含む2438行番号のdoxygenソースファイルsrc/docparser.cppに次のコードを追加します(まだ存在しない場合)。ページリストでのマークダウンファイル検索を修正します。

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

  • 最後にdoxygenをコンパイルして、再試行してください。

それは私のために働いた。

0
shuva