cheepub 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c9519aceb60bfbb30c2ff21200f3909537885c3fd900335ca81fec538dc0d2be
4
- data.tar.gz: 0df9a1276161c2b51c11ed242a5f16c4e935fe2a51b26f0f9b11861a4984249c
3
+ metadata.gz: 87e2e321819c633aba8e6e83a2b8c35e3e0e70e0a0f5ea8fac404821d95b0980
4
+ data.tar.gz: d74f8cf8dd36a5d20596700219272b003785cae0ebc699518109e1ed9e56580c
5
5
  SHA512:
6
- metadata.gz: 0e4a5d1254f8e2ab26d1b45168228a6d6fd6c955a42747474de99b109a9a4e1ad994c13e2743600f34531ba84ca8d41453dcd34c37185202ea230c2e3e484aed
7
- data.tar.gz: 50bebebb6d4dfd1746a476a83b8d4923bd2f90ef2fcda630e1390abb7969ac49367a83674f5303e5e6e38d290b5a767b4e91468c5b7ca91d337262e7c568662b
6
+ metadata.gz: 39e75b9575f170db21f8aa6c01594d44e2cd4f990feb118d5fa23171631b15f96402a2d3d7db57071905491754709e5e8157d7958000d8adffd160e7370c64b5
7
+ data.tar.gz: 7efb5eeaabc9e9e29ce0728de2c1917d73783797b756487a801ed5fc1b5788b1f49e4348262a6bcaff45309c09cedb1ac41c716f71acb5e923fe121a5363e675
data/README.md CHANGED
@@ -96,6 +96,11 @@ In a little district west of Washington Square the streets have run crazy and br
96
96
 
97
97
  ## History
98
98
 
99
+ ### 0.11.0
100
+
101
+ - support titlepage in LaTeX
102
+ - support colophon in LaTeX
103
+
99
104
  ### 0.10.0
100
105
 
101
106
  - support Images in EPUB
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["takahashim"]
9
9
  spec.email = ["maki@rubycolor.org"]
10
10
 
11
- spec.summary = "Simple EPUB generator from Markdown"
12
- spec.description = %q{Simple EPUB generator from Markdown. Inspired by denden converter}
11
+ spec.summary = "Simple EPUB/PDF generator from Markdown"
12
+ spec.description = %q{Simple EPUB/PDF generator from Markdown. Inspired by denden converter}
13
13
  spec.homepage = "https://github.com/takahashim/cheepub"
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency "oga", "~> 2.15"
26
26
  spec.add_dependency "coderay"
27
27
  spec.add_dependency "rouge"
28
- spec.add_dependency "rb_latex", "~> 0.3.0"
28
+ spec.add_dependency "rb_latex", "~> 0.5.0"
29
29
 
30
30
  spec.add_development_dependency "rufo", "~> 0.3"
31
31
  spec.add_development_dependency "bundler", "~> 1.16"
@@ -22,6 +22,7 @@ require "cheepub/nav"
22
22
  require "cheepub/converter/cheelatex"
23
23
  require "cheepub/converter/cheehtml"
24
24
  require "cheepub/asset_store"
25
+ require "cheepub/i18n"
25
26
 
26
27
  module Cheepub
27
28
  TEMPLATES_DIR = File.join(File.dirname(__FILE__), "../templates")
@@ -14,6 +14,18 @@ module Cheepub
14
14
  def key_to_sym(key)
15
15
  (key.to_sym rescue nil) || key
16
16
  end
17
+
18
+ def deep_merge!(other_hash, &block)
19
+ merge!(other_hash) do |key, this_val, other_val|
20
+ if this_val.is_a?(Hash) && other_val.is_a?(Hash)
21
+ this_val.dup.deep_merge!(other_val, &block)
22
+ elsif block_given?
23
+ block.call(key, this_val, other_val)
24
+ else
25
+ other_val
26
+ end
27
+ end
28
+ end
17
29
  end
18
30
  end
19
31
  end
@@ -47,6 +47,7 @@ module Cheepub
47
47
  filename = "bodymatter_#{idx}.xhtml"
48
48
  @book.add_item(filename).add_raw_content(html)
49
49
  end
50
+ make_colophon(params)
50
51
  end
51
52
  @asset_store.each_relpath_and_content do |path, content|
52
53
  @book.add_item(path).add_raw_content(content)
@@ -60,6 +61,14 @@ module Cheepub
60
61
  end
61
62
  end
62
63
 
