review 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +1 -0
  3. data/ChangeLog +100 -0
  4. data/README.rdoc +11 -12
  5. data/Rakefile +6 -2
  6. data/bin/review-check +1 -1
  7. data/bin/review-compile +13 -4
  8. data/bin/review-epubmaker +172 -24
  9. data/bin/review-epubmaker-ng +8 -161
  10. data/bin/review-index +1 -1
  11. data/bin/review-init +17 -5
  12. data/bin/review-pdfmaker +40 -19
  13. data/bin/review-preproc +1 -1
  14. data/bin/review-validate +2 -2
  15. data/bin/review-vol +1 -1
  16. data/debian/control +2 -2
  17. data/doc/format.rdoc +23 -6
  18. data/doc/format_idg.rdoc +3 -3
  19. data/doc/libepubmaker/config.yaml +163 -0
  20. data/doc/quickstart.rdoc +27 -27
  21. data/doc/sample.yaml +10 -5
  22. data/lib/epubmaker.rb +2 -5
  23. data/lib/epubmaker/content.rb +9 -6
  24. data/lib/epubmaker/epubv2.rb +233 -109
  25. data/lib/epubmaker/epubv3.rb +83 -119
  26. data/lib/epubmaker/producer.rb +50 -20
  27. data/lib/epubmaker/resource.rb +22 -8
  28. data/lib/review/book/base.rb +1 -0
  29. data/lib/review/book/chapter.rb +2 -2
  30. data/lib/review/book/compilable.rb +1 -1
  31. data/lib/review/book/index.rb +33 -27
  32. data/lib/review/book/parameters.rb +3 -2
  33. data/lib/review/book/part.rb +1 -1
  34. data/lib/review/builder.rb +10 -42
  35. data/lib/review/compiler.rb +1 -1
  36. data/lib/review/configure.rb +3 -3
  37. data/lib/review/epubmaker.rb +428 -0
  38. data/lib/review/htmlbuilder.rb +45 -95
  39. data/lib/review/htmlutils.rb +2 -0
  40. data/lib/review/i18n.yaml +25 -0
  41. data/lib/review/idgxmlbuilder.rb +11 -9
  42. data/lib/review/inaobuilder.rb +1 -1
  43. data/lib/review/latexbuilder.rb +7 -6
  44. data/lib/review/latexutils.rb +6 -0
  45. data/lib/review/makerhelper.rb +4 -2
  46. data/lib/review/markdownbuilder.rb +8 -0
  47. data/lib/review/sec_counter.rb +71 -0
  48. data/lib/review/topbuilder.rb +0 -1
  49. data/lib/review/version.rb +2 -2
  50. data/review.gemspec +4 -4
  51. data/test/sample-book/README.md +2 -2
  52. data/test/sample-book/src/Rakefile +2 -2
  53. data/test/sample-book/src/config.yml +4 -4
  54. data/test/sample-book/src/images/cover.jpg +0 -0
  55. data/test/sample-book/src/sty/{samplemacro.sty → reviewmacro.sty} +1 -1
  56. data/test/test_book_parameter.rb +1 -1
  57. data/test/test_epubmaker.rb +77 -15
  58. data/test/test_epubmaker_cmd.rb +11 -7
  59. data/test/test_helper.rb +7 -0
  60. data/test/test_htmlbuilder.rb +39 -6
  61. data/test/test_idgxmlbuilder.rb +14 -2
  62. data/test/test_inaobuilder.rb +2 -1
  63. data/test/test_latexbuilder.rb +23 -2
  64. data/test/test_makerhelper.rb +19 -3
  65. data/test/test_markdownbuilder.rb +35 -0
  66. data/test/test_pdfmaker_cmd.rb +11 -7
  67. data/test/test_topbuilder.rb +36 -2
  68. metadata +18 -18
  69. data/VERSION +0 -1
  70. data/doc/libepubmaker/sample.yaml +0 -90
@@ -1,176 +1,23 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
3
  #
