Code Monkey home page Code Monkey logo

review's Introduction

Re:VIEW

Gem Version Build Status Build status

Re:VIEW is an easy-to-use digital publishing system for paper books and ebooks.

Supported Formats

supported formats

Output formats Re:VIEW supports are:

  • EPUB
  • LaTeX
  • InDesign (IDGXML)
  • Markdown
  • plain text (TOPBuilder Text Markup Language)

Re:VIEW uses its original format('Re:VIEW format') as source files. See doc/format.md.

Commands

There are commands generate files directly.

  • review-epubmaker: generate EPUB file.
  • review-pdfmaker: generate PDF file using LaTeX (TeXLive).
  • review-textmaker: generate text files.
  • review-webmaker: generate Web pages.
  • review-idgxmlmaker: generate InDesign XML files.

And some useful commands.

  • review-init: create a project.
  • review-compile: compile Re:VIEW format files.
  • review-vol: figure out size of Re:VIEW files.
  • review-index: generate index with various format.
  • review-preproc: preprocessor.
  • review-epub2html: generate single HTML file from EPUB for CSS typesetting.
  • review-update: update project files.

Installation

Install gem yourself as:

$ gem install review

Or build from source:

$ git clone https://github.com/kmuto/review.git
$ cd review
$ rake install

Or add the ./bin directory to your $PATH:

$ echo "export PATH=PATH_OF_REVIEW/bin:$PATH" >> ~/.profile

Quick Start

$ review-init hello
$ cd hello
$ (... add and edit *.re file, config.yml and catalog.yml ...)
$ rake epub         ## generating EPUB
$ rake pdf          ## generating PDF (Requirement TeXLive)
$ rake text         ## generating texts
$ rake web          ## generating Web pages
$ rake idgxml       ## generating InDesign XML files
$ rake vivliostyle  ## generating PDF using Vivliostyle-CLI (Requirement Vivliostyle-CLI)

For further information, see doc/quickstart.md

Resources

URL
Home http://reviewml.org
Project https://github.com/kmuto/review/
Gems https://rubygems.org/gems/review
Q&A https://github.com/kmuto/review/discussions
Wiki https://github.com/kmuto/review/wiki
Bugs https://github.com/kmuto/review/issues

Documents

Issues tracker

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

License

Main part of Re:VIEW is applied GNU Lesser General Public License (LGPL). See COPYING file.

Exception:

  • doc/, samples/: MIT License. See LICENSE file.
  • jumoline.sty, vendor/jumoline: The LaTeX Project Public License. See LPPL file.
  • plistings.sty, vendor/plistings: MIT License. See LICENSE file.
  • gentombow.sty, vendor/gentombow: BSD License. See LICENSE file.
  • jsbook.cls, vendor/jsclasses: BSD License. See LICENSE file.

Copyright

Copyright (c) 2006-2024 Minero Aoki, Kenshi Muto, Masayoshi Takahashi, Masanori Kado.

review's People

Contributors

akinomurasame avatar arika avatar authornari avatar changeworld avatar dmiyakawa avatar gfx avatar hayamiz avatar hidenorigoto avatar hirocaster avatar imamurayusuke avatar kazutomi avatar kdmsnr avatar keiji avatar kmuto avatar kn1cht avatar krororo avatar m-shibata avatar masarakki avatar mhidaka avatar munepi avatar nnabeyang avatar odaki avatar orangain avatar snoozer05 avatar takahashim avatar tmtm avatar vvakame avatar watson1978 avatar zaki50 avatar znz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

review's Issues

本文中から見出しにリンクで飛べるようにしたい

「本文中のある見出しにアンカーを置き、そのアンカーへのリンクを貼る、といったことは可能でしょうか。
HTMLでのと同じような機能です。」
という問い合わせがありました。

@や@<title>でリンクできるようにする、というのがいいかも?

latex/pdfをi18n対応

よくわからない……。
とりあえず、

  • babel を使う
  • prechaptername あたりを修正

BookTestが通らない

実行すると以下のようなエラーが出ます。パスの比較をしているところで、物理的には同じパスだけど、名前が違う場合、文字列比較するとエラーになる、と。

  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">.

no support @<bib> in EPUB

@bibを使うとbib.htmlへの参照になるのですが、review-epubmakerではHTMLファイル名は処理系側で生成するのでbib.htmlを生成することができず、リンクがエラーになります。

@<dtp>、@<raw>、//rawでビルダごとの指定をできるようにしたい

タグ名は別のでもいいけど。XMLインストラクションにして後処理用に使うdtpタグ、生タグ含めて挿入するrawタグは紙面構成のためにやむをえず使わざるを得ないことが多いけど、マルチフォーマット展開をする際にはゴミになったりあるいは競合したりすることになる。
//rawについてはたとえば//raw[生情報] 、//raw[builder1,builder2][生情報] のようにオプション化できそうだけど、インラインタグの@と@についてはオプションを持たせられない。
ビルダごとのタグを用意べきか…?

epubmakerで、PREDEFの章タイトルがTOCに正しく反映されない