64
+ def make_colophon(params)
65
+ if params[:colophon]
66
+ @colophon = params[:colophon]
67
+ content = apply_template("colophon.xhtml.erb")
68
+ @book.add_item("colophon.xhtml").add_raw_content(content)
69
+ end
70
+ end
71
+
63
72
  def apply_template(template_file)
64
73
  template = File.read(File.join(Cheepub::TEMPLATES_DIR, template_file))
65
74
  return ERB.new(template).result(binding)
@@ -28,7 +28,7 @@ module Cheepub
28
28
  parse_creator(params[:creator])
29
29
  ##@maker.language = params[:language] || 'ja'
30
30
  @maker.publisher = params[:publisher] if params[:publisher]
31
- @maker.date= params[:date] || Time.now
31
+ @maker.date = params[:date] || Time.now
32
32
  @maker.lastmodified = params[:lastModified] || Time.now
33
33
  @maker.page_progression_direction = params[:pageDirection]
34
34
  if params.key?(:latexCommand)
@@ -41,6 +41,18 @@ module Cheepub
41
41
  if params[:documentClass]
42
42
  @maker.document_class = params[:documentClass]
43
43
  end
44
+ if params[:titlepage]
45
+ @maker.titlepage = params[:titlepage]
46
+ end
47
+ if params[:colophon]
48
+ @maker.colophon = params[:colophon]
49
+ end
50
+ if params[:colophon_before]
51
+ @maker.colophon_before = params[:colophon_before].gsub(/\n/m, "\\par ") + "\\vspace{5mm} \\par\n"
52
+ end
53
+ if params[:colophon_after]
54
+ @maker.colophon_after = params[:colophon_after].gsub(/\n/m, "\\par ")
55
+ end
44
56
  @content.each_with_index do |file, idx|
45
57
  content = Cheepub::Markdown.new(file, page_direction: params[:pageDirection]).to_latex
46
58
  filename = "bodymatter_#{idx}.tex"
@@ -0,0 +1,131 @@
1
+ require 'cheepub/ext_hash'
2
+
3
+ module Cheepub
4
+ class I18n
5
+ using Cheepub::ExtHash
6
+
7
+ ## some codes are from Ruby's I18n https://github.com/svenfuchs/i18n/
8
+
9
+ class InterpolateError < ArgumentError
10
+ def initialize(key, values, str)
11
+ @key, @values, @str = key, values, str
12
+ super "missing interpolation argument #{key.inspect} in #{str.inspect} (#{values.inspect} given)"
13
+ end
14
+ end
15
+
16
+ class InvalidLocaleData < ArgumentError
17
+ attr_reader :filename
18
+ def initialize(filename, exception_message)
19
+ @filename, @exception_message = filename, exception_message
20
+ super "can not load translations from #{filename}: #{exception_message}"
21
+ end
22
+ end
23
+
24
+ INTERPOLATION_PATTERN = %r<(?:%%|%\{([A-Za-z0-9_]+)\})>
25
+
26
+ def self.load_path=(path)
27
+ @i18n.load_path = path
28
+ end
29
+
30
+ def self.load_path
31
+ @i18n.load_path ||= []
32
+ @i18n.load_path
33
+ end
34
+
35
+ def self.available_locales=(locales)
36
+ @i18n.available_locales = locales
37
+ end
38
+
39
+ def self.available_locales
40
+ @i18n.available_locales
41
+ end
42
+
43
+ def self.default_locale=(locale)
44
+ @i18n.default_locale = locale
45
+ end
46
+
47
+ def self.t(*args)
48
+ key = args.shift
49
+ @i18n.translate(key, args)
50
+ end
51
+
52
+ @i18n = self.new
53
+
54
+ attr_accessor :load_path, :available_locales, :default_locale
55
+
56
+ def initialize
57
+ @translations = {}
58
+ @available_locales = [:ja, :en]
59
+ @default_locales = :en
60
+ end
61
+
62
+ def load_files(*files)
63
+ filenames = I18n.load_path if filenames.empty?
64
+ filenames.each { |filename| load_data(filename) }
65
+ end
66
+
67
+ def load_data(file)
68
+ begin
69
+ data = nil
70
+ if file.kind_of?(Hash)
71
+ data = file
72
+ else
73
+ content = File.read(file)
74
+ data = YAML.safe_load(content)
75
+ end
76
+ data.symbolize_keys!
77
+ pp data
78
+ data.each { |locale, d| store_translations(locale, d || {}) }
79
+ rescue => e
80
+ raise InvalidLocaleData.new(file, e.inspect)
81
+ end
82
+ end
83
+
84
+ def store_translations(locale, data)
85
+ locale = locale.to_sym
86
+ if !I18n.available_locales.include?(locale)
87
+ return data
88
+ end
89
+ translations[locale] ||= {}
90
+ data.symbolize_keys!
91
+ translations[locale].deep_merge!(data)
92
+ end
93
+
94
+ def translations
95
+ @translations
96
+ end
97
+
98
+ def translate(key, options = {})
99
+ locale ||= @default_locale
100
+ entry = lookup(locale, key)
101
+ interpolate(entry, options)
102
+ end
103
+
104
+ alias_method :t, :translate
105
+
106
+ def lookup(locale, key)
107
+ translations[locale][key] rescue nil
108
+ end
109
+
110
+ def interpolate(str, values)
111
+ return "" if str.nil?
112
+ str.gsub(INTERPOLATION_PATTERN) do |match|
113
+ if match == '%%'
114
+ '%'
115
+ else
116
+ key = $1.to_sym
117
+ if values.key?(key)
118
+ values[key]
119
+ else
120
+ raise I18n::InterpolateError.new(key, values, str)
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
126
+
127
+ I18n.load_path += Dir["../../locale/*.yml"]
128
+ I18n.available_locales = [:en, :ja]
129
+ I18n.default_locale = :ja
130
+
131
+ end
@@ -1,3 +1,3 @@
1
1
  module Cheepub
