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 +4 -4
- data/README.md +5 -0
- data/cheepub.gemspec +3 -3
- data/lib/cheepub.rb +1 -0
- data/lib/cheepub/ext_hash.rb +12 -0
- data/lib/cheepub/generator/epub.rb +9 -0
- data/lib/cheepub/generator/latex.rb +13 -1
- data/lib/cheepub/i18n.rb +131 -0
- data/lib/cheepub/version.rb +1 -1
- data/samples/sangetsuki_colophon.md +67 -0
- data/templates/colophon.xhtml.erb +67 -0
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87e2e321819c633aba8e6e83a2b8c35e3e0e70e0a0f5ea8fac404821d95b0980
|
4
|
+
data.tar.gz: d74f8cf8dd36a5d20596700219272b003785cae0ebc699518109e1ed9e56580c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39e75b9575f170db21f8aa6c01594d44e2cd4f990feb118d5fa23171631b15f96402a2d3d7db57071905491754709e5e8157d7958000d8adffd160e7370c64b5
|
7
|
+
data.tar.gz: 7efb5eeaabc9e9e29ce0728de2c1917d73783797b756487a801ed5fc1b5788b1f49e4348262a6bcaff45309c09cedb1ac41c716f71acb5e923fe121a5363e675
|
data/README.md
CHANGED
data/cheepub.gemspec
CHANGED
@@ -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.
|
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"
|
data/lib/cheepub.rb
CHANGED
data/lib/cheepub/ext_hash.rb
CHANGED
@@ -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"
|
data/lib/cheepub/i18n.rb
ADDED
@@ -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
|
data/lib/cheepub/version.rb
CHANGED
@@ -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.
|
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-
|
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.
|
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.
|
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: []
|