MarkdownでURLを自動リンクしない(+ RFC 7763を詳しく調べてみた)

投稿日:
技術
Markdown
技術標準
RFC
RFC 7763
URL
HTTP
HTTPS
本記事はQiitaから引っ越しました。

MarkdownでURLを自動リンクしない(+ RFC 7763を詳しく調べてみた)

はじめに

Markdownで httphttps から始まる文字列は自動リンクになることが多いです。

でも、時には自動リンクにしてほしくないときもあるでしょう。

気になって

markdown http リンクにしない

で検索したら、上位3件がそれぞれ全く違う方法でした。

方法1: バックスラッシュによるエスケープ

: (コロン)前にバックスラッシュをつける

https\://www.butchi.jp/

出典: URL を自動リンクさせない - Qiita

方法2: バッククォート(`)で囲む

バッククォート (`) で囲むと文字列扱いされる(場合が多い)

`https://www.butchi.jp/`

出典: MarkdownでURLをリンクにしない - ええやんブログ

方法3: 特殊文字を使う

: はコロン (:) を表す特殊文字

https://www.butchi.jp/

出典: GitHub Flavored Markdown でURLの自動リンクをしないようにする - ObjecTips

実行結果

とりあえず以上が上位3件の方法です。

実際、gulp-postmanなどで用いられているNode製マークダウンパーサーのmarkedで試してみたところ、方法3で無事所望の結果が得られました。 ただし、markedではHTML出力としてはコロンが特殊文字のまま出力されたので、実用的ではありながらも完璧ではありませんでした。 方法2は自動リンクには避けられましたが、 <code></code> で囲まれてしまいます。

ちなみに、調べている過程でbabelmarkという便利ツールを見つけたのでこれを使えば一目瞭然でした。

出典: Standard MarkdownがCommon Markdow、そしてCommonMarkに - InfoQ

方法1: https\://www.butchi.jp/https://babelmark.github.io/?text=https%5C%3A%2F%2Fwww.butchi.jp%2F

方法2: `https://www.butchi.jp/`https://babelmark.github.io/?text=%60https%3A%2F%2Fwww.butchi.jp%2F%60

方法3: https&#58;//www.butchi.jp/https://babelmark.github.io/?text=https%26%2358%3B%2F%2Fwww.butchi.jp%2F

他の方法

https[]()://www.butchi.jp/

出典: MarkdownでURLからハイパーリンクを回避したい(方法だけ) - by shigemk2

確かに自動リンクは避けられましたが、案の定

https<a href=""></a>://www.butchi.jp/

と空のa要素が生成されます。

他にもいい方法がないか調べたり考えたりしましたが残念ながら見つかりませんでした。

RFC 7763

ちなみにMarkdownは紆余曲折がありながらもようやく標準化の波に乗ってきてるようで、RFC 7763で文書化されていますが、ざっと見たところ(あとでちゃんと読む)そもそも自動リンクの仕様自体見つからず、よって避ける方法も明記されていません。

最後に

結論、実用的な自動リンク回避方法は

https&#58;//www.butchi.jp/

のような書き方ですが、

https://www.butchi.jp/

のままHTML出力する方法は恐らく存在しません。

Markdownのような直感的によしなに軽量マークアップや自動変換をするシステムは、お節介が高じて単純なものすら容易に記述できないことがしばしばです。(チャットツールでよくある、コードの一部が絵文字に変換される、など。) 思いつきで作られた実用ベースの不完全な言語は、時として不自由もあると理解した上で割り切って使う必要がありますね。

著者紹介

岩淵夕希物智 butchi_y

言語を作る博士(工学)

ART, Research, Techの人

広告
広告