4
- # Copyright (c) 2010 Kenshi Muto and Masayoshi Takahashi
4
+ # Copyright (c) 2010-2013 Kenshi Muto and Masayoshi Takahashi
5
5
  #
6
6
  # This program is free software.
7
7
  # You can distribute or modify this program under the terms of
8
8
  # the GNU LGPL, Lesser General Public License version 2.1.
9
9
  # For details of the GNU LGPL, see the file "COPYING".
10
10
  #
11
-
12
11
  require 'pathname'
13
12
  bindir = Pathname.new(__FILE__).realpath.dirname
14
13
  $LOAD_PATH.unshift((bindir + '../lib').realpath)
15
- require 'review'
16
- require 'epubmaker'
17
- include EPUBMaker
18
-
19
- def main
20
- if ARGV.size != 1
21
- puts "Usage: #{$0} configfile"
22
- exit 0
23
- end
24
-
25
- yamlfile = ARGV[0]
26
- @params = ReVIEW::Configure.values.merge(YAML.load_file(yamlfile))
27
- @epub = Producer.new(@params)
28
- @epub.load(yamlfile)
29
- @params = @epub.params
30
-
31
- bookname = @params["bookname"]
32
-
33
- if File.exist?("#{bookname}.epub")
34
- STDERR.puts "#{bookname}.epub exists. Please remove or rename it first."
35
- exit 1
36
- end
37
- if @params["debug"] && File.exist?("#{bookname}")
38
- STDERR.puts "#{bookname} debug directory exists. Please remove or rename it first."
39
- exit 1
40
- end
41
-
42
- basetmp = Dir.mktmpdir
43
-
44
- FileUtils.cp(@params["cover"], "#{basetmp}/#{@params["cover"]}") if !@params["cover"].nil? && File.exist?(@params["cover"])
45
-
46
- if @params["titlepage"] # FIXME
47
- FileUtils.cp(@params["titlepage"], "#{basetmp}/#{@params["titlepage"]}")
48
- @epub.contents.push(Content.new("id" => "title", "file" => @params["titlepage"], "title" => @epub.res.v("titlepagetitle")))
49
- end
50
-
51
- makeBody(basetmp, yamlfile)
52
-
53
- if @params["colophon"]
54
- if @params["colophon"].instance_of?(String)
55
- FileUtils.cp(@params["colophon"], "#{basetmp}/colophon.#{@params["htmlext"]}")
56
- else
57
- File.open("#{basetmp}/colophon.#{@params["htmlext"]}", "w") {|f| @epub.colophon(f) }
58
- end
59
- @epub.contents.push(Content.new("id" => "colophon", "file" => "colophon.#{@params["htmlext"]}", "title" => @epub.res.v("colophontitle")))
60
- end
61
-
62
- epubtmpdir = @params["debug"].nil? ? nil : "#{Dir.pwd}/#{bookname}"
63
- unless @params["debug"].nil?
64
- Dir.mkdir(bookname)
65
- end
66
- @epub.produce("#{bookname}.epub", basetmp, epubtmpdir)
67
-
68
- FileUtils.rm_r(basetmp)
69
- end
70
-
71
- def makeBody(basetmp, yamlfile)
72
- pre = 0
73
- body = 0
74
- post = 0
75
- @manifeststr = ""
76
- @ncxstr = ""
77
- @tocdesc = Array.new
78
- toccount = 2
79
-
80
- if File.exists?("PREDEF")
81
- File.open("PREDEF") do |chaps|
82
- chaps.each_line do |l|
83
- pre += 1
84
- next if l =~ /\A#/
85
- fork {
86
- STDOUT.reopen("#{basetmp}/pre#{pre}.#{@params["htmlext"]}")
87
- exec("review-compile --target=html --yaml=#{yamlfile} #{l}")
88
- }
89
- Process.waitall
90
- getanchors(basetmp, "pre#{pre}.#{@params["htmlext"]}")
91
- end
92
- end
93
- end
94
-
95
- if File.exists?("CHAPS")
96
- File.open("CHAPS") do |chaps|
97
- chaps.each_line do |l|
98
- body += 1
99
- next if l =~ /\A#/
100
- fork {
101
- STDOUT.reopen("#{basetmp}/chap#{body}.#{@params["htmlext"]}")
102
- exec("review-compile --target=html --yaml=#{yamlfile} #{l}")
103
- }
104
- Process.waitall
105
- getanchors(basetmp, "chap#{body}.#{@params["htmlext"]}")
106
- end
107
- end
108
- end
109
-
110
- if File.exists?("POSTDEF")
111
- File.open("POSTDEF") do |chaps|
112
- chaps.each_line do |l|
113
- post += 1
114
- next if l =~ /^#/
115
- fork {
116
- STDOUT.reopen("#{basetmp}/post#{post}.#{@params["htmlext"]}")
117
- exec("review-compile --target=html --yaml=#{yamlfile} #{l}")
118
- }
119
- Process.waitall
120
- getanchors(basetmp, "post#{post}.#{@params["htmlext"]}")
121
- end
122
- end
123
- end
124
- if File.exist?("images")
125
- Dir.mkdir("#{basetmp}/images")
126
- copyImagesToDir("images", "#{basetmp}/images")
127
- end
128
- end
129
-
130
- def getanchors(basetmp, filename)
131
- File.open("#{basetmp}/#{filename}") do |f|
132
- firsttime = true
133
- f.each_line do |l|
134
- if l =~ /\A<h(\d)><a id=\"(.+?)\" \/>(.+?)<\/h/
135
- # level, ID, content
136
- level = $1.to_i
137
- id = $2
138
- title = $3
139
- if level == 1 && !firsttime.nil?
140
- @epub.contents.push(Content.new({
141
- "id" => "#{filename.sub(".#{@params["htmlext"]}", '')}",
142
- "file" => "#{filename}",
143
- "level" => level,
144
- "title" => title
145
- }))
146
- firsttime = nil
147
- else
148
- @epub.contents.push(Content.new({
149
- "id" => "#{filename.sub(".#{@params["htmlext"]}", '')}-#{id}",
150
- "file" => "#{filename}##{id}",
151
- "level" => level,
152
- "title" => title
153
- }))
154
- end
155
- end
156
- end
157
- end
158
- end
14
+ require 'review/epubmaker'
159
15
 
