Hexoはhexo-renderer-marked -> marked を利用してMarkdownをHTMLに変換しています。
該当部分は次のように実装されています。align
属性で実現しています。ここは正しく動いています。
_proto.tablecell = function tablecell(content, flags) { |
Hexoのテーマはingenuousを利用しています。このテーマはCSSの定義にStylusを利用しており、global-reset()
でcaption
th
td
のtext-align: left
を定義しています。
https://github.com/stylus/nib/blob/master/lib/nib/reset.styl#L62-L65
nested-reset() |
全てのセルにtext-align: left
が指定されてしまうので、align="right"
といったタグの属性は無視されてしまいます。
対策
- global-reset()を使わない
- tdとtrに
class="any-prefix-{right|left|center}"
を追加するかstyle="text-align:{right|left|center}"
を追加する
後者をやってみました。
https://github.com/tamtam180/hexo-renderer-marked/commit/4ef7c8d44609bb7a99430474450613b5f58672fd
hexo-renderer-marked
はHexoからmarked
を利用するためのモジュールで、Hexo用にオプションを指定して拡張しています。ここでtablecell
を上書きする事でtableのセルのレンダリングを差し替える事ができます。
tablecell (content, flags) { |
https://github.com/tamtam180/hexo-renderer-marked/tree/feature/use-class-table-align
ここに対応したレポジトリを置いておきます。
Hexoから上記のモジュールを利用する
"hexo-renderer-marked": "git+https://github.com/tamtam180/hexo-renderer-marked.git#feature/use-class-table-align" |
上記のようにバージョンではなくGithubのレポジトリをブランチ名付きで参照し、次のコマンドで依存モジュールを更新します。
npm update hexo-renderer-marked |
Hexoの設定
オプションでprefixを指定します。これでtext-right
のようなclassが指定される事になります。
marked: |
テーマのCSSに対応するスタイルを追加します。
.text-left |
これでalignが正しくレンダリングされるようになりました。