例えばpreface.reなどのまえがきを用意している場合、それをPREDEFに登録すると、TOCにそれがなかったり、そもそもTOCが上手く作れなかったりします。
これは、lib/review/htmlbuilder.rbでのheadline_prefix()メソッドで、まえがきの場合は@chapter.numberが値を取得できないためanchorが"'になり、さらにこれを使うheadline()メソッドでa_idが""になり、そのためEPUB生成時点でヘッダのIDが取れず、TOCに反映されなくなるためです。

EPUB内のtoc.htmlの入れ子構造が壊れることがある

toclevel:とsecnolevel:を3などの比較的大きい数字にして、深いインデントを持つファイルを扱う場合、入れ子が正しく生成されず、不正なEPUBが生成されることがある。

問題はreview-epubmakerのロジックで、currentとlevelを直接代入で同じ値に揃えているところがあるのが正しくない。1ずつインクリメント・デクリメントしながら開始タグと終了タグ、li要素の対応を整える必要がある。

Ruby 1.9.3でtestが失敗する

どうもYAML関係のフォーマットが若干異なっている(?)ようで、test_epubmaker.rbのテストが2つ失敗します。
(YAMLの形でオブジェクトの比較をするのはちょっと止めた方がいいかなあ、と思いました)

Finished tests in 0.711989s, 421.3548 tests/s, 2557.6238 assertions/s.

  1. 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">.

  2. 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/...]

その場にファイルの内容を展開する記法が欲しい

同じ言い回しが何度も出てくる場合に使いたい。

彼は「@<include>{his_saying.txt}」と言った。
....
先ほど彼が「@<include>{his_saying.txt}」と言ったように……
  • タグ名はincludeでいいですかね?(なんかちょっと微妙かも)
  • インラインだけでいいですよね?

latexbuilderにもnoteメソッドがほしい

noteメソッドがないのって理由がありますか?
詳細はあとで実装することにして、とりあえずはquoteと同じにするというのはどうでしょうか?

def note(lines)
  latex_block 'quote', lines
end

初出時の単語にだけ説明を入れるような機能

たとえば、「TDD」という単語を使うとき、
初出時は「TDD(Test Driven Development: テスト駆動開発)」のように説明を入れて、
次回からは「TDD」とだけにするような機能。

初出時というのは、

  • 書籍の初出時
  • 章の初出時

の2種類が必要かな。

PREDEFが拡張子re以外のものを扱えない

PREDEFでは記述したファイル名に対し、ReVIEW内部でre拡張子を補完するので拡張子がtxtなどのファイルを指定することができません。

諸々の都合で中身がReVIEWフォーマットの.txtなファイルを使うということがあるので明示的に拡張子を指定する形にしてもらえるとありがたいです。現にCHAPSの方はそういう仕様になっているようですし。

バージョンは0.9.0です。

review-pdfmaker で PDF を作成するとエラーが出る

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...]

リストの途中で改行すると、スペースが入る

以下のように、ReVIEWでリストを記述しております。

 1. インスタンス変数@wordsへText Fieldの文字列を追加します。
 2. Text Fieldに空の文字列を設定し、入力されていた文字列を消去します。
    setStringValueメソッドを使用すると、Text Fieldに文字列を設定することができま
    す。

リストが長くなり読みにくいので途中で改行ながら記述しているのですが、htmlに変換した際に改行位置で半角スペースが挿入された状態でブラウザに表示されます。
本文を記述している際も同様に改行しているのですが、本文の場合にはこのような現象がないように見受けられます。

この現象を回避するためには、改行しないで記述するしか無いのでしょうか?

生成するファイル名を*.reと同じ名前(拡張子以外)になるようにしたい

issue #42 に関連して、@〈chap〉{advance}などをadvance.reを変換した後のHTMLファイルにリンクするには、変換後のファイル名が分からないといけません。

ところが、現状はchap12.htmlやpost1.htmlのようになったりするため、相当頑張らないとリンクが貼れません。

というわけで、デフォルトかオプションで、生成するHTMLやtexのファイルのファイル名を、元のReVIEWソースファイルと同じ名前(拡張子だけ違う)になるようにしたいです。

review-compile で Encoding::CompatibilityError

すべて 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 に変換されてしまうのが原因のように思われます。

図の参照をもう少しインテリジェントにしたい

複数のビルダで図版フォーマットなどが違う場合、images/ 1つだといろいろやりづらい(symlinkで対処してきたが)。
また、章単位サブフォルダにしたいという要求に対してコマンドオプションをいちいちつけるのも格好悪い気がしてきた。

たとえば、自動で次のようにヒットするまで探すようにできるか?

  1. images/<builder>/<re prefix>/<ID>.拡張子
  2. images/<builder>/<re prefix>-<ID>.拡張子
  3. images/<re prefix>/<ID>.拡張子
  4. images/<re prefix>-<ID>.拡張子

対象となるコマンドはimage、indepimage、icon。

EPUBで、OEBPS/stylesheet.cssが必ず生成されてしまう

別の名前の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 {
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.