2
- VERSION = "0.10.0"
2
+ VERSION = "0.11.0"
3
3
  end
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: 山月記
3
+ author: 中島 敦
4
+ publisher: 青空文庫
5
+ pageDirection: rtl
6
+ license: public domain
7
+ colophon_before: "一九九八年十一月十二日 公開\n二〇一〇年十一月 二日 修正"
8
+ colophon_after: "青空文庫作成ファイル\nこのファイルは、インターネットの図書館、青空文庫(http://www.aozora.gr.jp/)で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。\n(原文: https://www.aozora.gr.jp/cards/000119/card624.html)"
9
+ colophon:
10
+ 著 者: 中島 敦
11
+ 底 本:
12
+ - 「李陵・山月記」新潮文庫、新潮社
13
+ - 一九六九(昭和四十四)年九月二〇日発行
14
+ 入 力: 平松大樹
15
+ 校 正: 林めぐみ
16
+ 発 行: 青空文庫
17
+ ---
18
+
19
+ # 山月記
20
+
21
+  {隴西|ろうさい}の{李徴|りちょう}は博学{才穎|さいえい}、天宝の末年、若くして名を{虎榜|こぼう}に連ね、ついで{江南尉|こうなんい}に補せられたが、性、{狷介|けんかい}、{自|みずか}ら{恃|たの}むところ{頗|すこぶ}る厚く、{賤吏|せんり}に甘んずるを{潔|いさぎよ}しとしなかった。いくばくもなく官を退いた後は、{故山|こざん}、{虢略|かくりゃく}に{帰臥|きが}し、人と{交|まじわり}を絶って、ひたすら詩作に{耽|ふけ}った。下吏となって長く{膝|ひざ}を俗悪な大官の前に屈するよりは、詩家としての名を死後百年に{遺|のこ}そうとしたのである。しかし、文名は容易に揚らず、生活は日を{逐|お}うて苦しくなる。李徴は{漸|ようや}く{焦躁|しょうそう}に駆られて来た。この{頃|ころ}からその{容貌|ようぼう}も{峭刻|しょうこく}となり、肉落ち骨{秀|ひい}で、眼光のみ{徒|いたず}らに{炯々|けいけい}として、{曾|かつ}て進士に{登第|とうだい}した頃の{豊頬|ほうきょう}の美少年の{俤|おもかげ}は、{何処|どこ}に求めようもない。数年の後、貧窮に{堪|た}えず、妻子の衣食のために{遂|つい}に節を屈して、再び東へ赴き、一地方官吏の職を奉ずることになった。一方、これは、{己|おのれ}の詩業に半ば絶望したためでもある。曾ての同輩は既に{遥|はる}か高位に進み、彼が昔、鈍物として{歯牙|しが}にもかけなかったその連中の下命を拝さねばならぬことが、往年の{儁才|しゅんさい}李徴の自尊心を{如何|いか}に{傷|きずつ}けたかは、想像に{難|かた}くない。彼は{怏々|おうおう}として楽しまず、{狂悖|きょうはい}の性は{愈々|いよいよ}抑え{難|がた}くなった。一年の後、公用で旅に出、{汝水|じょすい}のほとりに宿った時、遂に発狂した。{或|ある}夜半、急に顔色を変えて寝床から起上ると、何か訳の分らぬことを叫びつつそのまま下にとび下りて、{闇|やみ}の中へ{駈出|かけだ}した。彼は二度と{戻|もど}って来なかった。附近の山野を捜索しても、何の手掛りもない。その後李徴がどうなったかを知る者は、{誰|だれ}もなかった。
22
+
23
+  翌年、{監察御史|かんさつぎょし}、{陳郡|ちんぐん}の{袁傪|えんさん}という者、勅命を奉じて{嶺南|れいなん}に{使|つかい}し、{途|みち}に{商於|しょうお}の地に宿った。次の朝{未|ま}だ暗い{中|うち}に出発しようとしたところ、駅吏が言うことに、これから先の道に{人喰虎|ひとくいどら}が出る{故|ゆえ}、旅人は白昼でなければ、通れない。今はまだ朝が早いから、今少し待たれたが{宜|よろ}しいでしょうと。袁傪は、しかし、{供廻|ともまわ}りの多勢なのを恃み、駅吏の言葉を{斥|しりぞ}けて、出発した。残月の光をたよりに林中の草地を通って行った時、果して一匹の{猛虎|もうこ}が{叢|くさむら}の中から躍り出た。虎は、あわや袁傪に躍りかかるかと見えたが、{忽|たちま}ち身を{飜|ひるがえ}して、元の叢に隠れた。叢の中から人間の声で「あぶないところだった」と繰返し{呟|つぶや}くのが聞えた。その声に袁傪は聞き{憶|おぼ}えがあった。{驚懼|きょうく}の中にも、彼は{咄嗟|とっさ}に思いあたって、叫んだ。「その声は、我が友、李徴子ではないか?」袁傪は李徴と同年に進士の第に登り、友人の少かった李徴にとっては、最も親しい友であった。温和な袁傪の性格が、{峻峭|しゅんしょう}な李徴の性情と衝突しなかったためであろう。
24
+
25
+  叢の中からは、{暫|しばら}く返辞が無かった。しのび泣きかと思われる{微|かす}かな声が時々{洩|も}れるばかりである。ややあって、低い声が答えた。「如何にも自分は隴西の李徴である」と。
26
+
27
+  袁傪は恐怖を忘れ、馬から下りて叢に近づき、{懐|なつ}かしげに{久闊|きゅうかつ}を叙した。そして、{何故|なぜ}叢から出て来ないのかと問うた。李徴の声が答えて言う。自分は今や異類の身となっている。どうして、おめおめと{故人|とも}の前にあさましい姿をさらせようか。かつ又、自分が姿を現せば、必ず君に{畏怖嫌厭|いふけんえん}の情を起させるに決っているからだ。しかし、今、図らずも故人に{遇|あ}うことを得て、{愧赧|きたん}の念をも忘れる程に懐かしい。どうか、ほんの暫くでいいから、我が醜悪な今の外形を{厭|いと}わず、曾て君の友李徴であったこの自分と話を交してくれないだろうか。
28
+
29
+  後で考えれば不思議だったが、その時、袁傪は、この超自然の怪異を、実に素直に{受容|うけい}れて、少しも怪もうとしなかった。彼は部下に命じて行列の進行を{停|と}め、自分は叢の{傍|かたわら}に立って、見えざる声と対談した。都の{噂|うわさ}、旧友の消息、袁傪が現在の地位、それに対する李徴の祝辞。青年時代に親しかった者同志の、あの隔てのない語調で、それ{等|ら}が語られた後、袁傪は、李徴がどうして今の身となるに至ったかを{訊|たず}ねた。草中の声は次のように語った。
30
+
31
+  今から一年程前、自分が旅に出て汝水のほとりに泊った夜のこと、一睡してから、ふと{眼|め}を覚ますと、戸外で誰かが我が名を呼んでいる。声に応じて外へ出て見ると、声は闇の中から{頻|しき}りに自分を招く。覚えず、自分は声を追うて走り出した。無我夢中で駈けて行く中に、{何時|いつ}しか途は山林に入り、しかも、知らぬ間に自分は左右の手で地を{攫|つか}んで走っていた。何か{身体|からだ}中に力が{充|み}ち満ちたような感じで、軽々と岩石を跳び越えて行った。気が付くと、手先や{肱|ひじ}のあたりに毛を生じているらしい。少し明るくなってから、谷川に臨んで姿を映して見ると、既に虎となっていた。自分は初め眼を信じなかった。次に、これは夢に違いないと考えた。夢の中で、これは夢だぞと知っているような夢を、自分はそれまでに見たことがあったから。どうしても夢でないと悟らねばならなかった時、自分は{茫然|ぼうぜん}とした。そうして{懼|おそ}れた。全く、どんな事でも起り得るのだと思うて、深く懼れた。しかし、何故こんな事になったのだろう。分らぬ。全く何事も我々には{判|わか}らぬ。理由も分らずに押付けられたものを大人しく受取って、理由も分らずに生きて行くのが、我々生きものの*さだめ*だ。自分は{直|す}ぐに死を{想|おも}うた。しかし、その時、眼の前を一匹の{兎|うさぎ}が駈け過ぎるのを見た途端に、自分の中の*人間*は忽ち姿を消した。再び自分の中の*人間*が目を覚ました時、自分の口は兎の血に{塗|まみ}れ、あたりには兎の毛が散らばっていた。これが虎としての最初の経験であった。それ以来今までにどんな所行をし続けて来たか、それは到底語るに忍びない。ただ、一日の中に必ず数時間は、人間の心が{還|かえ}って来る。そういう時には、曾ての日と同じく、人語も{操|あやつ}れれば、複雑な思考にも堪え得るし、{経書|けいしょ}の章句を{誦|そら}んずることも出来る。その人間の心で、虎としての{己|おのれ}の{残虐|ざんぎゃく}な{行|おこない}のあとを見、己の運命をふりかえる時が、最も情なく、恐しく、{憤|いきどお}ろしい。しかし、その、人間にかえる数時間も、日を経るに従って次第に短くなって行く。今までは、どうして虎などになったかと怪しんでいたのに、この間ひょいと気が付いて見たら、{己|おれ}はどうして以前、人間だったのかと考えていた。これは恐しいことだ。今少し{経|た}てば、{己|おれ}の中の人間の心は、獣としての習慣の中にすっかり{埋|うも}れて消えて{了|しま}うだろう。ちょうど、古い宮殿の{礎|いしずえ}が次第に土砂に埋没するように。そうすれば、しまいに己は自分の過去を忘れ果て、一匹の虎として狂い廻り、今日のように途で君と出会っても{故人|とも}と認めることなく、君を裂き{喰|くろ}うて何の悔も感じないだろう。一体、獣でも人間でも、もとは何か{他|ほか}のものだったんだろう。初めはそれを憶えているが、次第に忘れて了い、初めから今の形のものだったと思い込んでいるのではないか? いや、そんな事はどうでもいい。己の中の人間の心がすっかり消えて了えば、恐らく、その方が、己は*しあわせ*になれるだろう。だのに、己の中の人間は、その事を、この上なく恐しく感じているのだ。ああ、全く、どんなに、恐しく、{哀|かな}しく、切なく思っているだろう! 己が人間だった記憶のなくなることを。この気持は誰にも分らない。誰にも分らない。己と同じ身の上に成った者でなければ。ところで、そうだ。己がすっかり人間でなくなって了う前に、一つ頼んで置きたいことがある。
32
+
33
+  袁傪はじめ一行は、息をのんで、{叢中|そうちゅう}の声の語る不思議に聞入っていた。声は続けて言う。
34
+
35
+  他でもない。自分は元来詩人として名を成す積りでいた。しかも、業{未|いま}だ成らざるに、この運命に立至った。曾て作るところの詩数百{篇|ぺん}、{固|もと}より、まだ世に行われておらぬ。遺稿の所在も{最早|もはや}判らなくなっていよう。ところで、その中、今も{尚|なお}{記誦|きしょう}せるものが数十ある。これを我が{為|ため}に伝録して{戴|いただ}きたいのだ。何も、これに{仍|よ}って一人前の詩人{面|づら}をしたいのではない。作の巧拙は知らず、とにかく、産を破り心を狂わせてまで自分が{生涯|しょうがい}それに執着したところのものを、一部なりとも後代に伝えないでは、死んでも死に切れないのだ。
36
+
37
+  袁傪は部下に命じ、筆を執って叢中の声に{随|したが}って書きとらせた。李徴の声は叢の中から朗々と響いた。長短{凡|およ}そ三十篇、格調高雅、意趣卓逸、一読して作者の才の非凡を思わせるものばかりである。しかし、袁傪は感嘆しながらも{漠然|ばくぜん}と次のように感じていた。{成程|なるほど}、作者の素質が第一流に属するものであることは疑いない。しかし、このままでは、第一流の作品となるのには、{何処|どこ}か(非常に微妙な点に{於|おい}て)欠けるところがあるのではないか、と。
38
+
39
+  旧詩を吐き終った李徴の声は、突然調子を変え、自らを{嘲|あざけ}るか{如|ごと}くに言った。
40
+
41
+  {羞|はずか}しいことだが、今でも、こんな*あさましい*身と成り果てた今でも、{己|おれ}は、己の詩集が{長安|ちょうあん}風流人士の机の上に置かれている様を、夢に見ることがあるのだ。{岩窟|がんくつ}の中に横たわって見る夢にだよ。{嗤|わら}ってくれ。詩人に成りそこなって虎になった哀れな男を。(袁傪は昔の青年李徴の{自嘲癖|じちょうへき}を思出しながら、哀しく聞いていた。)そうだ。お笑い草ついでに、今の{懐|おもい}を即席の詩に述べて見ようか。この虎の中に、まだ、曾ての李徴が生きている*しるし*に。
42
+
43
+  袁傪は又下吏に命じてこれを書きとらせた。その詩に言う。
44
+
45
+    偶因狂疾成殊類 災患相仍不可逃
46
+    今日爪牙誰敢敵 当時声跡共相高
47
+    我為異物蓬茅下 君已乗軺気勢豪
48
+    此夕渓山対明月 不成長嘯但成嘷
49
+
50
+  時に、残月、光{冷|ひや}やかに、白露は地に{滋|しげ}く、樹間を渡る冷風は既に暁の近きを告げていた。人々は最早、事の奇異を忘れ、粛然として、この詩人の{薄倖|はっこう}を嘆じた。李徴の声は再び続ける。
51
+
52
+  {何故|なぜ}こんな運命になったか判らぬと、先刻は言ったが、しかし、考えように{依|よ}れば、思い当ることが全然ないでもない。人間であった時、{己|おれ}は努めて人との{交|まじわり}を避けた。人々は己を{倨傲|きょごう}だ、尊大だといった。実は、それが{殆|ほとん}ど{羞恥心|しゅうちしん}に近いものであることを、人々は知らなかった。{勿論|もちろん}、曾ての{郷党|きょうとう}の鬼才といわれた自分に、自尊心が無かったとは{云|い}わない。しかし、それは{臆病|おくびょう}な自尊心とでもいうべきものであった。己は詩によって名を成そうと思いながら、進んで師に就いたり、求めて詩友と交って{切磋琢磨|せっさたくま}に努めたりすることをしなかった。かといって、又、己は俗物の間に{伍|ご}することも{潔|いさぎよ}しとしなかった。共に、我が臆病な自尊心と、尊大な羞恥心との{所為|せい}である。{己|おのれ}の{珠|たま}に{非|あら}ざることを{惧|おそ}れるが{故|ゆえ}に、{敢|あえ}て刻苦して{磨|みが}こうともせず、又、己の珠なるべきを半ば信ずるが故に、{碌々|ろくろく}として{瓦|かわら}に伍することも出来なかった。{己|おれ}は次第に世と離れ、人と遠ざかり、{憤悶|ふんもん}と{慙恚|ざんい}とによって{益々|ますます}{己|おのれ}の内なる臆病な自尊心を飼い*ふとらせる*結果になった。人間は誰でも猛獣使であり、その猛獣に当るのが、各人の性情だという。{己|おれ}の場合、この尊大な羞恥心が猛獣だった。虎だったのだ。これが己を損い、妻子を苦しめ、友人を傷つけ、果ては、己の外形をかくの如く、内心にふさわしいものに変えて了ったのだ。今思えば、全く、己は、己の{有|も}っていた{僅|わず}かばかりの才能を空費して了った訳だ。人生は何事をも{為|な}さぬには余りに長いが、何事かを為すには余りに短いなどと口先ばかりの警句を{弄|ろう}しながら、事実は、才能の不足を{暴露|ばくろ}するかも知れないとの{卑怯|ひきょう}な{危惧|きぐ}と、刻苦を{厭|いと}う怠惰とが己の{凡|すべ}てだったのだ。己よりも遥かに乏しい才能でありながら、それを専一に磨いたがために、堂々たる詩家となった者が幾らでもいるのだ。虎と成り果てた今、己は{漸|ようや}くそれに気が付いた。それを思うと、己は今も胸を{灼|や}かれるような悔を感じる。己には最早人間としての生活は出来ない。たとえ、今、己が頭の中で、どんな優れた詩を作ったにしたところで、どういう手段で発表できよう。まして、己の頭は{日毎|ひごと}に虎に近づいて行く。どうすればいいのだ。己の空費された過去は? 己は{堪|たま}らなくなる。そういう時、己は、向うの山の頂の{巖|いわ}に上り、{空谷|くうこく}に向って{吼|ほ}える。この胸を灼く悲しみを誰かに訴えたいのだ。己は昨夕も、{彼処|あそこ}で月に向って{咆|ほ}えた。誰かにこの苦しみが分って{貰|もら}えないかと。しかし、獣どもは己の声を聞いて、{唯|ただ}、{懼|おそ}れ、ひれ伏すばかり。山も{樹|き}も月も露も、一匹の虎が怒り狂って、{哮|たけ}っているとしか考えない。天に躍り地に伏して嘆いても、誰一人己の気持を分ってくれる者はない。ちょうど、人間だった頃、己の傷つき{易|やす}い内心を誰も理解してくれなかったように。己の毛皮の{濡|ぬ}れたのは、夜露のためばかりではない。
53
+
54
+  漸く{四辺|あたり}の暗さが薄らいで来た。木の間を伝って、{何処|どこ}からか、{暁角|ぎょうかく}が哀しげに響き始めた。
55
+
56
+  最早、別れを告げねばならぬ。酔わねばならぬ時が、(虎に還らねばならぬ時が)近づいたから、と、李徴の声が言った。だが、お別れする前にもう一つ頼みがある。それは我が妻子のことだ。{彼等|かれら}は{未|ま}だ{虢略|かくりゃく}にいる。固より、己の運命に就いては知る{筈|はず}がない。君が南から帰ったら、己は既に死んだと彼等に告げて貰えないだろうか。決して今日のことだけは明かさないで欲しい。厚かましいお願だが、彼等の孤弱を{憐|あわ}れんで、今後とも{道塗|どうと}に{飢凍|きとう}することのないように計らって戴けるならば、自分にとって、{恩倖|おんこう}、これに過ぎたるは{莫|な}い。
57
+
58
+  言終って、叢中から{慟哭|どうこく}の声が聞えた。袁もまた涙を{泛|うか}べ、{欣|よろこ}んで李徴の意に{副|そ}いたい{旨|むね}を答えた。李徴の声はしかし{忽|たちま}ち又先刻の自嘲的な調子に{戻|もど}って、言った。
59
+
60
+  本当は、{先|ま}ず、この事の方を先にお願いすべきだったのだ、己が人間だったなら。飢え凍えようとする妻子のことよりも、{己|おのれ}の乏しい詩業の方を気にかけているような男だから、こんな獣に身を{堕|おと}すのだ。
61
+
62
+  そうして、{附加|つけくわ}えて言うことに、袁傪が嶺南からの帰途には決してこの{途|みち}を通らないで欲しい、その時には自分が酔っていて{故人|とも}を認めずに襲いかかるかも知れないから。又、今別れてから、前方百歩の所にある、あの丘に上ったら、{此方|こちら}を振りかえって見て貰いたい。自分は今の姿をもう一度お目に掛けよう。勇に誇ろうとしてではない。我が醜悪な姿を示して、{以|もっ}て、再び{此処|ここ}を過ぎて自分に会おうとの気持を君に起させない為であると。
63
+
64
+  袁傪は叢に向って、{懇|ねんご}ろに別れの言葉を述べ、馬に上った。叢の中からは、又、{堪|た}え得ざるが如き{悲泣|ひきゅう}の声が{洩|も}れた。袁傪も幾度か叢を振返りながら、涙の中に出発した。
65
+
66
+  一行が丘の上についた時、彼等は、言われた通りに振返って、先程の林間の草地を{眺|なが}めた。忽ち、一匹の虎が草の茂みから道の上に躍り出たのを彼等は見た。虎は、既に白く光を失った月を仰いで、二声三声{咆哮|ほうこう}したかと思うと、又、元の叢に躍り入って、再びその姿を見なかった。
67
+
@@ -0,0 +1,67 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html>
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="ja" lang="ja">
4
+ <head>
5
+ <meta charset="utf-8" />
6
+ <link rel="stylesheet" href="style.css" type="text/css" />
7
+ <style type="text/css">
8
+ html {
9
+ -epub-writing-mode: horizontal-tb;
10
+ -webkit-writing-mode: horizontal-tb;
11
+ writing-mode: horizontal-tb;
12
+ font-family: sans-serif;
13
+ }
14
+ h1, h2, h3 {
15
+ font-size: 1em;
16
+ }
17
+ .colophonpage {
18
+ margin: 0 auto;
19
+ width: 100%;
20
+ text-align: center;
21
+ }
22
+ .colophon-table {
23
+ margin: 0 auto;
24
+ text-align: center;
25
+ }
26
+ .colophon-table th {
27
+ font-size: 1em;
28
+ font-weight: normal;
29
+ font-family: serif, sans-serif;
30
+ }
31
+ .colophon-title-main {
32
+ font-size: 1.2em;
33
+ font-weight: normal;
34
+ }
35
+ .colophon-creator {
36
+ margin: 0 auto;
37
+ padding: 1em 0;
38
+ border:solid #999;
39
+ border-width:1px 0 0 0;
40
+ margin: 0 auto;
41
+ font-size: 1em;
42
+ line-height: 1.2;
43
+ font-family: serif, sans-serif;
44
+ width: 70%;
45
+ }
46
+ </style>
47
+ <title><%= @book.title %></title>
48
+ </head>
49
+ <body class="backmatter" epub:type="backmatter">
50
+ <section class="colophonpage" epub:type="colophonpage" title="奥付">
51
+ <div class="colophon-title-before"></div>
52
+ <div class="colophon-title-main">
53
+ <h1 class="maintitle" epub:type="title"><%= @book.title %></h1>
54
+ </div>
55
+ <div class="titlepage-title-after"></div>
56
+ <div class="colophon-table-before">
57
+ </div>
58
+ <table class="colophon-table">
59
+ <% @colophon.each do |key, val| %>
60
+ <tr><th><%= key %></th><td><%= val %></td></tr>
61
+ <% end %>
62
+ </table>
63
+ <div class="colophon-table-after">
64
+ </div>
65
+ </section>
66
+ </body>
67
+ </html>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cheepub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - takahashim
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-20 00:00:00.000000000 Z
11
+ date: 2018-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gepub
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.3.0
103
+ version: 0.5.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.3.0
110
+ version: 0.5.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rufo
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -192,7 +192,7 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
- description: Simple EPUB generator from Markdown. Inspired by denden converter
195
+ description: Simple EPUB/PDF generator from Markdown. Inspired by denden converter
196
196
  email:
