diary

I like Hatena Star with a text selection.

2025-11-22

pictsquare.net

Elinのオンライン同人イベントにサークル参加している。

これのために同人誌を1冊書いた。同人誌書くの初めて。

内容はゲームの解析入門本。攻略サイトを作る中で知った内容を本にした。

github.com

本の内容と組版環境はこのリポジトリで公開している。技術的な内容を少し。

本のテキストはmarkdownで書いている。そしてそれをmd2reviewを使ってRe:VIEWの記法に変換し、Re:VIEWでPDFにしている。

md2review がいくつか自分の用途でうまく動かなかったので、パッチを当てている。https://github.com/pocke/elin-books/blob/a07e589cd7b2775d70db8d569a0798147b2e47d9/how_to_read_csv/md2review_patch.rb

1つは//から始まるRe:VIEWのコマンドをmarkdownに書いたとき、それをmarkdownとして解釈しようとしてうまく動いていないところがあった。基本的にはmarkdownのplain textとしてRe:VIEWまで渡っていくので問題ないのだけど、//tsize[|latex|20,90,40]のようなテーブルサイズを指定するコマンドが、リンクと解釈されてうまく動いていなかった。そのため、コマンドをpreprocessでエスケープして、postprocessで書き戻すようにしている。

また、markdownではテーブルに|を使うのだけど、テーブルの中で|をテキストとして使いたい場合は\|のようにエスケープできる(少なくともGFMではそう)。しかしmd2reviewが使っているredcarpetではパイプのエスケープが出来ないようで、バックスラッシュをつけていてもテーブルとして解釈されてしまう。 そのため\|エスケープと書き戻しをしている。

他に脚注も手を入れている。Re:VIEWでは基本的には脚注の参照先がテキスト末尾にあっても、脚注の参照があるページに脚注のテキストが表示されてくれる。ただし脚注がテーブルやコラム内にあるとこれがうまく動かず、本の末尾に脚注が移動してしまう。 これは脚注の参照先を参照があるページの近くに置いておけば問題がない。しかしmd2reviewだとmarkdownの途中に脚注の参照先を書いていても、強制的にテキストの一番最後にまとめて脚注が書き出されてしまう。おそらくredcarpetの仕様。 これに対処するため、md2reviewがRe:VIEWの記法に変換したあと、@<fn>のあとに最初に空行が表れたところに//footnoteを移動させるようにした。