zine_brewer 1.0.0 → 1.1.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: 6e2d08e05252737a218c8293c1b3f0961e6e5ccc686b7618c7d1f003a5ee344b
4
- data.tar.gz: 74c096aa7daaea76924e5f5ca526d14903b2b4b452e7a4de145dbcd5048caf42
3
+ metadata.gz: 2142217e4515907dcab2b950fc41cb21ba8a886ec04daa5d4ac4cdc6acc6bfbb
4
+ data.tar.gz: 1333a38a15cc0b2189ff63b891c8a28a40282705a212283f4e5fa6990d6ac5e6
5
5
  SHA512:
6
- metadata.gz: cf2f41012a5fbdbbeffe777fa8b46031536469cb10dab13c50c52491bfe76bdd1e042f7fac7ad4418c53320e1c35bfa30c40cf49b61854298b31a973453243ec
7
- data.tar.gz: 74c92ca207131f8b1742d06effa4597b98d3fc9fd1bcaa38f549bb85f1ec9d7c4b2b4c7ce75d8ac13f125c45a6bd1e6d10ddcae8355d05c638100e0b43da8a1e
6
+ metadata.gz: b4d750d74c7b68d461c9ca1c42fa74d35abe4c51ff9101cd78d1a2efd8a79a188a25542253ddbef1f2fb2e2c46bcad736d81ce36a0f22347f16e24fb44427fa2
7
+ data.tar.gz: 7882f6378598a4714d51f26d7cd3ec0710b79ecf06eb63c7b7793df275693fafc25956ec5e7014e9cfaa8924a329e3a53755fc132abcc76996a7f9a05b9c19f3
data/README.md CHANGED
@@ -20,7 +20,249 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- $ zine_brewer *kramdown document*
23
+ $ zine_brewer [kramdown_document_filename]
24
+
25
+ * The header part is converted and written out as "proof/header.txt".
26
+ * The body part is converted and written out as "proof/body.txt".
27
+
28
+ ## Enhanced Notation in ZineBrewer
29
+
30
+ ここでは、Kramdown(拡張Markdown)に加えて記述可能にした、ZineBrewer向けの記法を説明します。Kramdownの記法は、こちら([クイックリファレンス](https://kramdown.gettalong.org/quickref.html)/[詳細文法](https://kramdown.gettalong.org/syntax.html))をご覧ください。
31
+
32
+ ZineBrewerで扱う原稿は「ヘッダー」と「本文」に分かれます。以下ではそれぞれ説明します。
33
+
34
+ なお、ZineBrewerは変換したヘッダー、本文をそれぞれheader.txt、body.txtとして、proofフォルダに格納します。
35
+
36
+ ### ヘッダー
37
+
38
+ ヘッダーは6つの項目からなります。各項目は空行を挟んで記述してください。以下の方法で記述を省略することもできます。
39
+
40
+ * `---`と書く
41
+ * 以下省略。例えば、コーナー名とタイトルだけ書いておき、以下は何も書かない(`---`も書かない)ということができます。ただし、以下省略でも、**最後の`■記事ID■:0000`だけは書くようにします。**
42
+
43
+ ヘッダーの記述項目:
44
+ ```
45
+ [コーナー名]
46
+
47
+ [タイトル]
48
+
49
+ [リード]
50
+
51
+ [リード横に表示する画像のファイル名]
52
+
53
+ [著者名]
54
+
55
+ [追加CSS]
56
+
57
+ [■記事ID■:0000]
58
+ ```
59
+
60
+ ヘッダー記述例。コーナー名を`---`で省略、追加CSSは以下省略しています。
61
+ ```
62
+ ---
63
+
64
+ 原稿はZineBrewerで書こう! スタイルも適用できるよ
65
+
66
+  もともと、Markdown原稿にCSSスタイルを書き込んでおく方法はないかと思い、
67
+ 見つけたのがKramdownです。文字単位・段落単位でidやclass、各種属性を記述
68
+ しておくことができました。ただし、Kramdownが出力するHTMLは、翔泳社の
69
+ 記事配信システムが受け付けるHTMLフォーマットとは少し異なる部分があります。
70
+ そこで、Kramdownを拡張し、翔泳社の記事配信システムが受け付けるHTMLを出力
71
+ するようにしたツールが、ZineBrewerです。
72
+
73
+ 1234_title.png
74
+
75
+ 市古 明典
76
+
77
+ ■記事ID■:1234
78
+
79
+ <%-- page -->
80
+
81
+ (以下、本文)
82
+ ```
83
+
84
+ ヘッダーと本文の境界には、本文ページの起こしを指示する`<%-- page -->`を記述します。
85
+
86
+ **【注意】ヘッダーの最後に記述する`■記事ID■:0000`は、原則として記述必須です。**例外として、原稿を入れているフォルダの名前を記事ID(「1234」など)にしている場合には省略できます。
87
+
88
+ 上記例をZineBrewerで変換した場合、ヘッダーは次のように出力されます(proof/header.txt)。
89
+
90
+ ```
91
+ [タイトル]
92
+ 原稿はZineBrewerで書こう! スタイルも適用できるよ
93
+
94
+ [リード]
95
+ <p> もともと、Markdown原稿にCSSスタイルを書き込んでおく方法はないかと思い、
96
+ 見つけたのがKramdownです。文字単位・段落単位でidやclass、各種属性を記述
97
+ しておくことができました。ただし、Kramdownが出力するHTMLは、翔泳社の
98
+ 記事配信システムが受け付けるHTMLフォーマットとは少し異なる部分があります。
99
+ そこで、Kramdownを拡張し、翔泳社の記事配信システムが受け付けるHTMLを出力
100
+ するようにしたツールが、ZineBrewerです。</p>
101
+
102
+ [タイトル画像]
103
+ 1234_title.png
104
+
105
+ [著者クレジット]
106
+ 市古 明典
107
+ ```
108
+
109
+ ### 本文
110
+
111
+ #### ■図の書き方
112
+
113
+ 図は「拡大なし」「拡大あり」「拡大あり(lightbox)」「ハイパーリンク」「プロフィール」の5種類を記述できます。いずれも`<<Fig-●>>`(●にはアルファベット**大文字**1字が入る)から書き出します。
114
+
115
+ また、**記述の後には必ず空行を入れてください**(空行が指示の終わりを表します)。
116
+
117
+ (1) 拡大なし――src以外は省略可能。**widthとheightはどちらかを指定**しておけば、それに合わせて拡大/縮小表示します(他の種類も同様):
118
+ ```
119
+ <<Fig_N>>
120
+ src: [画像ファイル名] ※例 1234_fig.png
121
+ widrh: [画像を表示するときの幅を指定] ※例 400px
122
+ height: [画像を表示するときの高さを指定] ※例 300px
123
+ cap: [キャプション] ※例 2020年調査のグラフ
124
+ ```
125
+
126
+ (2) 拡大あり――src以外は省略可能。大きな画像をアップしておき、widthやheightを使って小さく表示させます。なお、キャプションに自動的に[画像クリックで拡大表示]と表示されます。:
127
+ ```
128
+ <<Fig_A>>
129
+ src: [画像ファイル名] ※例 1234_fig.png
130
+ widrh: [画像を表示するときの幅を指定] ※例 400px
131
+ height: [画像を表示するときの高さを指定] ※例 300px
132
+ cap: [キャプション] ※例 2020年調査のグラフ
133
+ ```
134
+
135
+ (3) 拡大あり(lightbox)――src以外は省略可能。ズーム表示を使いたいときに使用します。やはり、大きな画像をアップしておき、widthやheightを使って小さく表示させます:
136
+ ```
137
+ <<Fig_Z>>
138
+ src: [画像ファイル名] ※例 1234_fig.png
139
+ widrh: [画像を表示するときの幅を指定] ※例 400px
140
+ height: [画像を表示するときの高さを指定] ※例 300px
141
+ cap: [キャプション] ※例 2020年調査のグラフ
142
+ ```
143
+
144
+ (4) ハイパーリンク――srcとhref以外は省略可能。画像をクリックしたときに、hrefで指定したWebページへジャンプさせます:
145
+ ```
146
+ <<Fig_H>>
147
+ src: [画像ファイル名] ※例 1234_book01.png
148
+ href: [リンク先のURL] ※例 https://www.amazon.co.jp/dp/4798142417
149
+ widrh: [画像を表示するときの幅を指定] ※例 200px
150
+ height: [画像を表示するときの高さを指定] ※例 150px
151
+ cap: [キャプション] ※例 書籍『スターティングGo言語』
152
+ ```
153
+
154
+ (5) プロフィール――人物の写真にプロフィールを付けたいときに使う記述方法です。名前とふりがなは、変換後「名前(ふりがな)氏」という表示になります。また、画像の幅を600pxにすると、プロフィールと幅がそろいます。プロフィールの肩書きやプロフィールの行頭に、半角空白でインデントを入れることが必須です。
155
+ ```
156
+ <<Fig_P>>
157
+ src: [画像ファイル名] ※例 1234_ichigo.jpg
158
+ widrh: [画像を表示するときの幅を指定] ※例 600px
159
+ height: [画像を表示するときの高さを指定] ※例 400px
160
+ name: [名前] ※例 市古 明典
161
+ huri: [ふりがな] ※例 いちご あきのり
162
+ cap: |
163
+ 肩書き
164
+ プロフィール
165
+ ```
166
+
167
+ #### テクニック
168
+
169
+ (1) `cap:`(キャプション)は、次のように書くと途中改行を入れられます。各行の先頭には半角空白によるインデントを必ず行います。
170
+
171
+ ```
172
+ cap: |
173
+ 1行目
174
+ 2行目
175
+ ```
176
+
177
+ (2) 次のように`imgs:`を使うと、複数の画像を並べて表示できます。特に、`width:`(と画像間のすきま)の合計が670px以内の場合、PC画面では横に並べて表示されます。
178
+
179
+ ```
180
+ <<Fig_H>>
181
+ imgs:
182
+ - src: 1234_book01.png
183
+ href: https://www.amazon.co.jp/dp/4798154350
184
+ width: 200px
185
+ - src: 1234_book02.png
186
+ href: https://www.amazon.co.jp/dp/4798154369
187
+ width: 200px
188
+ - src: 1234_book03.png
189
+ href: https://www.amazon.co.jp/dp/4798161888
190
+ width: 200px
191
+ cap: 『紛争事例に学ぶ、ITユーザの心得』3部作
192
+ ```
193
+
194
+ (3) `src:`に記述するファイル名の先頭にある「1234_」という記事IDを表す部分は省略できます。代わりに、ヘッダに記述した`■記事ID■:`で記述した番号が入ります。`■記事ID■:`がない場合にも、原稿のフォルダ名が記事IDになっていればその番号が入ります。
195
+
196
+ ```
197
+ (ヘッダ)
198
+ ……
199
+
200
+ ■記事ID■:1234
201
+
202
+ <%-- page -->
203
+
204
+ (本文)
205
+ ……
206
+
207
+ <<Fig_N>>
208
+ src: fig.png <--- 1234_fig.png と書いたのと同じになる
209
+ ```
210
+
211
+ #### ■コラムの書き方
212
+
213
+ コラム(囲み)は、`===column`と`==/column`で挟むことで記述できます。
214
+
215
+ ```
216
+ (本文)
217
+
218
+ ===column
219
+ #### 見出しも入れられます
220
+
221
+  コラム本文……
222
+ ==/column
223
+ ```
224
+
225
+ `===column`に対してスタイルを指示できます。例えば、次のように書くと囲み罫線なしで角丸、地色をベージュにした囲みにできます(スタイルの記述方法は後述)。
226
+
227
+ ```
228
+ (本文)
229
+
230
+ {:%border:none; %border-radius:8px; %background-color:#ffffe6;}
231
+ ===column
232
+ #### コラム見出し
233
+
234
+ コラム本文……。
235
+ ==/column
236
+ ```
237
+
238
+ #### ■divブロックの書き方
239
+
240
+ ある範囲に対してスタイルを当てたいときなどには、divブロックをつくって、それに対してスタイルを指示します。divブロックは`===div`と`==/div`で挟むことでつくれます。
241
+
242
+ 例えば、本文のある範囲の地にグレーを敷きたい場合、次のように書きます。
243
+
244
+ ```
245
+ (本文)
246
+
247
+ {%background-color:#e6e6e6; %padding:1em;}
248
+ ===div
249
+  本文テキスト。もちろん図なども入れられます。
250
+
251
+ <<Fig_N>>
252
+ src: 1234_fig.png
253
+ width: 450px
254
+
255
+ ==/div
256
+ ```
257
+
258
+ #### ■画像回り込みの書き方
259
+
260
+ divブロックの応用として、本文テキストの画像回り込み指定があります。スタイル指定と合わせて、次に用に記述します。
261
+
262
+ ```
263
+ ```
264
+
265
+ #### ■スタイルの書き方
24
266
 
25
267
  ## License
26
268
 
@@ -28,7 +28,7 @@ module Kramdown
28
28
  end
29
29
  end
30
30
 
31
- @block_parsers.insert(5, :column, :definition_table, :page)
31
+ @block_parsers.insert(5, :column, :definition_table, :wraparound,:div, :page)
32
32
  @span_parsers.insert(5, :span)
33
33
 
34
34
  @page = 0
@@ -67,6 +67,40 @@ module Kramdown
67
67
  sql tcl tex vb vhdl wiki xhtml xml xq xsl yaml yml
68
68
  !.map{|i| [i, i]}.flatten])
