LoginSignup
2
4

More than 5 years have passed since last update.

GitBookのMarkdownでも段落内改行したい!

Last updated at Posted at 2016-07-31

注意

GitBook version 3.2.2で修正されているようなので、この記事は無視してください

gitbook-plugin-markdown-parse-add-brをご利用の皆様は直ちにgitbookのバージョンを上げ、package.jsonおよびbook.jsonからこのパッケージを除去してください。

背景

http://blog.kengo-toda.jp/entry/2015/03/29/124356
文中の改行が空白に変換されてしまうため、段落をすべて1行で書ききる必要があります。

どういうわけか、GitBookのMarkdown parserは段落内改行、つまりスペース2つでの改行をさせてくれません。これは困ります。

gitbook-plugin-japanese-support

という改行を強制除去することで空白挿入を回避するプラグインもありますが、このプラグインはコードブロック内まで改行除去してくるので、問題になることがあります

作ったもの

https://github.com/yumetodo/gitbook-plugin-markdown-parse-add-br/tree/master
https://www.npmjs.com/package/gitbook-plugin-markdown-parse-add-br

無題4.png

写真は昔読んでた某二次創作サイトの小説をとりあえずGitBookに変換してみたもの。

ようは行末のスペース2つを<br>に置き換えればいいわけです。が、先程も言ったようにコードブロック内は無視してくれないと困るので、正規表現での置換ができず、String.prototype.indexOfをforで回すとかいう荒業を使っています。

package.json
{
  "devDependencies": {
    "gitbook-cli": "^2.1.2",
    "gitbook-plugin-markdown-parse-add-br": "^1.0.3",
  }
}
book.json
{
  "gitbook": ">=3.0.0",
  "plugins": [
    "markdown-parse-add-br"
  ]
}

こんな感じで書き足せば使えます。

苦労したこと

  • 普段C++erなもんで、まずはC++で置換コード書いたんだけど、どうやってJavaScriptに移植しようかで5時間くらい悩んだ。あってよかった、String.prototype.indexOfString.prototype.substr(追記:String.prototype.substrはAnnex BだからString.prototype.substringを使うべきらしい)
  • npmのパッケージ作るのなんて初めてだから結構試行錯誤した。
    初めてのnpm パッケージ公開
    に感謝
  • package.jsonengineにgitbookを書かないとエラーになることに気がつくのに時間かかった。
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4