kmuto / review Goto Github PK
View Code? Open in Web Editor NEWRe:VIEW is flexible document format/conversion system
Home Page: http://reviewml.org/
License: GNU Lesser General Public License v2.1
Re:VIEW is flexible document format/conversion system
Home Page: http://reviewml.org/
License: GNU Lesser General Public License v2.1
すべて UTF-8 でやってていても,Windows で review-compile したときに下記の例外が発生します。
review-1.0.0/lib/review/htmlbuilder.rb:109
incompatible character encodings: UTF-8 and Windows-31J (Encoding::CompatibilityError)
lib/review/builder.rb:41 で @output = StringIO.new したとき,エンコーディングが Windows-31J になって,そこに UTF-8 の文字列を足していっても Windows-31J に変換されてしまうのが原因のように思われます。
44c411d のコミット以降、
PDF を作成しようとすると以下のようなエラーが発生するようになりました。
一つ前までのコミットでは、問題なくPDFは作ることができました。
回避方法などございましたら、ご教示ください。
よろしくお願いします。
(/Applications/UpTeX.app/teTeX/share/texmf/ptex/platex/base/ascmac.sty
(/Applications/UpTeX.app/teTeX/share/texmf/ptex/platex/base/tascmac.sty))
(/Applications/UpTeX.app/teTeX/share/texmf-dist/tex/latex/float/float.sty)
(/Applications/UpTeX.app/teTeX/share/texmf-dist/tex/latex/base/alltt.sty)
(/Applications/UpTeX.app/teTeX/share/texmf-dist/tex/latex/geometry/geometry.sty
(/Applications/UpTeX.app/teTeX/share/texmf-dist/tex/latex/geometry/geometry.cfg
)) (/Applications/UpTeX.app/teTeX/share/texmf-dist/tex/latex/base/fontenc.sty
(/Applications/UpTeX.app/teTeX/share/texmf-dist/tex/latex/base/t1enc.def))
(./book.aux)
(/Applications/UpTeX.app/teTeX/share/texmf-dist/tex/latex/hyperref/nameref.sty
(/Applications/UpTeX.app/teTeX/share/texmf-dist/tex/generic/oberdiek/gettitlest
ring.sty)) (./book.out) (./book.out)
Package hyperref Warning: Rerun to get /PageLabels entry.
! TeX capacity exceeded, sorry [save size=5000].
split@name ...#2}def f@series {#3}def f@shape {#4}
def f@size {#5}
l.145 \reviewtitlefont
%
No pages of output.
Transcript written on book.log.
book.dvi -> book.pdf
** ERROR ** Could not open specified DVI file: book.dvi
Output file removed.
/usr/local/lib/ruby/1.9.1/fileutils.rb:1423:in `stat': No such file or directory - /var/folders/1z/ff7x15cj7vb24rl38ty0y52w0000gn/T/d20111105-24362-3844n3/MacRubyBible1/book.pdf (Errno::ENOENT)
from /usr/local/lib/ruby/1.9.1/fileutils.rb:1423:in `block in fu_each_src_dest'
from /usr/local/lib/ruby/1.9.1/fileutils.rb:1439:in `fu_each_src_dest0'
from /usr/local/lib/ruby/1.9.1/fileutils.rb:1421:in `fu_each_src_dest'
from /usr/local/lib/ruby/1.9.1/fileutils.rb:391:in `cp'
from /usr/local/lib/ruby/gems/1.9.1/gems/review-0.9.0/bin/review-pdfmaker:143:in `main'
from /usr/local/lib/ruby/gems/1.9.1/gems/review-0.9.0/bin/review-pdfmaker:457:in `<top (required)>'
from /usr/local/bin/review-pdfmaker:19:in `load'
from /usr/local/bin/review-pdfmaker:19:in `<main>'
rake aborted!
Command failed with status (1): [review-pdfmaker config.yml...]
プログラムコードに色を付けたい。
タグ名は別のでもいいけど。XMLインストラクションにして後処理用に使うdtpタグ、生タグ含めて挿入するrawタグは紙面構成のためにやむをえず使わざるを得ないことが多いけど、マルチフォーマット展開をする際にはゴミになったりあるいは競合したりすることになる。
//rawについてはたとえば//raw[生情報] 、//raw[builder1,builder2][生情報] のようにオプション化できそうだけど、インラインタグの@と@についてはオプションを持たせられない。
ビルダごとのタグを用意べきか…?
「//tsize[20L, 30C, 40R]」でそれぞれのカラムを左寄せ・真ん中寄せ・右寄せにする、とかでどうでしょう?
Windows で review-compile すると,下記の例外が発生します。
review-1.0.0/bin/review-compile:26:in `trap': unsupported signal SIGPIPE (ArgumentError)
Windows では :PIPEがシグナルに使えないようです。
http://doc.okkez.net/193/view/method/Signal/m/trap
現状では、@<href>{http://example.com, AAA,BBB} などと書くと、アンカー文字列も「AAA,BBB」になってしまうようです。
issue #42 に関連して、@〈chap〉{advance}などをadvance.reを変換した後のHTMLファイルにリンクするには、変換後のファイル名が分からないといけません。
ところが、現状はchap12.htmlやpost1.htmlのようになったりするため、相当頑張らないとリンクが貼れません。
というわけで、デフォルトかオプションで、生成するHTMLやtexのファイルのファイル名を、元のReVIEWソースファイルと同じ名前(拡張子だけ違う)になるようにしたいです。
lib/review/tocprinter.rbの冒頭にマジックコメント (# coding: utf-8)を入れたら動きました。
review-compileが「#@」から始まるコメント行を除いて処理しているので、ソースファイルの行番号とエラーの行番号が違ってしまい、わかりにくい。エラーの行番号はソースファイルの行番号と同じにしたい。
以下のように、ReVIEWでリストを記述しております。
1. インスタンス変数@wordsへText Fieldの文字列を追加します。
2. Text Fieldに空の文字列を設定し、入力されていた文字列を消去します。
setStringValueメソッドを使用すると、Text Fieldに文字列を設定することができま
す。
リストが長くなり読みにくいので途中で改行ながら記述しているのですが、htmlに変換した際に改行位置で半角スペースが挿入された状態でブラウザに表示されます。
本文を記述している際も同様に改行しているのですが、本文の場合にはこのような現象がないように見受けられます。
この現象を回避するためには、改行しないで記述するしか無いのでしょうか?
いわゆる最後の手段的な用途として。
img要素に振るよりもdiv.image要素に振った方がいいかもしれません。
たとえば、「TDD」という単語を使うとき、
初出時は「TDD(Test Driven Development: テスト駆動開発)」のように説明を入れて、
次回からは「TDD」とだけにするような機能。
初出時というのは、
の2種類が必要かな。
同じ言い回しが何度も出てくる場合に使いたい。
彼は「@<include>{his_saying.txt}」と言った。
....
先ほど彼が「@<include>{his_saying.txt}」と言ったように……
PREDEFでは記述したファイル名に対し、ReVIEW内部でre拡張子を補完するので拡張子がtxtなどのファイルを指定することができません。
諸々の都合で中身がReVIEWフォーマットの.txtなファイルを使うということがあるので明示的に拡張子を指定する形にしてもらえるとありがたいです。現にCHAPSの方はそういう仕様になっているようですし。
バージョンは0.9.0です。
複数のビルダで図版フォーマットなどが違う場合、images/ 1つだといろいろやりづらい(symlinkで対処してきたが)。
また、章単位サブフォルダにしたいという要求に対してコマンドオプションをいちいちつけるのも格好悪い気がしてきた。
たとえば、自動で次のようにヒットするまで探すようにできるか?
対象となるコマンドはimage、indepimage、icon。
error: undefined method `inline_hd_chap' for #ReVIEW::IDGXMLBuilder:0x100586d20
よくわからない……。
とりあえず、
review-comileのoutencodingを使うようにする。
英語のときに使う「何か」がわかれば対応できそう。普通に半角スペースでいいのかな?
http://twitter.com/#!/watson1978/status/135271237311135745
『「章」「図」「リスト」など日本語が自動的に埋めこまれますが、ReVIEWで英語のドキュメントを作成する場合に何か必要な設定があるのでしょうか?』とのことですが、今は設定だけではできないので何とかしたいです。
#36 から分割
File.openしたものに対してエンコーディングを指定 or 変換しなければいけない。
//flushrightがhtmlbuilderに追加されていないようです。
私の手元で追加してみました。
マージしてもらえると幸いです。
http://github.com/authorNari/review/commit/e7a28ac9396d6ef96011a203b3b29d49130e22a5
別の名前のCSSを指定して使っていたところ、epubcheck v1.2をかけてみたら、
WARNING: book.epub: item (OEBPS/stylesheet.css) exists in the zip file, but is not declared in the OPF file
という警告が出てくるようです。まあ、実害はないのですが。
stylesheet.cssの中身は以下のようになっています。
/* sample style sheet for epub */
@charset "utf-8";
body {
}
「本文中のある見出しにアンカーを置き、そのアンカーへのリンクを貼る、といったことは可能でしょうか。
HTMLでのと~と同じような機能です。」
という問い合わせがありました。
@や@<title>でリンクできるようにする、というのがいいかも?
noteメソッドがないのって理由がありますか?
詳細はあとで実装することにして、とりあえずはquoteと同じにするというのはどうでしょうか?
def note(lines)
latex_block 'quote', lines
end
-a か --help をデフォルトにする?
どうもYAML関係のフォーマットが若干異なっている(?)ようで、test_epubmaker.rbのテストが2つ失敗します。
(YAMLの形でオブジェクトの比較をするのはちょっと止めた方がいいかなあ、と思いました)
Finished tests in 0.711989s, 421.3548 tests/s, 2557.6238 assertions/s.
Failure:
test_stage2_add_l1item(EPUBMakerTest) [/Users/maki/git/review/test/test_epubmaker.rb:126]:
<"--- !ruby/object:EPUBMaker::Content \nfile: ch01.html\nid: ch01-html\nlevel: 1\nmedia: application/xhtml+xml\nnotoc: \ntitle: CH01\n"> expected but was
<"--- !ruby/object:EPUBMaker::Content\nid: ch01-html\nfile: ch01.html\nmedia: application/xhtml+xml\ntitle: CH01\nlevel: 1\nnotoc: \n">.
Failure:
test_stage3_add_various_items(EPUBMakerTest) [/Users/maki/git/review/test/test_epubmaker.rb:356]:
<"--- \n- !ruby/object:EPUBMaker::Content \n file: ch01.html\n id: ch01-html\n level: 1\n media: application/xhtml+xml\n notoc: \n title: CH01\n- !ruby/object:EPUBMaker::Content \n file: ch02.html\n id: ch02-html\n level: 1\n media: application/xhtml+xml\n notoc: \n title: CH02\n- !ruby/object:EPUBMaker::Content \n file: ch02.html#S1\n id: ch02-html#S1\n level: 2\n media: html#s1\n notoc: \n title: CH02.1\n- !ruby/object:EPUBMaker::Content \n file: ch02.html#S1.1\n id: ch02-html#S1-1\n level: 3\n media: "1"\n notoc: \n title: CH02.1.1\n- !ruby/object:EPUBMaker::Content \n file: ch02.html#S1.1.1\n id: ch02-html#S1-1-1\n level: 4\n media: "1"\n notoc: \n title: CH02.1.1.1\n- !ruby/object:EPUBMaker::Content \n file: ch02.html#S1.1.1.1\n id: ch02-html#S1-1-1-1\n level: 5\n media: "1"\n notoc: \n title: CH02.1.1.1.1\n- !ruby/object:EPUBMaker::Content \n file: ch02.html#S1.1.2\n id: ch02-html#S1-1-2\n level: 4\n media: "2"\n notoc: \n title: CH02.1.1.2\n- !ruby/object:EPUBMaker::Content \n file: ch02.html#S2\n id: ch02-html#S2\n level: 2\n media: html#s2\n notoc: \n title: CH02.2\n- !ruby/object:EPUBMaker::Content \n file: ch02.html#S2.1\n id: ch02-html#S2-1\n level: 3\n media: "1"\n notoc: \n title: CH02.2.1\n- !ruby/object:EPUBMaker::Content \n file: ch03.html\n id: ch03-html\n level: 1\n media: application/xhtml+xml\n notoc: \n title: CH03\n- !ruby/object:EPUBMaker::Content \n file: ch03.html#S1\n id: ch03-html#S1\n level: 2\n media: html#s1\n notoc: \n title: CH03.1\n- !ruby/object:EPUBMaker::Content \n file: ch03.html#S1.1\n id: ch03-html#S1-1\n level: 3\n media: "1"\n notoc: \n title: CH03.1.1\n- !ruby/object:EPUBMaker::Content \n file: ch04.html\n id: ch04-html\n level: 1\n media: application/xhtml+xml\n notoc: \n title: CH04\n- !ruby/object:EPUBMaker::Content \n file: sample.png\n id: sample-png\n level: \n media: image/png\n notoc: \n title: \n- !ruby/object:EPUBMaker::Content \n file: sample.jpg\n id: sample-jpg\n level: \n media: image/jpeg\n notoc: \n title: \n- !ruby/object:EPUBMaker::Content \n file: sample.JPEG\n id: sample-JPEG\n level: \n media: image/jpeg\n notoc: \n title: \n- !ruby/object:EPUBMaker::Content \n file: sample.SvG\n id: sample-SvG\n level: \n media: image/svg+xml\n notoc: \n title: \n- !ruby/object:EPUBMaker::Content \n file: sample.GIF\n id: sample-GIF\n level: \n media: image/gif\n notoc: \n title: \n- !ruby/object:EPUBMaker::Content \n file: sample.css\n id: sample-css\n level: \n media: text/css\n notoc: \n title: \n"> expected but was
<"---\n- !ruby/object:EPUBMaker::Content\n id: ch01-html\n file: ch01.html\n media: application/xhtml+xml\n title: CH01\n level: 1\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch02-html\n file: ch02.html\n media: application/xhtml+xml\n title: CH02\n level: 1\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch02-html#S1\n file: ch02.html#S1\n media: html#s1\n title: CH02.1\n level: 2\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch02-html#S1-1\n file: ch02.html#S1.1\n media: '1'\n title: CH02.1.1\n level: 3\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch02-html#S1-1-1\n file: ch02.html#S1.1.1\n media: '1'\n title: CH02.1.1.1\n level: 4\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch02-html#S1-1-1-1\n file: ch02.html#S1.1.1.1\n media: '1'\n title: CH02.1.1.1.1\n level: 5\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch02-html#S1-1-2\n file: ch02.html#S1.1.2\n media: '2'\n title: CH02.1.1.2\n level: 4\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch02-html#S2\n file: ch02.html#S2\n media: html#s2\n title: CH02.2\n level: 2\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch02-html#S2-1\n file: ch02.html#S2.1\n media: '1'\n title: CH02.2.1\n level: 3\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch03-html\n file: ch03.html\n media: application/xhtml+xml\n title: CH03\n level: 1\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch03-html#S1\n file: ch03.html#S1\n media: html#s1\n title: CH03.1\n level: 2\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch03-html#S1-1\n file: ch03.html#S1.1\n media: '1'\n title: CH03.1.1\n level: 3\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: ch04-html\n file: ch04.html\n media: application/xhtml+xml\n title: CH04\n level: 1\n notoc: \n- !ruby/object:EPUBMaker::Content\n id: sample-png\n file: sample.png\n media: image/png\n title: \n level: \n notoc: \n- !ruby/object:EPUBMaker::Content\n id: sample-jpg\n file: sample.jpg\n media: image/jpeg\n title: \n level: \n notoc: \n- !ruby/object:EPUBMaker::Content\n id: sample-JPEG\n file: sample.JPEG\n media: image/jpeg\n title: \n level: \n notoc: \n- !ruby/object:EPUBMaker::Content\n id: sample-SvG\n file: sample.SvG\n media: image/svg+xml\n title: \n level: \n notoc: \n- !ruby/object:EPUBMaker::Content\n id: sample-GIF\n file: sample.GIF\n media: image/gif\n title: \n level: \n notoc: \n- !ruby/object:EPUBMaker::Content\n id: sample-css\n file: sample.css\n media: text/css\n title: \n level: \n notoc: \n">.
300 tests, 1821 assertions, 2 failures, 0 errors, 0 skips
rake aborted!
Command failed with status (2): [/Users/maki/.rvm/rubies/ruby-1.9.3-p0/bin/...]
review-init プロジェクト名
みたいな感じで、プロジェクトのひな形を作ってくれるようなコマンドがあると
嬉しかったりしませんかね。
toclevel:とsecnolevel:を3などの比較的大きい数字にして、深いインデントを持つファイルを扱う場合、入れ子が正しく生成されず、不正なEPUBが生成されることがある。
問題はreview-epubmakerのロジックで、currentとlevelを直接代入で同じ値に揃えているところがあるのが正しくない。1ずつインクリメント・デクリメントしながら開始タグと終了タグ、li要素の対応を整える必要がある。
#68 で1.9.3 を利用されていたので、 http://travis-ci.org/ を kmuto さんに設定してもらうと、複数のバージョンのテストが楽になっていいんじゃないかと思いました。
例えばpreface.reなどのまえがきを用意している場合、それをPREDEFに登録すると、TOCにそれがなかったり、そもそもTOCが上手く作れなかったりします。
これは、lib/review/htmlbuilder.rbでのheadline_prefix()メソッドで、まえがきの場合は@chapter.numberが値を取得できないためanchorが"'になり、さらにこれを使うheadline()メソッドでa_idが""になり、そのためEPUB生成時点でヘッダのIDが取れず、TOCに反映されなくなるためです。
//image[1][...]
//image[dummy][]
//image[2][...]
@<img>{2}
とすると、それぞれ
図1
図2
図3
となる。
期待値は、
図1
図2
図2
残す理由が何かあったような気もしますが、format.rdoc に統一でよさそうです。
@bibを使うとbib.htmlへの参照になるのですが、review-epubmakerではHTMLファイル名は処理系側で生成するのでbib.htmlを生成することができず、リンクがエラーになります。
http://www.geekpage.jp/blog/?id=2011/6/29/1 を見て、原稿修正時にはそういう機能がほしいなあと思いました。
PDFの注釈機能を使うでもいいし、単純に赤字とかで出力するでもよさそうです。
実行すると以下のようなエラーが出ます。パスの比較をしているところで、物理的には同じパスだけど、名前が違う場合、文字列比較するとエラーになる、と。
1) Failure: test_s_load_default(BookTest) [./test/test_book.rb:44:in `test_s_load_default' ./test/test_book.rb:43:in `chdir' ./test/test_book.rb:43:in `test_s_load_default' /opt/local/lib/ruby/1.8/tmpdir.rb:129:in `mktmpdir' ./test/test_book.rb:41:in `test_s_load_default']: <"/var/folders/eB/eB+DBuHjF2SaQejGnbN5NU+++TI/-Tmp-/d20100902-28887-1lhlmrz"> expected but was <"/private/var/folders/eB/eB+DBuHjF2SaQejGnbN5NU+++TI/-Tmp-/d20100902-28887-1lhlmrz">.
images ディレクトリ直下に画像を全部入れる。
複数の章で同じ画像を使いたい場合は、章ごとに名前やディレクトリを分けなくてもよいと思う。
subdirmode オプションがあるので、singledirmode など。
こんなかんじ
/home/kmuto/review/lib/review/tocparser.rb:98:in `error!': ./hajimeni.re:16: list found before section label (RuntimeError)
hajimeni.re
= はじめに
//flushright{
2012年1月12日 kmuto
//}
何かでエンバグしたのかな。
調査してみます。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.