69
69
 
70
+ def parse_div
71
+ if @src.check(self.class::DIV_MATCH)
72
+ start_line_number = @src.current_line_number
73
+ @src.pos += @src.matched_size
74
+ el = Element.new(:div, nil, nil, :location => start_line_number)
75
+ parse_blocks(el, @src[1])
76
+ update_attr_with_ial(el.attr, @block_ial) unless @block_ial.nil?
77
+ @tree.children << el
78
+ true
79
+ else
80
+ false
81
+ end
82
+ end
83
+
84
+ DIV_MATCH = /^={3,}\s*?div\s*?\n(.*?)^={2,}\/div\s*?\n/mi
85
+ define_parser(:div, /^={3,}div/i, nil, 'parse_div')
86
+
87
+ def parse_wraparound
88
+ if @src.check(self.class::WRAPAROUND_MATCH)
89
+ start_line_number = @src.current_line_number
90
+ @src.pos += @src.matched_size
91
+ el = Element.new(:div, nil, {'class' => 'imgLRBlock cf'}, :location => start_line_number)
92
+ parse_blocks(el, @src[1])
93
+ update_attr_with_ial(el.attr, @block_ial) unless @block_ial.nil?
94
+ @tree.children << el
95
+ true
96
+ else
97
+ false
98
+ end
99
+ end
100
+
101
+ WRAPAROUND_MATCH = /^={3,}\s*?wraparound\s*?\n(.*?)^={2,}\/wraparound\s*?\n/mi
102
+ define_parser(:wraparound, /^={3,}wrap/i, nil, 'parse_wraparound')
103
+
70
104
  def parse_column
71
105
  if @src.check(self.class::COLUMN_MATCH)
72
106
  start_line_number = @src.current_line_number
@@ -106,8 +106,6 @@ module ZineBrewer
106
106
 
107
107
  ### Sets pre process
108
108
  dkmn.pre_process = lambda do |t|
109
- t.gsub!(/\n\K={2,}div/, "<div markdown=\"1\">")
110
- t.gsub!(/\n\K={2,}\/div/, "</div>")
111
109
  end
112
110
 
113
111
  ### Sets post process
@@ -20,7 +20,7 @@ class Fig_P < Mustache
20
20
  {{#imgs_list}}
21
21
  <img src="{{fig_src}}" alt="{{name}}氏" {{& img_style}} />
22
22
  {{/imgs_list}}
23
- <div style="text-align:left; padding:0em 2em;">
23
+ <div style="text-align:left; padding:0px 35px;">
24
24
  <figcaption><strong>{{name}}({{huri}})氏</strong></figcaption>
25
25
  <figcaption markdown="span">{{caption}}</figcaption>
26
26
  </div>
@@ -1,3 +1,3 @@
1
1
  module ZineBrewer
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zine_brewer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akinori Ichigo