KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

Turndownを書き換えてhtmlパーサを作る

Turndownを書き換えて好きなhtmlパーサを作ろう

 Turndownのsrcフォルダのcommonmark-rules.jsを書き換える。まずheading styleから青空文庫だと見出し。青空文庫だと見出しだけではなく字下げとセットだから字下げも行う。heading styleはh1をトップに指定してないサイトのほかにもあるので、h1以外も大見出しに対応できるようにした。optionでheadingでh1以外を指定する。

github.com

github.com

見出し

option={
    "headingStyle": "h1"
}
rules.heading = {
  filter: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],

  replacement: function (content, node, options) {
    var hLevel = Number(node.nodeName.charAt(1))
    const midashi=[{'start':'[#大見出し]','end':'[#大見出し終わり]'},
    {'start':'[#中見出し]','end':'[#中見出し終わり]'},
    {'start':'[#小見出し]','end':'[#小見出し終わり]'}]
    var tophLevel = Number(options.headingStyle.charAt(1))

    if (tophLevel< hLevel+1 && hLevel< tophLevel+3) {
      var underline = repeat((hLevel === 1 ? '=' : '-'), content.length)
      return '\n\n[#5字下げ]' + midashi[hLevel-1].start + content + midashi[hLevel-1].end + '\n\n'
    } else {
      return (
        '\n\n[#3字下げ]' + content + '\n\n'
      )
    }
  }
}

ふりがな

rules.kakko = {
  filter: 'rp',

  replacement: function (content) {
    return '' //ルビタグの互換のための()を除去
  }
}
rules.furigana = {
  filter: 'rt',

  replacement: function (content) {
    return '《' + content + '》' //ふりがな部分を《》で囲む
  }
}
rules.kanji = {
  filter: 'ruby',

  replacement: function (content) {
    return '|' + content //ふりがなをつける部分を|で区切る
  }
}

挿絵

rules.image = {
  filter: 'img',

  replacement: function (content, node) {
    var alt = cleanAttribute(node.getAttribute('alt'))//[#画像(image.jpg)入る]
    var src = node.getAttribute('src') || ''
    var title = cleanAttribute(node.getAttribute('title'))
    var titlePart = title ? ' "' + title + '"' : ''
    return src ? '[#' + alt +'(' + src + titlePart + ')入る]' : ''
  }
}

99nyorituryo.hatenablog.com