Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
7行110bytesで構文を拡張
出来るReVIEWの話
2013/08/10 @muo_jp
113年8月10日土曜日
解
1 module ReVIEW
2 class LATEXBuilder
3 def inline_del(str)
4 macro('sout', escape(str))
5 end
6 end
7 end
213年8月10日土曜日
ご清聴ありがとうございました
313年8月10日土曜日
@muo_jp
プログラミング19年目 28歳
(BASIC→C→PHP→Ruby→Python→C#2.0→C#3.0→C#4.0)
KLab株式会社 Kラボラトリー所属
413年8月10日土曜日
今回のお話
https://github.com/kmuto/review/issues/178
513年8月10日土曜日
標準サポート無い…?
613年8月10日土曜日
LaTeX界隈での
下線/打ち消し線の扱い
「TeXで書かれるような書籍のほとんど
で、下線や打ち消し線が必要になるこ
とはないでしょう」なノリ
713年8月10日土曜日
HTMLでやれとか られそう
813年8月10日土曜日
でもやっちゃう(・ω<)てへぺろ
913年8月10日土曜日
Ruby読み書きするの5年ぶりぐらい
(しかも以前はRails向けに雑に
書いてたぐらい)な人がやってみる
ということで
1013年8月10日土曜日
その前に
1113年8月10日土曜日
ReVIEWと私(接触時間=5h)
C84本で、他の人の原稿を参考にREADME読みつつ
HTML出力を中心に使ったぐらい→よく分かってない
早くプレビュー出来ないと辛い→Vimのルール書いた
:wで保存→ChromeのタブをF5、で大変サクサ...
いざ構文拡張
事前調査(99%)
環境構築: 1.5時間
ReVIEWのドキュメント&masterのコード読み: 1.5時間
実装(40秒)
ということで、主に事前調査の話。何かの参考になれば幸い
1313年8月10日土曜日
まずは本体のドキュメント読む
doc/format.rdoc
review-ext.rbで拡張構文書けるよというのは聞いている
インライン命令の扱いだよね多分
…疑問に思ったこと: epub作るコマンドとreview-compile
でターゲッ...
review-(epub|pdf)makerって
何してるの
(epub|pdf)としてのヘッダ・フッタ生成と目次生成など
を行い、本文をごっそり生成している
1 def output_chaps(chapsfile, values)
2 Fi...
ということで
倒すべきはreview-compileコマンド
とりわけ、--target=htmlと--target=latexを倒せばLaTeX、
PDF、EPUB3(*1)を倒せる
お得!
*1: EPUB3はHTML5+CSS3ベース→z...
インライン命令の
実装方法を調べる
compiler.rbで構文が定義されてる
block, single, inlineの3種類があるけどsingleってなん
だっけ(後でしらぶる)
参考のため、他のインライン命令の実装を調べてみる
1713...
~/Documents/workspace/review $ grep -r 'ttb' .
(略)
/doc/format.rdoc:@<ttb>{BarClass}:: テキストをテレタイ
./lib/review/compiler.rb:...
その他
既にdefinline :delと定義がある。ということはこれ使う
のか
pLaTeX用の出力が書かれてないというだけなのかな
あ、これがkmutoさんが最初にコメント下さってた「一
応用意してます」というあたりなんだ。htmlbuil...
TeXのマクロってそもそも
どうすれば読めるんじゃろ
TeXのstyファイルはbook/以下へ丸ごとコピーされるか
ら使える
自動で利用可能になるわけではない。config.ymlで
texstyle: として指定したスタイルファイルが利用され...
ここまで分かれば
2113年8月10日土曜日
解(再掲)
1 module ReVIEW
2 class LATEXBuilder
3 def inline_del(str)
4 macro('sout', escape(str))
5 end
6 end
7 end
2213年8月10日...
エピローグ
今回は運もよかった。
既にdefinlineで定義されてた
HTML版はもうあった
LaTeX版のスタブも既にあった
sty/追加してロードすればokだった
内部構造分かったしこの先役立つ多分
2313年8月10日土曜日
積み残し
2413年8月10日土曜日
ReVIEWにgemで
書式プラグイン追加
$ gem install review-plugin-sout
とかして、他の人が定義した書式を使えると嬉しそう
必要な対応
呼び出し側: review-ext.rbでgem分を追加ロード
ReVI...
縦書き
ReVIEWでは鬼門っぽい。あんまり調べてない
(今回は要らなかった)
2613年8月10日土曜日
ReVIEW丸ごとブラウザ内(JS)で走
らないの(バンッ
OpalでソースをJSへ変換?→超ざっくり見た感じ辛そ
う。Kernel.loadとか多用するのどうするんだろ
HotRubyは2008年よりこちらメンテされてない模様
(YARVのバ...
わざわざ拡張しなくても
@<m>{a + raw}とかでok?
latexbuilderでの実装
def inline_m(str)
" $#{str}$ "
end
割となんでも通してくれる感じ? と思ったら、これは数式を書くた
めのものっぽ...
InDesignサポート
InDesign用のXMLスキーマ調べたけれど公開されてなさ
げでつらたん…
InDesignで何か書いてXML出力してみればいいんだと思
う(正しい実状ドリブン・エンジニアリングの在り方)
まとめ: 誰かに手伝っても...
まとめ
ReVIEW楽しい✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
3013年8月10日土曜日
Prochain SlideShare
Chargement dans…5
×

13.08.10 7行110bytesで構文を拡張 出来るReVIEWの話

5 162 vues

Publié le

2013/08/10の http://zusaar.com/event/977003 「ReVIEWによる書籍制作フローを勉強する会」で話した内容です。
出落ちすぎるので資料公開は後にしました(・ω<)

Publié dans : Spirituel
  • Soyez le premier à commenter

13.08.10 7行110bytesで構文を拡張 出来るReVIEWの話

  1. 1. 7行110bytesで構文を拡張 出来るReVIEWの話 2013/08/10 @muo_jp 113年8月10日土曜日
  2. 2. 解 1 module ReVIEW 2 class LATEXBuilder 3 def inline_del(str) 4 macro('sout', escape(str)) 5 end 6 end 7 end 213年8月10日土曜日
  3. 3. ご清聴ありがとうございました 313年8月10日土曜日
  4. 4. @muo_jp プログラミング19年目 28歳 (BASIC→C→PHP→Ruby→Python→C#2.0→C#3.0→C#4.0) KLab株式会社 Kラボラトリー所属 413年8月10日土曜日
  5. 5. 今回のお話 https://github.com/kmuto/review/issues/178 513年8月10日土曜日
  6. 6. 標準サポート無い…? 613年8月10日土曜日
  7. 7. LaTeX界隈での 下線/打ち消し線の扱い 「TeXで書かれるような書籍のほとんど で、下線や打ち消し線が必要になるこ とはないでしょう」なノリ 713年8月10日土曜日
  8. 8. HTMLでやれとか られそう 813年8月10日土曜日
  9. 9. でもやっちゃう(・ω<)てへぺろ 913年8月10日土曜日
  10. 10. Ruby読み書きするの5年ぶりぐらい (しかも以前はRails向けに雑に 書いてたぐらい)な人がやってみる ということで 1013年8月10日土曜日
  11. 11. その前に 1113年8月10日土曜日
  12. 12. ReVIEWと私(接触時間=5h) C84本で、他の人の原稿を参考にREADME読みつつ HTML出力を中心に使ったぐらい→よく分かってない 早くプレビュー出来ないと辛い→Vimのルール書いた :wで保存→ChromeのタブをF5、で大変サクサク au BufWritePost *.re silent execute '!review-compile --target html --draft ' . expand('<afile>:.') . ' > ' . expand('<afile>:p:h').'/ html_m/'.expand('<afile>:t:r').'.html' 1213年8月10日土曜日
  13. 13. いざ構文拡張 事前調査(99%) 環境構築: 1.5時間 ReVIEWのドキュメント&masterのコード読み: 1.5時間 実装(40秒) ということで、主に事前調査の話。何かの参考になれば幸い 1313年8月10日土曜日
  14. 14. まずは本体のドキュメント読む doc/format.rdoc review-ext.rbで拡張構文書けるよというのは聞いている インライン命令の扱いだよね多分 …疑問に思ったこと: epub作るコマンドとreview-compile でターゲット指定する系はどう違うんじゃろ 1413年8月10日土曜日
  15. 15. review-(epub|pdf)makerって 何してるの (epub|pdf)としてのヘッダ・フッタ生成と目次生成など を行い、本文をごっそり生成している 1 def output_chaps(chapsfile, values) 2 File.open(chapsfile) {|chaps| 3 chaps.each_line {|l| 4 next if l =~ /^#/ 5 file_id = File.basename(l.chomp.strip,".*") 6 filename = "#{file_id}.html" 7 fork { 8 STDOUT.reopen("#{@bookdir}/OEBPS/#{filename}") 9 exec("review-compile --target=html --level=#{values["secnole 10 } 11 Process.waitall 12 getanchors("#{@bookdir}/OEBPS/#{filename}") 13 @manifeststr << %Q(<item id="#{file_id}" href="#{filename}" me 14 @ncxstr << %Q(<itemref idref="#{file_id}" />n) 15 } 16 } 1513年8月10日土曜日
  16. 16. ということで 倒すべきはreview-compileコマンド とりわけ、--target=htmlと--target=latexを倒せばLaTeX、 PDF、EPUB3(*1)を倒せる お得! *1: EPUB3はHTML5+CSS3ベース→zip固めだからねっ。一応出力レベルに注意 1613年8月10日土曜日
  17. 17. インライン命令の 実装方法を調べる compiler.rbで構文が定義されてる block, single, inlineの3種類があるけどsingleってなん だっけ(後でしらぶる) 参考のため、他のインライン命令の実装を調べてみる 1713年8月10日土曜日
  18. 18. ~/Documents/workspace/review $ grep -r 'ttb' . (略) /doc/format.rdoc:@<ttb>{BarClass}:: テキストをテレタイ ./lib/review/compiler.rb: definline :ttb ./lib/review/htmlbuilder.rb: def inline_ttb(str) ./lib/review/idgxmlbuilder.rb: [:ttbold, :hint, :maru, :keytop ./lib/review/idgxmlbuilder.rb: def inline_ttb(str) ./lib/review/idgxmlbuilder.rb: alias :inline_ttbold inline_tt ./lib/review/latexbuilder.rb: def inline_ttb(str) ./lib/review/topbuilder.rb: [:ttbold, :hint, :maru, :keytop, :la ./lib/review/topbuilder.rb: def inline_ttb(str) ./lib/review/topbuilder.rb: alias :inline_ttbold inline_ttb ドキュメント→ 構文定義→ HTML用ビルダ→ InDesign用ビルダ→ LaTeX用ビルダ→ なんじゃろ→ 1813年8月10日土曜日
  19. 19. その他 既にdefinline :delと定義がある。ということはこれ使う のか pLaTeX用の出力が書かれてないというだけなのかな あ、これがkmutoさんが最初にコメント下さってた「一 応用意してます」というあたりなんだ。htmlbuilder固有 でなくinlineコマンドとして用意されてる 不正なインライン命令はどうなるんだろ 割とチャプター途中で生成諦める(まあそうだよね…) 1913年8月10日土曜日
  20. 20. TeXのマクロってそもそも どうすれば読めるんじゃろ TeXのstyファイルはbook/以下へ丸ごとコピーされるか ら使える 自動で利用可能になるわけではない。config.ymlで texstyle: として指定したスタイルファイルが利用される ので、ここをエントリポイントとしてusepackageしてや る必要がある 2013年8月10日土曜日
  21. 21. ここまで分かれば 2113年8月10日土曜日
  22. 22. 解(再掲) 1 module ReVIEW 2 class LATEXBuilder 3 def inline_del(str) 4 macro('sout', escape(str)) 5 end 6 end 7 end 2213年8月10日土曜日
  23. 23. エピローグ 今回は運もよかった。 既にdefinlineで定義されてた HTML版はもうあった LaTeX版のスタブも既にあった sty/追加してロードすればokだった 内部構造分かったしこの先役立つ多分 2313年8月10日土曜日
  24. 24. 積み残し 2413年8月10日土曜日
  25. 25. ReVIEWにgemで 書式プラグイン追加 $ gem install review-plugin-sout とかして、他の人が定義した書式を使えると嬉しそう 必要な対応 呼び出し側: review-ext.rbでgem分を追加ロード ReVIEW本体 sty/*をgemのディレクトリから拾ってこられるようにする config.ymlのusepackageに複数キーを指定し、各gemのマクロ を拾えるようにする まとめ: もうちょい整理して頑張る 2513年8月10日土曜日
  26. 26. 縦書き ReVIEWでは鬼門っぽい。あんまり調べてない (今回は要らなかった) 2613年8月10日土曜日
  27. 27. ReVIEW丸ごとブラウザ内(JS)で走 らないの(バンッ OpalでソースをJSへ変換?→超ざっくり見た感じ辛そ う。Kernel.loadとか多用するのどうするんだろ HotRubyは2008年よりこちらメンテされてない模様 (YARVのバイトコードをJS上で実行出来るようなんだけ ど)。Ruby1.9.2のバイトコード対応してない、標準ライ ブラリほとんど実装してないなど多分いろいろ辛い。 むりくり出来なくもないかもしれないけれど まとめ: つらい 2713年8月10日土曜日
  28. 28. わざわざ拡張しなくても @<m>{a + raw}とかでok? latexbuilderでの実装 def inline_m(str) " $#{str}$ " end 割となんでも通してくれる感じ? と思ったら、これは数式を書くた めのものっぽい(LaTeX知らな過ぎ辛 LaTeXの構文分かってなさすぎて少々混乱してる。ちゃんと調べる htmlbuilderでは、mathmlのパーサを併用していい感じに出力できる ようにしてる。 まとめ: えらい 2813年8月10日土曜日
  29. 29. InDesignサポート InDesign用のXMLスキーマ調べたけれど公開されてなさ げでつらたん… InDesignで何か書いてXML出力してみればいいんだと思 う(正しい実状ドリブン・エンジニアリングの在り方) まとめ: 誰かに手伝ってもらおう 2913年8月10日土曜日
  30. 30. まとめ ReVIEW楽しい✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌ 3013年8月10日土曜日

×