160
- def copyImagesToDir(dirname, copybase)
161
- Dir.open(dirname) do |dir|
162
- dir.each do |fname|
163
- next if fname =~ /\A\./
164
- if FileTest.directory?("#{dirname}/#{fname}")
165
- copyImagesToDir("#{dirname}/#{fname}", "#{copybase}/#{fname}")
166
- else
167
- if fname =~ /\.(png|gif|jpg|jpeg|svg)\Z/i
168
- Dir.mkdir(copybase) unless File.exist?(copybase)
169
- FileUtils.cp "#{dirname}/#{fname}", copybase
170
- end
171
- end
172
- end
173
- end
16
+ rv = ReVIEW::EPUBMaker.new
17
+ if ARGV.size < 1 || !File.exist?(ARGV[0])
18
+ STDERR.puts "Usage: #{$0} YAML_filename [export_filename]"
19
+ exit 0
174
20
  end
175
21
 
176
- main
22
+ bookname = (ARGV.size > 1) ? ARGV[1] : nil
23
+ rv.produce(ARGV[0], bookname)
data/bin/review-index CHANGED
@@ -2,7 +2,7 @@
2
2
  #
3
3
  #
4
4
  # Copyright (c) 1999-2007 Minero Aoki
5
- # 2008-2010 Minero Aoki, Kenshi Muto
5
+ # 2008-2014 Minero Aoki, Kenshi Muto
6
6
  #
7
7
  # This program is free software.
8
8
  # You can distribute or modify this program under the terms of
