org-mode → Markdown → はてなブログ投稿の実験 まとめ

Table of Contents

  1. Org 8.x のMarkdown がうまくいかない
  2. Org 9.x に上げると殆ど解決した
  3. 残った問題
    1. ソースコードが適用されていない (+ハイライトしたい)
    2. 痒いところに手が届かないところは直Markdownで

Org 8.x のMarkdown がうまくいかない

M-x org-md-export-as-markdown (C-c e m M) でOrg 文章をMarkdown形式に変換できる。 はてなブログMarkdown 記法に対応しているので、これをそのまま貼り付けるだけで記事が投稿できる。

下は Org 8.x でその出力テストを行ったもの。

スケジュールやTODOリストなど、後半部分は記事の構成要素にならなさそうなので、言及しない。 他、記事を書くにあたって問題になりそうな不備を洗い出してみた。

  • (おそらく)空白行を挟まずにリストを作成すると、それをリストと認識しない
  • 表の体裁が崩れている (列グループ化が適用されていない)
  • 内部リンクが機能していない
  • 脚注のリンクが機能していない

Org 9.x に上げると殆ど解決した

どうしてこうなるのか・・・を考える前に Org-mode のバージョンを上げたら大体は解決しました。

ぱっと見たところ不備は残りこれくらい。

  • 表の列グループ化が適用されていない → 使う機会が少なそうなので、今回はスルー
  • new! ソースコードが適用されていない

残った問題

ソースコードが適用されていない (+ハイライトしたい)

リファレンスのタグ付けの部分が悪さをしていたらしい。 以下は正常に出力された。

' #+BEGIN_SRC emacs-lisp -n
' (save-excursion
'    (goto-char (point-min)))
' #+END_SRC

↑org ↓出力

1  (save-excursion
2     (goto-char (point-min)))

欲を言えばシンタックスハイライトしたい。 そこで、コードの部分をMarkdown記法で埋め込む方法をとってみる。

' #+BEGIN_EXPORT html
' ```python
' def hello():
'     str = "Hello World"
'     print(str)
' 
' # Hello!
' hello()
' ```
' #+END_EXPORT

↑org ↓出力

def hello():
    str = "Hello World"
    print(str)

# Hello!
hello()

#+BEGIN_EXPORT html ... #+END_EXPORT で囲まれた部分はMarkdownエクスポートの際、 そのまま出力される。このブロックはOrg-mode のEasy Template機能で <h [TAB] で呼び出せる。

```python ... ```Markdown記法。ソースコードの言語名を指定することで、はてなブログが 対応している言語はシンタックスハイライトしてくれる。

痒いところに手が届かないところは直Markdown

画像やURLリンク(埋め込み形式)も Markdown直打ちで対応したほうが見栄えの調節が便利だったりする。

' #+BEGIN_EXPORT html
' <img src="https://orgmode.org/img/main.jpg" width=200>
'  
' [https://www.google.co.jp/:embed]
' #+END_EXPORT

↑org ↓出力