Wivern Blog

Personal-Tech memorandum

Octopressでコードブロックのエスケープ方法

vimでmarkdownをリアルタイムにプレビューできるようにするの記事を書いた時に コードブロックの{のエスケープができずgenerateする時にエラーになったので対処法のメモ

bundle exec rake generateで記事を作成しようとすると Liquid Exception: Variable '{{' was not properly terminated with regexp: /\}\}/ iのエラー
調べてみた。

コードブロックのエスケープ

How to escape {{in markdown on Octopress? - Stack Overflow にあるように にあるように

```種類ファイル名
コードブロック
```

{% raw %}{% endraw %} でくくればうまくいった。

今回は以下のコードでエラーになった

.vimrc
1
2
3
4
5
6
7
8
9
10
11

 """ markdown {{{
   autocmd BufRead,BufNewFile *.mkd  set filetype=markdown
   autocmd BufRead,BufNewFile *.md  set filetype=markdown
   " Need: kannokanno/previm
   nnoremap <silent> <C-p> :PrevimOpen<CR> " Ctrl-pでプレビュー
   " 自動で折りたたまないようにする
   let g:vim_markdown_folding_disabled=1
   let g:previm_enable_realtime = 1
 " }}}

このように{% codeblock %}{% codeblock %}の間をくくってやる。

.vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{% codeblock %}
{%  raw %}

 """ markdown {{{
   autocmd BufRead,BufNewFile *.mkd  set filetype=markdown
   autocmd BufRead,BufNewFile *.md  set filetype=markdown
   " Need: kannokanno/previm
   nnoremap <silent> <C-p> :PrevimOpen<CR> " Ctrl-pでプレビュー
   " 自動で折りたたまないようにする
   let g:vim_markdown_folding_disabled=1
   let g:previm_enable_realtime = 1
 " }}}

{%  endraw %}
{% endcodeblock %}

文中の{{のエスケープ

文中で表示させる場合及びリンクのアンカーなどの分の途中は

1
2
3

{{ "{{" }}

のように書けばエスケープできる。

文中の{%のエスケープ

1
2
3

{{ "{%" }}

を使う

{% raw %} と {% endraw %}自体のエスケープ

1
2
3

`{{ "{%" }} raw %}` と `{{ "{%" }} endraw %}`

{{をエスケープすること自体あまりしないから調べるのに時間かかってしまった。

ちなみにOctopress Escape Code に書いてあった。