私の新しいプロジェクトには、相互にリンクされた複数のマークダウンファイルがあります。これらのリンクは、元の.md
ファイルを参照しています。
例:ファイルREADME.md
...
1. [Development documentation](Development.md)
1. [User documentation](Usage.md)
...
これらのファイルをPandocで変換すると、たとえばhtmlファイルへのリンクは、元の.md
ファイルを指しています。私が探しているのは、リンクタイプも変換する方法です。つまり、出力ファイルはHTML、PDF、TeXなどの出力ファイルタイプを参照する必要があります。Pandocで内部リンクタイプを変換する方法はありますか?
私はこれを使用してファイルを変換します:
pandoc -f markdown -t html5 input.md -o output.html
組み込みのLuaフィルター の例:
# links-to-html.lua
function Link(el)
el.target = string.gsub(el.target, "%.md", ".html")
return el
end
次に:
pandoc -f markdown -t html5 input.md -o output.html --lua-filter=links-to-html.lua
Webサーバーを介してHTMLページを提供する場合、pandocを介して書き換える代わりに、すべての*.md
URLを*.html
のものとして解決するのは比較的簡単です。 NGinxの使用:
location ~ \.md$ {
if (!-f $request_filename) {
rewrite ^(.*)\.md$ $1 permanent;
}
}
location / {
try_files /$uri /$uri.html;
}
または、md
( here から取得)を使用して、すべてのhtml
リンクをsed
に置き換えることができます。
すべての内部ファイルのURLを* .mdリンクを指すものから変更し、代わりにローカルの* .htmlファイルを指すようにします
このsedコマンドを再帰的に実行します(プログラムでFILENAMEを置き換えます)
sed -n -i.bak '/href="\./s/\.md/\.html/' FILENAME.html
または、代わりに次のコマンドを実行します(プログラムでFILENAMEを置き換えます)
sed -e '/href="\./s/\.md/\.html/' FILENAME.html > FILENAME.html.tmp && mv FILENAME.html.tmp FILENAME.html`
同様の問題があったので、これを作成しました: https://github.com/MatrixManAtYrService/md_htmldoc
ディレクトリ内のすべての.md
ファイルを検索し、すべてのマークダウンがhtmlに変換された別のディレクトリを作成します。
ハイパーリンクを修正します(@Sergio_Correiaの回答に感謝します)。
また、ローカルファイル参照を収集して、画像などへのリンクが引き続き機能するようにします。