data/bin/review-init CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  #
3
- # Copyright (c) 2013 Masanori Kado
3
+ # Copyright (c) 2013-2014 Masanori Kado
4
4
  #
5
5
  # This program is free software.
6
6
  # You can distribute or modify this program under the terms of
@@ -15,14 +15,16 @@ def main
15
15
  exit
16
16
  end
17
17
 
18
- dir = File.expand_path(ARGV.shift)
18
+ initdir = File.expand_path(ARGV.shift)
19
19
  @review_dir = File.dirname(File.expand_path(__FILE__ + "./../"))
20
20
 
21
- generate_dir(dir) do |dir|
21
+ generate_dir(initdir) do |dir|
22
22
  generate_review_setting_files(dir)
23
23
  generate_sample(dir)
24
24
  generate_images_dir(dir)
25
+ generate_cover_image(dir)
25
26
  generate_layout(dir)
27
+ generate_texmacro(dir)
26
28
  generate_config(dir)
27
29
  generate_rakefile(dir)
28
30
  end
@@ -54,7 +56,7 @@ def generate_layout(dir)
54
56
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
55
57
  <meta http-equiv="Content-Style-Type" content="text/css" />
56
58
  <link rel="stylesheet" type="text/css" href="style.css" />
57
- <meta name="generator" content="ReVIEW" />
59
+ <meta name="generator" content="Re:VIEW" />
58
60
  <title><%= title %></title>
59
61
  </head>
60
62
  <body>
@@ -77,6 +79,10 @@ def generate_images_dir(dir)
77
79
  Dir.mkdir dir + '/images'
78
80
  end
79
81
 
82
+ def generate_cover_image(dir)
83
+ FileUtils.cp @review_dir + "/test/sample-book/src/images/cover.jpg", dir + '/images/'
84
+ end
85
+
80
86
  def generate_config(dir)
81
87
  FileUtils.cp @review_dir + "/test/sample-book/src/config.yml", dir
82
88
  end
@@ -85,10 +91,16 @@ def generate_style(dir)
85
91
  File.open(dir + "/style.css", "w")
86
92
  end
87
93
 
94
+ def generate_texmacro(dir)
95
+ texmacrodir = dir + '/sty'
96
+ Dir.mkdir texmacrodir
97
+ FileUtils.cp @review_dir + "/test/sample-book/src/sty/reviewmacro.sty", texmacrodir
98
+ end
99
+
88
100
  def generate_rakefile(dir)
89
101
  FileUtils.cp @review_dir + "/test/sample-book/src/Rakefile", dir
90
102
  end
91
103
 
92
- if $0 == __FILE__
104
+ if File.basename($0) == File.basename(__FILE__)
93
105
  main()
94
106
  end
data/bin/review-pdfmaker CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
3
  #
4
- # Copyright (c) 2010 Kenshi Muto and Masayoshi Takahashi
4
+ # Copyright (c) 2010-2014 Kenshi Muto and Masayoshi Takahashi
5
5
  #
6
6
  # This program is free software.
7
7
  # You can distribute or modify this program under the terms of
@@ -19,6 +19,7 @@ bindir = Pathname.new(__FILE__).realpath.dirname
19
19
  $LOAD_PATH.unshift((bindir + '../lib').realpath)
20
20
 
21
21
  require 'review'
22
+ require 'review/i18n'
22
23
 
23
24
  def error(msg)
24
25
  $stderr.puts "#{File.basename($0, '.*')}: error: #{msg}"
@@ -32,7 +33,7 @@ end
32
33
 
33
34
  def check_book(values)
34
35
  pdf_file = values["bookname"]+".pdf"
35
- if File.exists? pdf_file
36
+ if File.exist? pdf_file
36
37
  error "file already exists:#{pdf_file}"
37
38
  end
38
39
  end
@@ -86,6 +87,10 @@ def main
86
87
  values["usepackage"] = "\\usepackage{#{values['texstyle']}}"
87
88
  end
