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が正しくレンダリングされるようになりました。