nora_mark 0.2beta7 → 0.2beta8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +149 -73
- data/Rakefile +1 -3
- data/bin/nora2html +1 -1
- data/emacs-mode/noramark-mode.el +497 -0
- data/example/koujin.nora +13 -0
- data/example/nora-simple.css +27 -2
- data/example/noramark-reference-ja.nora +446 -64
- data/example/noramark-reference-ja_00001.xhtml +485 -85
- data/lib/nora_mark.rb +5 -67
- data/lib/nora_mark/document.rb +89 -0
- data/lib/nora_mark/extensions.rb +26 -0
- data/lib/nora_mark/html/context.rb +2 -3
- data/lib/nora_mark/html/default_transformer.rb +151 -0
- data/lib/nora_mark/html/generator.rb +25 -149
- data/lib/nora_mark/html/paragraph_writer.rb +4 -4
- data/lib/nora_mark/html/tag_writer.rb +13 -10
- data/lib/nora_mark/node.rb +196 -72
- data/lib/nora_mark/node_set.rb +13 -0
- data/lib/nora_mark/node_util.rb +29 -16
- data/lib/nora_mark/parser.kpeg +210 -74
- data/lib/nora_mark/parser.kpeg.rb +1353 -401
- data/lib/nora_mark/parser.rb +1 -1
- data/lib/nora_mark/transformer.rb +35 -10
- data/lib/nora_mark/version.rb +1 -1
- data/nora_mark.gemspec +3 -2
- data/spec/node_spec.rb +280 -0
- data/spec/nora_mark_spec.rb +1189 -1025
- data/spec/spec_helper.rb +2 -0
- data/spec/transformer_spec.rb +37 -0
- metadata +27 -6
- data/lib/nora_mark/html/writer_selector.rb +0 -24
- data/lib/nora_mark/node_builder.rb +0 -18
data/example/koujin.nora
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
---
|
2
|
+
lang: ja
|
3
|
+
stylesheets: [nora-simple.css, nora-simple-ja.css]
|
4
|
+
title: 行人
|
5
|
+
---
|
6
|
+
|
7
|
+
# 行人
|
8
|
+
|
9
|
+
section {
|
10
|
+
[ruby(うめだ){梅田}]の[ruby(ステーション){停車場}]を下おりるや否いなや自分は母からいいつけられた通り、すぐ[ruby(くるま){俥}]を[ruby(やと){雇}]って[ruby(おかだ){岡田}]の家に[ruby(か){馳}]けさせた。岡田は母方の遠縁に当る男であった。自分は彼がはたして母の何に当るかを知らずにただ[ruby(うと){疎}]い親類とばかり覚えていた。
|
11
|
+
|
12
|
+
大阪へ下りるとすぐ彼を[ruby(と){訪}]うたのには理由があった。自分はここへ来る一週間前ある友達と約束をして、今から十日以内に[ruby(はんち){阪地}]で落ち合おう、そうしていっしょに[ruby(こうや){高野}]登りをやろう、もし[ruby(じじつ){時日}]が許すなら、伊勢から名古屋へ[ruby(まわ){廻}]ろう、と取りきめた時、どっちも指定すべき場所をもたないので、自分はつい岡田の氏名と住所を自分の友達に告げたのである。
|
13
|
+
}
|
data/example/nora-simple.css
CHANGED
@@ -26,10 +26,35 @@ pre {
|
|
26
26
|
border-radius: 0.5em;
|
27
27
|
}
|
28
28
|
|
29
|
-
|
30
|
-
background: #
|
29
|
+
code {
|
30
|
+
background: #dddddd;
|
31
|
+
margin: 0.4em;
|
32
|
+
border-radius: 0.1em;
|
33
|
+
border: 1px solid #aaaaaa;
|
34
|
+
}
|
35
|
+
|
36
|
+
pre code {
|
37
|
+
margin: 0;
|
38
|
+
border: 0;
|
39
|
+
}
|
40
|
+
|
41
|
+
.pre {
|
42
|
+
margin: 1em auto;
|
43
|
+
}
|
44
|
+
|
45
|
+
.pre .caption {
|
46
|
+
color: #220000;
|
47
|
+
padding-left: 0.5em;
|
48
|
+
margin: 0 auto;
|
49
|
+
font-size: 0.9em;
|
50
|
+
|
31
51
|
}
|
32
52
|
|
53
|
+
.pre pre {
|
54
|
+
margin: 0 auto;
|
55
|
+
}
|
56
|
+
|
57
|
+
|
33
58
|
h1 {
|
34
59
|
border-bottom: 1px solid #444444;
|
35
60
|
}
|
@@ -4,25 +4,25 @@ stylesheets: [nora-simple.css, nora-simple-ja.css]
|
|
4
4
|
title: NoraMark Manual
|
5
5
|
---
|
6
6
|
|
7
|
-
|
7
|
+
# NoraMark Manual
|
8
8
|
|
9
9
|
[strong{(作成中・記述は未完成です。)}]
|
10
10
|
|
11
11
|
NoraMarkは、EPUBで利用するXHTMLを生成するためのマークアップとしてデザインされました。次のような特徴があります。
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
*: 文書構造に対する処理を追加できる
|
19
|
-
*: パース結果をXMLとして取得できる
|
13
|
+
* Markdownと同じように、プレーンテキストの原稿に近い最小限の記法です。
|
14
|
+
* Markdownと異なり、マークアップ部分は通常のテキストと「違って」見えるようにデザインしています。これは、意識せずにマークアップを壊してしまうことを避けるためです。
|
15
|
+
* マークアップに独自コマンドの追加ができる柔軟なカスタマイズ機能を用意しています。
|
16
|
+
* 生のHTML記法なしで、多くのタグを記述できます。
|
17
|
+
* パース結果をXMLとして取得できます。
|
20
18
|
|
21
|
-
|
19
|
+
## 必要なもの
|
22
20
|
|
23
|
-
|
21
|
+
* ruby 2.0以上
|
24
22
|
|
25
|
-
|
23
|
+
## インストール方法
|
24
|
+
|
25
|
+
### Gemfile
|
26
26
|
|
27
27
|
Gemfileに次のように書きます
|
28
28
|
|
@@ -35,15 +35,15 @@ code {
|
|
35
35
|
$ bundle
|
36
36
|
}
|
37
37
|
|
38
|
-
|
38
|
+
### 直接インストール
|
39
39
|
|
40
40
|
code {
|
41
41
|
gem install nora_mark
|
42
42
|
}
|
43
43
|
|
44
|
-
|
44
|
+
## 使い方
|
45
45
|
|
46
|
-
|
46
|
+
### コマンドラインから
|
47
47
|
|
48
48
|
code {
|
49
49
|
$ nora2html < source.nora > output.xhtml
|
@@ -55,8 +55,9 @@ code {
|
|
55
55
|
$ nora2html --kconv < source.nora > output.xhtml
|
56
56
|
}
|
57
57
|
|
58
|
-
[
|
59
|
-
|
58
|
+
[strong{nora2htmlは、newpageコマンドを`<hr />`タグに置き換え、すべてのページをひとつのxhtmlとして出力します}]
|
59
|
+
|
60
|
+
### コードから
|
60
61
|
code {//ruby
|
61
62
|
require 'nora_mark'
|
62
63
|
|
@@ -64,20 +65,33 @@ document = NoraMark::Document.parse(string_or_io, lang: 'ja')
|
|
64
65
|
document.html.write_as_files
|
65
66
|
//}
|
66
67
|
|
67
|
-
|
68
|
+
### Emacs Lisp noramark-mode
|
69
|
+
|
70
|
+
Emacs用のメジャーモードを提供するnoramark-mode.elを用意しています。現在のところ、font-lockによるsyntax highlight機能と、outline-minor-modeのサポートを提供しています。
|
71
|
+
|
72
|
+
1. normark-mode.elをEmacsのload-pathが通った場所に配置してください。
|
73
|
+
2. `~/.emacs.d/init.el`に次の記述をしてください。
|
74
|
+
|
75
|
+
```emacs-lisp
|
76
|
+
(require 'noramark-mode)
|
77
|
+
(setq auto-mode-alist (cons '("\\.nora$" . noramark-mode) auto-mode-alist))
|
78
|
+
(setq auto-mode-alist (cons '("-nora\\.txt$" . noramark-mode) auto-mode-alist))
|
79
|
+
```
|
80
|
+
|
81
|
+
## マークアップ
|
68
82
|
|
69
|
-
|
83
|
+
### 通常のテキスト
|
70
84
|
|
71
85
|
単なるテキストもHTMLに変換されます。
|
72
86
|
|
73
|
-
pre(原稿) {
|
87
|
+
pre(原稿) {
|
74
88
|
吾輩は猫である。名前はまだ無い。
|
75
89
|
どこで生れたかとんと見当けんとうがつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
|
76
90
|
<中略>
|
77
91
|
この書生の掌の裏うちでしばらくはよい心持に坐っておったが、しばらくすると非常な速力で運転し始めた。
|
78
92
|
|
79
93
|
ふと気が付いて見ると書生はいない。たくさんおった兄弟が一疋ぴきも見えぬ。
|
80
|
-
|
94
|
+
}
|
81
95
|
|
82
96
|
code(変換結果) {//html
|
83
97
|
<div class='pgroup'>
|
@@ -91,7 +105,8 @@ code(変換結果) {//html
|
|
91
105
|
</div>
|
92
106
|
//}
|
93
107
|
|
94
|
-
|
108
|
+
改行ごとに`<p>`要素がつくられます。空行で区切られると`<div class='pgroup'>`がつくられます。
|
109
|
+
|
95
110
|
言語が日本語(ja)以外の場合は、次のようになります。
|
96
111
|
|
97
112
|
pre(原稿) {
|
@@ -106,9 +121,11 @@ code(変換結果) {//html
|
|
106
121
|
<p>Ut enim ad minim veniam, quis nostrud exercitation</p>
|
107
122
|
//}
|
108
123
|
|
109
|
-
|
124
|
+
後述のparagraph_styleでもこの振る舞いを切り替えることができます。
|
125
|
+
|
126
|
+
### 明示的なブロック
|
110
127
|
|
111
|
-
NoraMark
|
128
|
+
NoraMarkでは、`<コマンド> {` ではじまり、`}` のみの行で終わる範囲を明示的なブロックとみなします。
|
112
129
|
|
113
130
|
pre(原稿) {//
|
114
131
|
d.column {
|
@@ -124,6 +141,25 @@ code(変換結果) {//html
|
|
124
141
|
</div>
|
125
142
|
//}
|
126
143
|
|
144
|
+
このように、コマンドにはclassを指定することができます。
|
145
|
+
同じように、idの指定も可能です。
|
146
|
+
|
147
|
+
pre(原稿) {//
|
148
|
+
d#the_column.column {
|
149
|
+
この部分は、divで囲まれます。
|
150
|
+
}
|
151
|
+
//}
|
152
|
+
|
153
|
+
code(変換結果) {//html
|
154
|
+
<div id="the_column" class="column">
|
155
|
+
<div class="pgroup">
|
156
|
+
<p>この部分は、divで囲まれます。</p>
|
157
|
+
</div>
|
158
|
+
</div>
|
159
|
+
//}
|
160
|
+
|
161
|
+
クラス・IDの指定は、多くのコマンドで同じように利用できます。
|
162
|
+
|
127
163
|
定義済みの明示的ブロックのコマンドは、次のものがあります。
|
128
164
|
|
129
165
|
;: d : divを生成します
|
@@ -150,47 +186,198 @@ code(変換結果) {//html
|
|
150
186
|
</blockquote>
|
151
187
|
//}
|
152
188
|
|
153
|
-
|
189
|
+
#### Preformat block
|
190
|
+
|
191
|
+
整形済みブロックは、次のように指定します。
|
192
|
+
|
193
|
+
code(形式1){//
|
194
|
+
pre {
|
195
|
+
format 1 : 整形済みの内容
|
196
|
+
}
|
197
|
+
//}
|
198
|
+
|
199
|
+
code(形式2) {
|
200
|
+
pre {//
|
201
|
+
format 2: 整形済みの内容
|
202
|
+
//}
|
203
|
+
}
|
204
|
+
|
205
|
+
code(変換結果) {//html
|
206
|
+
<pre>
|
207
|
+
format 1 : 整形済みの内容
|
208
|
+
</pre>
|
209
|
+
<pre>
|
210
|
+
format 2 : 整形済みの内容
|
211
|
+
</pre>
|
212
|
+
//}
|
213
|
+
|
214
|
+
また、次のように書くことで整形済みコードを作ることもできます。
|
215
|
+
|
216
|
+
```(形式1)
|
217
|
+
code {
|
218
|
+
整形済みコード
|
219
|
+
}
|
220
|
+
```
|
154
221
|
|
155
|
-
|
222
|
+
```(形式2)
|
223
|
+
code {//
|
224
|
+
整形済みコード
|
225
|
+
//}
|
226
|
+
```
|
227
|
+
|
228
|
+
code(形式3) {
|
229
|
+
```
|
230
|
+
整形済みコード
|
231
|
+
```
|
232
|
+
}
|
233
|
+
|
234
|
+
code(変換結果) {//html
|
235
|
+
<pre></code>
|
236
|
+
整形済みコード
|
237
|
+
</code></pre>
|
238
|
+
//}
|
239
|
+
|
240
|
+
##### code languageの指定
|
241
|
+
|
242
|
+
code languageの指定をすることができます。
|
243
|
+
|
244
|
+
```(形式1)
|
245
|
+
code {//ruby
|
246
|
+
puts "Hello, World."
|
247
|
+
//}
|
248
|
+
```
|
249
|
+
|
250
|
+
code(形式2){
|
251
|
+
```ruby
|
252
|
+
puts "Hello, World."
|
253
|
+
```
|
254
|
+
}
|
255
|
+
|
256
|
+
code(変換結果) {//html
|
257
|
+
<pre class='code-ruby' data-code-language='ruby'><code>
|
258
|
+
puts "Hello, World."
|
259
|
+
</code></pre>
|
260
|
+
//}
|
261
|
+
|
262
|
+
##### キャプションの指定
|
263
|
+
|
264
|
+
pre(原稿) {//
|
265
|
+
code(ソースコードはこちら) {
|
266
|
+
puts 'Hello, World'
|
267
|
+
}
|
268
|
+
//}
|
269
|
+
|
270
|
+
または、こんな書き方もできます。
|
271
|
+
|
272
|
+
pre(原稿) {//
|
273
|
+
```(ソースコードはこちら)
|
274
|
+
puts 'Hello, World'
|
275
|
+
```
|
276
|
+
//}
|
277
|
+
|
278
|
+
こんな風になります。
|
279
|
+
code(変換結果) {//html
|
280
|
+
<div class='pre'>
|
281
|
+
<p class='caption'>原稿はこちら</p>
|
282
|
+
<pre><code>
|
283
|
+
puts 'Hello, World'
|
284
|
+
</code></pre>
|
285
|
+
</div>
|
286
|
+
//}
|
287
|
+
|
288
|
+
### インラインコマンド
|
289
|
+
|
290
|
+
インラインコマンドは、原則として次の形式をしています。
|
156
291
|
pre{//
|
157
292
|
[<コマンド>{内容}]
|
158
293
|
//}
|
159
294
|
|
160
295
|
定義済みのインラインコマンドには、次のものがあります。
|
161
296
|
|
297
|
+
|
162
298
|
;:l {
|
163
|
-
|
299
|
+
リンクを定義します。
|
164
300
|
pre {//
|
165
301
|
[l(http://github.com/skoji/noramark){NoraMarkのレポジトリ}]
|
166
302
|
//}
|
303
|
+
|
304
|
+
code(変換結果) {//html
|
305
|
+
<a href='http://github.com/skoji/noramark'>NoraMarkのレポジトリ</a>
|
306
|
+
//}
|
167
307
|
}
|
168
|
-
|
169
|
-
|
308
|
+
|
309
|
+
;:sp {
|
310
|
+
spanを定義します。
|
170
311
|
pre {//
|
171
|
-
[
|
312
|
+
[sp.note{spanの中にはいる}]
|
313
|
+
//}
|
314
|
+
|
315
|
+
code(変換結果) {//html
|
316
|
+
<span class='note">spanの中に入る</span>
|
172
317
|
//}
|
173
318
|
}
|
319
|
+
|
174
320
|
;:img {
|
175
|
-
|
321
|
+
画像を定義します。このコマンドにはブレースのセクションがありません。
|
176
322
|
pre {//
|
177
323
|
[img(img/some_image.jpg,alternate text)]
|
178
324
|
//}
|
325
|
+
|
326
|
+
code(変換結果) {//html
|
327
|
+
<img src='img/some_image.jpg' alt='alternate text' />
|
328
|
+
//}
|
329
|
+
|
179
330
|
}
|
180
331
|
;:tcy {
|
181
|
-
class tcyのspan
|
332
|
+
class tcyのspanを定義します。縦書きにおける縦中横のスタイルをあてることを想定しています。
|
182
333
|
pre {//
|
183
334
|
FM TOWNSが登場してからすでに[tcy{25}]年がたった。
|
184
335
|
//}
|
336
|
+
|
337
|
+
code(変換結果) {//html
|
338
|
+
<p>FM TOWNSが登場してからすでに<span class='tcy'>25</span>年がたった。</p>
|
339
|
+
//}
|
340
|
+
|
341
|
+
|
185
342
|
}
|
343
|
+
|
186
344
|
;:ruby {
|
187
|
-
|
345
|
+
ルビをマークアップします。
|
188
346
|
pre {//
|
189
347
|
[ruby(とんぼ){蜻蛉}]の[ruby(めがね){眼鏡}]はみずいろめがね
|
190
348
|
//}
|
349
|
+
|
350
|
+
code(変換結果) {//html
|
351
|
+
<p><ruby>蜻蛉<rp>(</rp><rt>とんぼ</rt><rp>)</rp></ruby>の<ruby>眼鏡<rp>(</rp><rt>めがね</rt><rp>)</rp></ruby>はみずいろめがね</p>
|
352
|
+
//}
|
353
|
+
|
191
354
|
}
|
192
355
|
|
193
|
-
|
356
|
+
;:code {
|
357
|
+
インラインでコードをマークアップします。中はMarkupとして解釈しません。[code{`}] (バッククオート)で囲む方法と、`[code{}]`を使う方法があります。
|
358
|
+
|
359
|
+
pre {//
|
360
|
+
`puts "Hello, World."` and [code{puts "Hello, World."}]
|
361
|
+
//}
|
362
|
+
|
363
|
+
code(変換結果) {//html
|
364
|
+
<p><code>puts "Hello, World.</code> and <code>puts "Hello, World.</code> </p>
|
365
|
+
//}
|
366
|
+
}
|
367
|
+
|
368
|
+
ただし`[code{}]`の形式ではたとえば
|
369
|
+
|
370
|
+
code {
|
371
|
+
[code{ [ruby(とんぼ){蜻蛉}] }]
|
372
|
+
}
|
373
|
+
|
374
|
+
と書くと、蜻蛉の後ろにある`}]`でcodeコマンドは終了してしまうため、次のような変換結果となります。
|
375
|
+
|
376
|
+
code {//html
|
377
|
+
<p><code>[ruby(とんぼ){蜻蛉</code>}]</p>
|
378
|
+
//}
|
379
|
+
|
380
|
+
### 行コマンド
|
194
381
|
|
195
382
|
行コマンドは1行を占有し、次の形式をしています。
|
196
383
|
pre{//
|
@@ -200,83 +387,278 @@ pre{//
|
|
200
387
|
定義済みの行コマンドには、次のものがあります。
|
201
388
|
|
202
389
|
;: p {
|
203
|
-
|
390
|
+
パラグラフをマークアップします。クラスやIDを付加する目的で使うことを想定しています。
|
204
391
|
pre{//
|
205
392
|
p.caution: 用量に注意してご利用ください。
|
206
393
|
//}
|
207
|
-
|
394
|
+
|
395
|
+
code(変換結果) {//html
|
396
|
+
<p class='caution'>用量に注意してご利用ください。</p>
|
397
|
+
//}
|
208
398
|
|
209
399
|
;: image {
|
210
|
-
|
400
|
+
figureでラップされたimgをマークアップします。
|
211
401
|
pre{//
|
212
|
-
image(
|
402
|
+
image(path-to-image/img.jpg, 代替テキスト): イメージのキャプション
|
213
403
|
//}
|
404
|
+
|
405
|
+
code(変換結果) {//html
|
406
|
+
<figure class='img-wrap'>
|
407
|
+
<img src='path-to-image/img.jpg' alt='代替テキスト' />
|
408
|
+
<figcaption>イメージのキャプション</figcaption>
|
409
|
+
</figure>
|
410
|
+
//}
|
411
|
+
|
214
412
|
}
|
215
413
|
|
216
414
|
;: newpage {
|
217
|
-
|
415
|
+
新規ページを作成します。この位置XHTMLファイルが区切られ、新たなXHTMLが生成されます。
|
218
416
|
pre{//
|
219
417
|
newpage:
|
220
418
|
//}
|
221
419
|
|
222
420
|
}
|
223
421
|
|
224
|
-
|
422
|
+
### リスト
|
225
423
|
|
226
|
-
|
424
|
+
#### 箇条書き
|
227
425
|
|
228
426
|
pre(原稿) {//
|
229
|
-
|
230
|
-
|
427
|
+
* *ではじまる行は、箇条書きになります
|
428
|
+
* 空行があくまで、箇条書きがつづきます。
|
231
429
|
|
232
|
-
|
430
|
+
* 空行があくと、あらたな箇条書きになります。
|
431
|
+
* さらに、
|
432
|
+
** *を続けるとネストされます。
|
233
433
|
//}
|
234
434
|
|
235
435
|
code(変換結果) {//html
|
236
|
-
<ul><li
|
237
|
-
<li
|
436
|
+
<ul><li>*ではじまる行は、箇条書きになります。</li>
|
437
|
+
<li>空行があくまで、箇条書きがつづきます。。</li>
|
238
438
|
</ul>
|
239
|
-
<ul><li
|
439
|
+
<ul><li>空行があくと、あらたな箇条書きになります。</li>
|
440
|
+
<li>さらに、
|
441
|
+
<ul> <li>*を続けるとネストされます。</li></ul>
|
442
|
+
</li>
|
240
443
|
</ul>
|
241
|
-
}
|
242
444
|
//}
|
243
445
|
|
244
|
-
|
446
|
+
#### 番号つきリスト
|
245
447
|
|
246
448
|
pre(原稿) {//
|
247
|
-
1
|
248
|
-
2
|
449
|
+
1. 数字.ではじまる行は、番号つきリストになる。
|
450
|
+
2. 空行があくまで、リストがつづく。
|
249
451
|
|
250
|
-
3
|
251
|
-
10
|
452
|
+
3. 空行があくと、あらたなリストになる。
|
453
|
+
10. 先頭の数字にかかわらず、1から順に番号がふられる。
|
252
454
|
//}
|
253
455
|
|
254
456
|
code(変換結果) {//html
|
255
|
-
<ol><li
|
457
|
+
<ol><li>数字.ではじまる行は、番号つきリストになる。 </li>
|
256
458
|
<li>空行があくまで、リストがつづく。</li>
|
257
459
|
</ol>
|
258
460
|
<ol><li>空行があくと、あらたなリストになる。</li>
|
259
461
|
<li>先頭の数字にかかわらず、1から順に番号がふられる。</li>
|
260
462
|
</ol>
|
463
|
+
//}
|
464
|
+
|
465
|
+
番号つきリストのネストはサポートしていませんが、どうしてもやりたい場合は次のような方法もあります。
|
466
|
+
|
467
|
+
code(原稿) {//
|
468
|
+
ol {
|
469
|
+
li: 第一の要素
|
470
|
+
li {
|
471
|
+
ここはネストしたい。
|
472
|
+
ol {
|
473
|
+
li: ネストします。
|
474
|
+
}
|
475
|
+
li: 第三の要素
|
476
|
+
}
|
477
|
+
}
|
478
|
+
//}
|
479
|
+
|
480
|
+
#### 定義リスト
|
481
|
+
定義リストには、二種類の書き方があります。
|
482
|
+
|
483
|
+
##### 1行の定義
|
484
|
+
|
485
|
+
pre(原稿) {
|
486
|
+
;: それがし : 名前がわからない,または名前を隠して人や物事をさす語。
|
487
|
+
;: それがしかれがし : 不定称。二人以上の人に対し,名を知らなかったり,名を省略していうときに用いる語。
|
488
|
+
}
|
489
|
+
|
490
|
+
code(変換結果) {//html
|
491
|
+
<dl>
|
492
|
+
<dt>それがし</dt>
|
493
|
+
<dd>名前がわからない,または名前を隠して人や物事をさす語。</dd>
|
494
|
+
<dt>それがしかれがし</dt>
|
495
|
+
<dd>不定称。二人以上の人に対し,名を知らなかったり,名を省略していうときに用いる語。</dd>
|
496
|
+
</dl>
|
497
|
+
//}
|
498
|
+
|
499
|
+
##### 複数行の定義
|
500
|
+
説明が長い場合は、複数行の形式で書けます。この場合、説明部分は段落になります。
|
501
|
+
|
502
|
+
pre(原稿) {//
|
503
|
+
;: それがし {
|
504
|
+
名前がわからない,または名前を隠して人や物事をさす語。
|
505
|
+
}
|
506
|
+
;: それがしかれがし {
|
507
|
+
不定称。二人以上の人に対し,名を知らなかったり,名を省略していうときに用いる語。
|
508
|
+
}
|
509
|
+
//}
|
510
|
+
|
511
|
+
code(変換結果) {//html
|
512
|
+
<dl>
|
513
|
+
<dt>それがし</dt>
|
514
|
+
<dd><div class="pgroup"><p>名前がわからない,または名前を隠して人や物事をさす語。</p></div></dd>
|
515
|
+
<dt>それがしかれがし</dt>
|
516
|
+
<dd><div class="pgroup"><p>不定称。二人以上の人に対し,名を知らなかったり,名を省略していうときに用いる語。</p></div></dd>
|
517
|
+
</dl>
|
518
|
+
//}
|
519
|
+
|
520
|
+
### 見出し
|
521
|
+
#### 単独の見出し
|
522
|
+
|
523
|
+
h1からh6が用意されています。そのまま、<h1> タグに変換されます。
|
524
|
+
|
525
|
+
pre(原稿) {
|
526
|
+
h1: 単独の見出し
|
527
|
+
ここに本文
|
528
|
+
}
|
529
|
+
code(変換結果){//html
|
530
|
+
<h1>単独の見出し</h1>
|
531
|
+
<div class='pgroup'>
|
532
|
+
<p>ここに本文</p>
|
533
|
+
</div>
|
534
|
+
//}
|
535
|
+
|
536
|
+
#### セクションを生成する見出し
|
537
|
+
|
538
|
+
Markdown風の # をつかった見出しも使えます。この見出しは、sectionを生成します。
|
539
|
+
|
540
|
+
pre(原稿) {
|
541
|
+
# 見出し
|
542
|
+
本文
|
543
|
+
}
|
544
|
+
|
545
|
+
code(変換結果) {//html
|
546
|
+
<section>
|
547
|
+
<h1>見出し</h1>
|
548
|
+
<div class='pgroup'>
|
549
|
+
<p>本文</p>
|
550
|
+
</div>
|
551
|
+
</section>
|
552
|
+
//}
|
553
|
+
|
554
|
+
入れ子にもできます。sectionの範囲は適切に判断されます。
|
555
|
+
|
556
|
+
pre(原稿) {
|
557
|
+
# 見出し
|
558
|
+
本文
|
559
|
+
## 小見出し
|
560
|
+
次の本文
|
561
|
+
# 新しい章
|
562
|
+
新しい章の本文
|
563
|
+
}
|
564
|
+
|
565
|
+
code(変換結果) {//html
|
566
|
+
<section>
|
567
|
+
<h1>見出し</h1>
|
568
|
+
<div class='pgroup'>
|
569
|
+
<p>本文</p>
|
570
|
+
</div>
|
571
|
+
<section>
|
572
|
+
<h2>小見出し</h2>
|
573
|
+
<div class='pgroup'>
|
574
|
+
<p>次の本文</p>
|
575
|
+
</div>
|
576
|
+
</section>
|
577
|
+
</section>
|
578
|
+
<section>
|
579
|
+
<h1>新しい章</h1>
|
580
|
+
<div class='pgroup'>
|
581
|
+
<p>新しい章の本文</p>
|
582
|
+
</div>
|
583
|
+
</section>
|
584
|
+
//}
|
585
|
+
|
586
|
+
明示的に範囲を指定したセクションをつくることもできます。
|
587
|
+
|
588
|
+
pre(原稿) {//
|
589
|
+
# 第一のセクション
|
590
|
+
ここは第一のセクション
|
591
|
+
## 第二のセクション {
|
592
|
+
ここは第二のセクション
|
261
593
|
}
|
594
|
+
ここは再び第一のセクション
|
595
|
+
//}
|
596
|
+
|
597
|
+
code(変換結果) {//html
|
598
|
+
<section>
|
599
|
+
<h1>第一のセクション</h1>
|
600
|
+
<div class='pgroup'>
|
601
|
+
<p>ここは第一のセクション</p>
|
602
|
+
</div>
|
603
|
+
<section>第二のセクション</h1>
|
604
|
+
<div class='pgroup'>
|
605
|
+
<p>ここは第二のセクション</p>
|
606
|
+
</div>
|
607
|
+
</section>
|
608
|
+
<div class='pgroup'>
|
609
|
+
<p>ここは再び第一のセクション</p>
|
610
|
+
</div>
|
611
|
+
</section>
|
612
|
+
//}
|
613
|
+
|
614
|
+
### Frontmatter
|
615
|
+
|
616
|
+
各ページごとにYAML frontmatterでメタデータを記載できます。
|
617
|
+
|
618
|
+
code(Frontmatterの例) {//
|
619
|
+
---
|
620
|
+
title: ページのタイトル
|
621
|
+
stylesheets: [reset.css, default.css]
|
622
|
+
lang: ja
|
623
|
+
paragraph_style: default
|
624
|
+
---
|
262
625
|
//}
|
263
626
|
|
264
|
-
|
627
|
+
`title`, `stylesheets`, `lang`はそれぞれXHTMLのheaderにかかれます。`paragraph_style`は、HTML生成時の段落スタイル指示ができます。
|
628
|
+
|
629
|
+
## カスタマイズ
|
630
|
+
|
631
|
+
### 生成ルール追加
|
632
|
+
### 木構造の操作
|
633
|
+
|
634
|
+
### コマンドの書式
|
635
|
+
[span.note{(加筆修正予定)}]
|
636
|
+
|
637
|
+
pre(コマンド) {//
|
638
|
+
コマンド名[id][class][パラメータ][名前付きパラメータ]
|
639
|
+
//}
|
640
|
+
|
641
|
+
具体的には、たとえば次のような形をしています。
|
642
|
+
|
643
|
+
pre(具体例) {//
|
644
|
+
div#id1#id2.class1.class2(parameter1, parameter2)[named_parameter: 1, named_parameter 2]
|
645
|
+
//}
|
646
|
+
|
647
|
+
* コマンド名は英字ではじまり、英数字とハイフン、アンダースコアからなります。
|
648
|
+
* idは、#からはじまり、英数字とハイフン、アンダースコアからなります。複数続けることができます。
|
649
|
+
* classは、.からはじまり、英数字とハイフン、アンダースコアからなります。複数続けることができます。
|
650
|
+
|
651
|
+
* パラメータは`()`で囲まれています。カンマで区切られた領域ごとに、独立したパラメータになります。
|
652
|
+
* パラメータの内容は、NoraMarkのマークアップとしてパースされます。
|
265
653
|
|
266
|
-
|
654
|
+
* 名前付きパラメータは`[]`で囲まれていて、カンマで区切られた次の形式をしています。
|
655
|
+
** 名前: パラメータ
|
656
|
+
* 名前は英字ではじまり、英数字とハイフン、アンダースコアからなります。名前付きパラメータの内容は、NoraMarkのマークアップとしてはパースされません。
|
267
657
|
|
268
|
-
|
658
|
+
## XML生成
|
269
659
|
|
270
|
-
===: 見出し
|
271
660
|
|
272
|
-
====: 単独の見出し
|
273
661
|
|
274
|
-
====: セクションを生成する見出し
|
275
662
|
|
276
|
-
===: Frontmatter
|
277
663
|
|
278
|
-
==: カスタマイズ
|
279
|
-
===: 生成ルール追加
|
280
|
-
===: 木構造の操作
|
281
664
|
|
282
|
-
==: XML生成
|