zine_brewer 1.0.0 → 1.3.1

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: 6e2d08e05252737a218c8293c1b3f0961e6e5ccc686b7618c7d1f003a5ee344b
4
- data.tar.gz: 74c096aa7daaea76924e5f5ca526d14903b2b4b452e7a4de145dbcd5048caf42
3
+ metadata.gz: c5325e88eec3079faf767c3d15346d512a5a61f4762f4863c6a8e8482dcac7ab
4
+ data.tar.gz: 861d5bd82b5376c94ca123dee566ababae06defc839e04b13b56aa83339765b3
5
5
  SHA512:
6
- metadata.gz: cf2f41012a5fbdbbeffe777fa8b46031536469cb10dab13c50c52491bfe76bdd1e042f7fac7ad4418c53320e1c35bfa30c40cf49b61854298b31a973453243ec
7
- data.tar.gz: 74c92ca207131f8b1742d06effa4597b98d3fc9fd1bcaa38f549bb85f1ec9d7c4b2b4c7ce75d8ac13f125c45a6bd1e6d10ddcae8355d05c638100e0b43da8a1e
6
+ metadata.gz: 796a04f191052fd9ac8293866f5d1f8a146deeb82b40dab4704f0bdf507de6ea19cdc5ef3dce27a75fa180a2b445639102b622369c41f3cd936358554e22afea
7
+ data.tar.gz: 2712df9fe7b7b08bd838a2690f2c5136d123fc9996474ef394a5225d8133f07edb65055fa9ee94412a047e7e898b0345c46ed8a300f28b5fe8348c22f79fef89
data/README.md CHANGED
@@ -20,7 +20,404 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- $ zine_brewer *kramdown document*
23
+ $ zine_brewer [kramdown_document_filepath]
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
+ 本文をHTMLに変換したファイルは、proof/body.txtとして出力されます。
112
+
113
+ #### ■ページの起こし
114
+
115
+ **本文の各ページの先頭には、ページの起こしとして必ず`<%-- page -->`を記述してください。** 1ページ目の起こしは、ヘッダーとの境界にもなります。
116
+
117
+ ```
118
+ (ヘッダー)
119
+ ……
120
+
121
+ ■記事ID■:1234
122
+
123
+ <%-- page -->
124
+
125
+ 本文1ページ目
126
+
127
+ <%-- page -->
128
+
129
+ 本文2ページ目
130
+
131
+ <%-- page -->
132
+
133
+ 本文3ページ目
134
+ ```
135
+
136
+ #### ■図の書き方
137
+
138
+ 図は「拡大なし」「拡大あり」「拡大あり(lightbox)」「ハイパーリンク」「プロフィール」の5種類を記述できます。いずれも`<<Fig-●>>`(●にはアルファベット**大文字**1字が入る)から書き出します。
139
+
140
+ また、**記述の後には必ず空行を入れてください**(空行が指示の終わりを表します)。
141
+
142
+ (1) 拡大なし――src以外は省略可能。**widthとheightはどちらかを指定**しておけば、それに合わせて拡大/縮小表示します(他の種類も同様):
143
+ ```
144
+ <<Fig_N>>
145
+ src: [画像ファイル名] ※例 1234_fig.png
146
+ width: [画像を表示するときの幅を指定] ※例 400px
147
+ height: [画像を表示するときの高さを指定] ※例 300px
148
+ cap: [キャプション] ※例 2020年調査のグラフ
149
+ ```
150
+
151
+ (2) 拡大あり――src以外は省略可能。大きな画像をアップしておき、widthやheightを使って小さく表示させます。なお、キャプションに自動的に[画像クリックで拡大表示]と表示されます。:
152
+ ```
153
+ <<Fig_A>>
154
+ src: [画像ファイル名] ※例 1234_fig.png
155
+ width: [画像を表示するときの幅を指定] ※例 400px
156
+ height: [画像を表示するときの高さを指定] ※例 300px
157
+ cap: [キャプション] ※例 2020年調査のグラフ
158
+ ```
159
+
160
+ (3) 拡大あり(lightbox)――src以外は省略可能。ズーム表示を使いたいときに使用します。やはり、大きな画像をアップしておき、widthやheightを使って小さく表示させます:
161
+ ```
162
+ <<Fig_Z>>
163
+ src: [画像ファイル名] ※例 1234_fig.png
164
+ width: [画像を表示するときの幅を指定] ※例 400px
165
+ height: [画像を表示するときの高さを指定] ※例 300px
166
+ cap: [キャプション] ※例 2020年調査のグラフ
167
+ ```
168
+
169
+ (4) ハイパーリンク――srcとhref以外は省略可能。画像をクリックしたときに、hrefで指定したWebページへジャンプさせます:
170
+ ```
171
+ <<Fig_H>>
172
+ src: [画像ファイル名] ※例 1234_book01.png
173
+ href: [リンク先のURL] ※例 https://www.amazon.co.jp/dp/4798142417
174
+ width: [画像を表示するときの幅を指定] ※例 200px
175
+ height: [画像を表示するときの高さを指定] ※例 150px
176
+ cap: [キャプション] ※例 書籍『スターティングGo言語』
177
+ ```
178
+
179
+ (5) プロフィール――人物の写真にプロフィールを付けたいときに使う記述方法です。名前とふりがなは、変換後「名前(ふりがな)氏」という表示になります。また、画像の幅を600pxにすると、プロフィールと幅がそろいます。プロフィールの肩書きやプロフィールの行頭に、半角空白でインデントを入れることが必須です。
180
+ ```
181
+ <<Fig_P>>
182
+ src: [画像ファイル名] ※例 1234_ichigo.jpg
183
+ width: [画像を表示するときの幅を指定] ※例 600px
184
+ height: [画像を表示するときの高さを指定] ※例 400px
185
+ name: [名前] ※例 市古 明典
186
+ huri: [ふりがな] ※例 いちご あきのり
187
+ cap: |
188
+ 肩書き
189
+ プロフィール
190
+ ```
191
+
192
+ #### テクニック
193
+
194
+ (1) `cap:`(キャプション)は、次のように書くと途中改行を入れられます。各行の先頭には半角空白によるインデントを必ず行います。
195
+
196
+ ```
197
+ cap: |
198
+ 1行目
199
+ 2行目
200
+ ```
201
+
202
+ (2) 次のように`imgs:`を使うと、複数の画像を並べて表示できます。特に、`width:`(と画像間のすきま)の合計が670px以内の場合、PC画面では横に並べて表示されます。
203
+
204
+ ```
205
+ <<Fig_H>>
206
+ imgs:
207
+ - src: 1234_book01.png
208
+ href: https://www.amazon.co.jp/dp/4798154350
209
+ width: 200px
210
+ - src: 1234_book02.png
211
+ href: https://www.amazon.co.jp/dp/4798154369
212
+ width: 200px
213
+ - src: 1234_book03.png
214
+ href: https://www.amazon.co.jp/dp/4798161888
215
+ width: 200px
216
+ cap: 『紛争事例に学ぶ、ITユーザの心得』3部作
217
+ ```
218
+
219
+ (3) `src:`に記述するファイル名の先頭にある「1234_」という記事IDを表す部分は省略できます。代わりに、ヘッダに記述した`■記事ID■:`で記述した番号が入ります。`■記事ID■:`がない場合にも、原稿のフォルダ名が記事IDになっていればその番号が入ります。
220
+
221
+ ```
222
+ (ヘッダ)
223
+ ……
224
+
225
+ ■記事ID■:1234
226
+
227
+ <%-- page -->
228
+
229
+ (本文)
230
+ ……
231
+
232
+ <<Fig_N>>
233
+ src: fig.png <--- 1234_fig.png と書いたのと同じになる
234
+ ```
235
+
236
+ #### ■コラムの書き方
237
+
238
+ コラム(囲み)は、`===column`と`==/column`で挟むことで記述できます。
239
+
240
+ ```
241
+ (本文)
242
+
243
+ ===column
244
+ #### 見出しも入れられます
245
+
246
+  コラム本文……
247
+ ==/column
248
+ ```
249
+
250
+ `===column`に対してスタイルを指示できます。例えば、次のように書くと囲み罫線なしで角丸、地色をベージュにした囲みにできます(スタイルの記述方法は後述)。
251
+
252
+ ```
253
+ (本文)
254
+
255
+ {:%border:none; %border-radius:8px; %background-color:#ffffe6;}
256
+ ===column
257
+ #### コラム見出し
258
+
259
+ コラム本文……。
260
+ ==/column
261
+ ```
262
+
263
+ #### ■divブロックの書き方
264
+
265
+ ある範囲に対してスタイルを当てたいときなどには、divブロックをつくって、それに対してスタイルを指示します。divブロックは`===div`と`==/div`で挟むことでつくれます。
266
+
267
+ 例えば、本文のある範囲の地にグレーを敷きたい場合、次のように書きます。
268
+
269
+ ```
270
+ (本文)
271
+ ……
272
+
273
+ {%background-color:#e6e6e6; %padding:1em;}
274
+ ===div
275
+  本文テキスト。もちろん図なども入れられます。
276
+
277
+ <<Fig_N>>
278
+ src: 1234_fig.png
279
+ width: 450px
280
+
281
+ ==/div
282
+ ```
283
+
284
+ #### ■画像回り込みの書き方
285
+
286
+ 本文テキストの画像回り込み指定は、画像と回り込ませる本文テキストとを、`===wraparound`と`==/wraparound`で挟んでやることで行えます。
287
+
288
+ ただし、画像を右に置くか左に置くかの指定も必要です。画像の記述`<<Fig_●>>`の上に、画像を右に置く場合には`{:.imgR}`、左に置く場合には`{:.imgL}`と記述します。
289
+
290
+ 次の例では、画像を右に置き、その周りに本文テキストを回り込ませます。
291
+
292
+ ```
293
+ (本文)
294
+ ……
295
+
296
+ ===wraparound
297
+
298
+ {:.imgR}
299
+ <<Fig_N>>
300
+ src: 1234_fig.png
301
+ width: 200px
302
+
303
+  回り込ませる本文テキスト〜
304
+ ==/wraparound
305
+ ```
306
+
307
+ また、画像の周りに本文テキストを回り込ませないようにする場合には、本文テキストの各段落の上に`{:.ovh}`という記述を加えます。
308
+
309
+ ```
310
+ (本文)
311
+ ……
312
+
313
+ ===wraparound
314
+
315
+ {:.imgR}
316
+ <<Fig_N>>
317
+ src: 1234_fig.png
318
+ width: 200px
319
+
320
+ {:.ovh}
321
+  回り込ませない本文テキスト(段落1)〜
322
+
323
+ {:.ovh}
324
+  回り込ませない本文テキスト(段落2)〜
325
+ ==/wraparound
326
+ ```
327
+
328
+ #### ■脚注の書き方
329
+
330
+ 次のように、本文テキスト中の脚注を付けたい言葉などに`[^1]`などとアンカーを付け、脚注を置きたい場所に`[^1]: 〜`という形で脚注本体を書きます。脚注本体のコロンを忘れなく。脚注番号で使えるのは半角数字のみです。
331
+
332
+ ```
333
+  ほら、ここに難しい専門用語[^1]が1つ。ここにも意味の分からない専門用語[^2]がもう1つ。
334
+
335
+  それからいろんな話がありつつ、この下に脚注を置きたいのなら、次のように記述します。
336
+
337
+ [^1]: 難しい専門用語の意味。もちろん[リンク](https://www.example.com)も置けますよ。
338
+
339
+ [^2]: 意味の分からない専門用語の意味。
340
+ ```
341
+
342
+ なお、ZineBrewerでは、コラムに`footnotes`クラスを適用したスタイルで脚注本体を表示するようになっています。通常のコラムの形ではスカスカした見た目になってしまうので、追加CSSでスタイルを当てることをお勧めします。
343
+
344
+ #### ■定義表の書き方
345
+
346
+ 定義リストの記述を`===dtable`〜`==/dtable`で挟むと、左に項目、右に内容のテーブル(表)ができます。
347
+
348
+ 例えば、次のように記述すると、
349
+
350
+ ```
351
+ {:caption="イベント概要"}
352
+ ===dtable
353
+ イベント名
354
+ : HRzine Day 2020 Autumn
355
+
356
+ テーマ
357
+ : ニューノーマルが来た!〜人事・労務がいま整えるべきこと〜
358
+
359
+ 日時
360
+ : 2020年10月21日(水) 13:00~18:35
361
+
362
+ 会場
363
+ : オンライン
364
+ ==/dtable
365
+ ```
366
+
367
+ 次のように表示されます。
368
+
369
+ ![dtable](https://user-images.githubusercontent.com/24837059/94995269-32e6e680-05d8-11eb-86ed-074e650ff2eb.png)
370
+
371
+ #### ■スタイルの書き方
372
+
373
+ 最後に、スタイルの記述方法を説明します。
374
+
375
+ Kramdown(拡張Markdown)では、文字や段落にHTMLの属性を付けることができます。例えば、次のように記述すると、太字部分が赤色になり下線も引かれます。
376
+
377
+ ```
378
+ ここは次の試験で**必ず出題する**{:style="color:red; text-decoration:underline;"}ところだから、しっかり勉強してきなさい。
379
+ ```
380
+
381
+ これは、`**必ず出題する**{:style="color:red; text-decoration:underline;"}`という部分は、`<strong style="color:red; text-decoration:underline;">必ず出題する</strong>`と変換されるためです。
382
+
383
+ ZineBrewerでは、styleのところをもう少し簡潔に書けるようにしてあります。style属性中の指定**一つひとつ**を、パーセント記号とセミコロンで括ります。
384
+
385
+ ```
386
+ ここは次の試験で**必ず出題する**{:%color:red; %text-decoration:underline;}ところだから、しっかり勉強してきなさい。
387
+ ```
388
+
389
+ また、太字にしないで、ただ赤字・下線引きにしたい場合には、次のように記述します。
390
+
391
+ ```
392
+ ここは次の試験で[[必ず出題する]]{:%color:red; %text-decoration:underline;}ところだから、しっかり勉強してきなさい。
393
+ ```
394
+
395
+ 段落に対してスタイルを当てる場合には、段落の直前あるいは直後にスタイルを記述します。例えば、次のように記述すると、段落の背景に薄い赤色に敷くことができます(余白も少しとっています)。
396
+
397
+ ```
398
+ {:%background-color:#ffe6e6; %padding:15px;}
399
+ ここは次の試験で必ず出題するところだから、しっかり勉強してきなさい。
400
+ ```
401
+
402
+ 行頭の丸数字などを頭出し(ぶら下げ)したいことがあると思いますが、それは次のように記述します。
403
+
404
+ ```
405
+ {:%padding-left:1em; %text-indent:-1em;}
406
+ ①このように書いてやると、「①」の部分だけ左につきだし、以降の文章が引っ込んだ形で表示できます。
407
+ ```
408
+
409
+ ![Hanging Indent](https://user-images.githubusercontent.com/24837059/94996073-59f3e700-05dd-11eb-87f7-8a16be840f6f.png)
410
+
411
+ #### id属性、class属性、その他の属性
412
+
413
+ Kramdown(拡張Markdown)の`{: }`の中には、次のようにしてid属性とclass属性を記述できます。
414
+
415
+ ```
416
+ {:#id_1234 .footnotes}
417
+ id属性は#、class属性は.を使って記述できます。
418
+ ```
419
+
420
+ その他の属性はstyle以外、略記方法はありませんが、HTMLと同様に`{:rel="lightbox}"`とイコールを使った書き方にすれば、何でも指定できます。
24
421
 
25
422
  ## License
26
423
 
File without changes
@@ -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.3.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
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.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akinori Ichigo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-03 00:00:00.000000000 Z
11
+ date: 2020-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: darkmouun