88
89
 
90
+ %w[aut csl trl dsr ill cov edt].each do |item|
91
+ values[item] = [values[item]] if !values[item].nil? && values[item].instance_of?(String)
92
+ end
93
+
89
94
  copy_images("./images", "#{@path}/images")
90
95
  copyStyToDir(Dir.pwd + "/sty", @path)
91
96
  copyStyToDir(Dir.pwd, @path, "tex")
@@ -97,22 +102,25 @@ def main
97
102
  ## do compile
98
103
  enc = values["params"].to_s.split(/\s+/).find{|i| i =~ /\A--outencoding=/ }
99
104
  kanji = enc ? enc.split(/=/).last.gsub(/-/, '').downcase : 'utf8'
105
+ texcommand = values["texcommand"] || "platex"
100
106
  fork {
101
- exec("platex -kanji=#{kanji} book.tex")
107
+ exec("#{texcommand} -kanji=#{kanji} book.tex")
102
108
  }
103
109
  Process.waitall
104
110
  fork {
105
- exec("platex -kanji=#{kanji} book.tex")
111
+ exec("#{texcommand} -kanji=#{kanji} book.tex")
106
112
  }
107
113
  Process.waitall
108
114
  fork {
109
- exec("platex -kanji=#{kanji} book.tex")
115
+ exec("#{texcommand} -kanji=#{kanji} book.tex")
110
116
  }
111
- Process.waitall
112
- fork {
113
- exec("dvipdfmx -d 5 book.dvi")
114
- }
115
- Process.waitall
117
+ if texcommand != "lualatex"
118
+ Process.waitall
119
+ fork {
120
+ exec("dvipdfmx -d 5 book.dvi")
121
+ }
122
+ Process.waitall
123
+ end
116
124
  }
117
125
  FileUtils.cp("#{@path}/book.pdf", "#{@basedir}/#{bookname}.pdf")
118
126
  end
@@ -170,16 +178,29 @@ def get_template(values)
170
178
 
171
179
  okuduke = ""
172
180
  authors = ""
173
- if values["aut"]
174
- okuduke += "著 者 & #{values["aut"]} \\\\\n"
175
- authors = values["aut"]+ "\\vspace*{1zh} 著"
181
+ if !values["aut"].nil? && !values["aut"].empty?
182
+ okuduke += "著 者 & #{values["aut"].join(ReVIEW::I18n.t("names_splitter"))} \\\\\n"
183
+ authors = values["aut"].join(ReVIEW::I18n.t("names_splitter")) + ReVIEW::I18n.t("author_postfix")
184
+ end
185
+ if !values["csl"].nil? && !values["csl"].empty?
186
+ okuduke += "監 修 & #{values["csl"].join(ReVIEW::I18n.t("names_splitter"))} \\\\\n"
187
+ authors += " \\\\\n"+values["csl"].join(ReVIEW::I18n.t("names_splitter")) + ReVIEW::I18n.t("supervisor_postfix")
188
+ end
189
+ if !values["trl"].nil? && !values["trl"].empty?
190
+ okuduke += "翻 訳 & #{values["trl"].join(ReVIEW::I18n.t("names_splitter"))} \\\\\n"
191
+ authors += " \\\\\n"+values["trl"].join(ReVIEW::I18n.t("names_splitter")) + ReVIEW::I18n.t("translator_postfix")
192
+ end
193
+ if !values["dsr"].nil? && !values["dsr"].empty?
194
+ okuduke += "デザイン & #{values["dsr"].join(ReVIEW::I18n.t("names_splitter"))} \\\\\n"
195
+ end
196
+ if !values["ill"].nil? && !values["ill"].empty?
197
+ okuduke += "イラスト & #{values["ill"].join(ReVIEW::I18n.t("names_splitter"))} \\\\\n"
176
198
  end
177
- if values["trl"]
178
- authors += " \\\\\n"+values["trl"]+ "\\vspace*{1zh} "
179
- okuduke += "翻 訳 & #{values["trl"]} \\\\\n"
199
+ if !values["cov"].nil? && !values["cov"].empty?
200
+ okuduke += "表 紙 & #{values["cov"].join(ReVIEW::I18n.t("names_splitter"))} \\\\\n"
180
201
  end
181
- if values["edt"]
182
- okuduke += "編集者 & #{values["edt"]} \\\\\n"
202
+ if !values["edt"].nil? && !values["edt"].empty?
203
+ okuduke += "編集者 & #{values["edt"].join(ReVIEW::I18n.t("names_splitter"))} \\\\\n"
183
204
  end
184
205
  okuduke += <<EOB
185
206
  発行所 & #{values["prt"]} \\\\
@@ -190,7 +211,7 @@ EOB
190
211
  template = File.expand_path(File.dirname(__FILE__) +
191
212
  '/../lib/review/review.tex.erb')
192
213
  layout_file = File.join(@basedir, "layouts", "layout.tex.erb")
193
- if File.exists?(layout_file)
214
+ if File.exist?(layout_file)
194
215
  template = layout_file
195
216
  end
196
217
 
data/bin/review-preproc CHANGED
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # $Id: review-preproc 3761 2007-12-31 07:20:09Z aamine $
4
4
  #
5
- # Copyright (c) 2010 Minero Aoki, Kenshi Muto
5
+ # Copyright (c) 2010-2014 Minero Aoki, Kenshi Muto
6
6
  # Copyright (c) 1999-2007 Minero Aoki
7
7
  #
8
8
  # This program is free software.
data/bin/review-validate CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- # Copyright (c) 2010 Kenshi Muto
2
+ # Copyright (c) 2010-2014 Kenshi Muto
3
3
  #
4
4
  # This program is free software
5
5
  # You can distribute or modify this program under the terms of
@@ -7,7 +7,7 @@
7
7
  # For details of the GNU LGPL, see the file "COPYING".
8
8
  #
9
9
 
10
- # simple validator for ReVIEW
10
+ # simple validator for Re:VIEW
11
11
 
12
12
  block = nil
13
13
  maxcolcount = 0
data/bin/review-vol CHANGED
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # $Id: review-vol 3901 2008-02-11 20:04:59Z aamine $
4
4
  #
5
- # Copyright (c) 2003-2007 Minero Aoki
5
+ # Copyright (c) 2003-2014 Minero Aoki
6
6
  #
7
7
  # This program is free software.
8
8
  # You can distribute or modify this program under the terms of
data/debian/control CHANGED
@@ -13,10 +13,10 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, ruby
13
13
  Recommends: zip
14
14
  Suggests: ptex-bin, okumura-clsfiles, libmathml-ruby
15
15
  Description: easy-to-use digital publishing system for Japanese books and ebooks
16
- ReVIEW is a digital publishing system for books and ebooks.
16
+ Re:VIEW is a digital publishing system for books and ebooks.
17
17
  It is aimed professional Japanese editorial use.
18
18
  .
19
- ReVIEW generates HTML, LaTeX, plain text, and Adobe InDesign XML
19
+ Re:VIEW generates HTML, LaTeX, plain text, and Adobe InDesign XML
20
20
  from a text file with simple and extensible tags.
21
21
  .
22
22
  This package provides the builders for EPUB and PDF.
data/doc/format.rdoc CHANGED
@@ -1,6 +1,6 @@
1
- = ReVIEW フォーマット
1
+ = Re:VIEW フォーマット
2
2
 
3
- ReVIEW フォーマットの文法について解説します。ReVIEW
3
+ Re:VIEW フォーマットの文法について解説します。Re:VIEW
4
4
  フォーマットは ASCII の EWB を基本としながら、一部に
5
5
  RD や各種 Wiki の文法をとりいれて簡素化しています。
6
6
 
@@ -226,6 +226,21 @@ RD や各種 Wiki の文法をとりいれて簡素化しています。
226
226
 
227
227
  なお、後述しますが、インラインで図を出力するには@<icon>を使用します。
228
228
 
229
+ 図として貼り込む画像ファイルは、次の順序で探索され、最初に発見されたものが利用されます。
230
+
231
+ 1. <imgdir>/<builder>/<chapid>/<id>.<ext>
232
+ 2. <imgdir>/<builder>/<chapid>-<id>.<ext>
233
+ 3. <imgdir>/<builder>/<id>.<ext>
234
+ 4. <imgdir>/<chapid>/<id>.<ext>
235
+ 5. <imgdir>/<chapid>-<id>.<ext>
236
+ 6. <imgdir>/<id>.<ext>
237
+
238
+ * <imgdir> はデフォルトでは images ディレクトリです。
239
+ * <builder> は利用しているビルダ名 (ターゲット名) で、たとえば --target=html としているのであれば、images/html ディレクトリとなります。
240
+ * <chapid> は re ファイルの名前に相当します。たとえば ch01.re という名前であれば「ch01」です。
241
+ * <id> は //image[〜] の最初に入れた「〜」のことです (つまり、ID に日本語や空白交じりの文字を使ってしまうと、後で画像ファイル名の名付けに苦労することになります!)。
242
+ * <ext> は Re:VIEW が自動で判別する拡張子です。ビルダによってサポートおよび優先する拡張子は異なります。
243
+
229
244
  == 番号が振られていない図
230
245
 
231
246
  //indepimage[ファイル名][キャプション] で番号が振られていない画像ファイルを生成します。キャプションは省略できます。
@@ -317,7 +332,9 @@ footnotetextオプションを使うには、YAMLファイルのparamsに「--fo
317
332
 
318
333
  これでPDFのコラムや表のなかでも脚注が使えるようになります。
319
334
 
320
- ただし、通常の脚注(footnote)ではなく、footnotemarkとfootnotetextを使うため、本文と脚注が別ページに分かれる可能性があるなど、いろいろな制約があります。
335
+ ただし、通常の脚注(footnote)ではなく、footnotemarkとfootnotetextを使うため、
336
+ 本文と脚注が別ページに分かれる可能性があるなど、いろいろな制約があります。
337
+ なお、採番が別々になるためfootnoteとfootnotemark/footnotetextを両立させることはできません。
321
338
 
322
339
  == 参考文献の定義
323
340
 
@@ -393,7 +410,7 @@ LaTeX の式を挿入するには、//texequation{ 〜 //} を使います。
393
410
 
394
411
  == 生データ行
395
412
 
396
- ReVIEW のタグ範囲を越えて何か特別な行を挿入したい場合、//raw を使います。
413
+ Re:VIEW のタグ範囲を越えて何か特別な行を挿入したい場合、//raw を使います。
397
414
 
398
415
  例:
399
416
 
@@ -419,7 +436,7 @@ ReVIEW のタグ範囲を越えて何か特別な行を挿入したい場合、/
419
436
 
420
437
  == その他の文法
421
438
 
422
- ReVIEW は任意のブロックを追加可能なので、本によって専用ブロックを
439
+ Re:VIEW は任意のブロックを追加可能なので、本によって専用ブロックを
423
440
  使う場合があります。これまでに使った例を以下に示します。
424
441
 
425
442
  //prototype:: 関数プロトタイプ。『ふつうのLinuxプログラミング』で使用。
@@ -568,7 +585,7 @@ Web ハイパーリンクを記述するには、リンクに @<href>、アン
568
585
 
569
586
  == 国際化(i18n)
570
587
 
571
- ReVIEWが出力する文字列(「第◯章」「図」「表」など)を、指定した言語に
588
+ Re:VIEWが出力する文字列(「第◯章」「図」「表」など)を、指定した言語に
572
589
  合わせて出力することができます。デフォルトは日本語です。
573
590
 
574
591
  CHAPS などと同じディレクトリに locale.yaml というファイルを用意して、