197
197
  - maki@rubycolor.org
198
198
  executables:
@@ -225,6 +225,7 @@ files:
225
225
  - lib/cheepub/heading_item.rb
226
226
  - lib/cheepub/heading_parser.rb
227
227
  - lib/cheepub/heading_parser/handler.rb
228
+ - lib/cheepub/i18n.rb
228
229
  - lib/cheepub/markdown.rb
229
230
  - lib/cheepub/nav.rb
230
231
  - lib/cheepub/version.rb
@@ -263,6 +264,7 @@ files:
263
264
  - samples/anausa_perter/fig51344_29.png
264
265
  - samples/jlreq-readme-ja.md
265
266
  - samples/sangetsuki.md
267
+ - samples/sangetsuki_colophon.md
266
268
  - samples/thelastleaf.md
267
269
  - samples/thelastleaf_ja.md
268
270
  - samples/thelastleaf_ja_luatex.md
@@ -270,6 +272,7 @@ files:
270
272
  - samples/yume_juya_luatex.md
271
273
  - templates/bodymatter.html.erb
272
274
  - templates/bodymatter.tex.erb
275
+ - templates/colophon.xhtml.erb
273
276
  - templates/nav.xhtml.erb
274
277
  - templates/style.css.erb
275
278
  - templates/titlepage.xhtml.erb
@@ -295,5 +298,5 @@ rubyforge_project:
295
298
  rubygems_version: 2.7.3
296
299
  signing_key:
297
300
  specification_version: 4
298
- summary: Simple EPUB generator from Markdown
301
+ summary: Simple EPUB/PDF generator from Markdown
299
302
  test_files: []