cheepub 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []