review-retrovert 0.9.7 → 0.9.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +9 -0
  3. data/.editorconfig +3 -0
  4. data/.github/workflows/retrovert.yml +20 -5
  5. data/.gitignore +1 -0
  6. data/.vscode/launch.json +48 -0
  7. data/Gemfile.lock +13 -4
  8. data/Makefile +24 -0
  9. data/docker/review.Dockerfile +10 -0
  10. data/lib/review/retrovert/converter.rb +374 -111
  11. data/lib/review/retrovert/reviewcompat.rb +57 -0
  12. data/lib/review/retrovert/reviewdef.rb +70 -0
  13. data/lib/review/retrovert/sty/{ird.sty → ird.sty.erb} +9 -1
  14. data/lib/review/retrovert/sty/review-retrovert-custom.sty.erb +6 -0
  15. data/lib/review/retrovert/utils.rb +35 -0
  16. data/lib/review/retrovert/version.rb +1 -1
  17. data/lib/review/retrovert/yamlconfig.rb +0 -1
  18. data/package-lock.json +6 -0
  19. data/package.json +1 -0
  20. data/review-retrovert.gemspec +5 -1
  21. data/testdata/mybook/.gitignore +3 -1
  22. data/testdata/mybook/.textlintrc +11 -0
  23. data/testdata/mybook/Rakefile +8 -0
  24. data/testdata/mybook/catalog.yml +36 -10
  25. data/testdata/mybook/config-starter.yml +134 -9
  26. data/testdata/mybook/config.yml +44 -15
  27. data/testdata/mybook/contents/00-preface.re +48 -2
  28. data/testdata/mybook/contents/01-install.re +38 -5
  29. data/testdata/mybook/contents/02-tutorial.re +333 -113
  30. data/testdata/mybook/contents/03-syntax.re +2370 -373
  31. data/testdata/mybook/contents/04-customize.re +424 -88
  32. data/testdata/mybook/contents/05-faq.re +288 -10
  33. data/testdata/mybook/contents/06-bestpractice.re +431 -59
  34. data/testdata/mybook/contents/91-compare.re +402 -2
  35. data/testdata/mybook/contents/92-filelist.re +14 -8
  36. data/testdata/mybook/contents/93-background.re +10 -10
  37. data/testdata/mybook/contents/99-postface.re +2 -1
  38. data/testdata/mybook/contents/r0-root.re +1 -1
  39. data/testdata/mybook/css/webstyle.css +180 -2
  40. data/testdata/mybook/data/terms.txt +3 -0
  41. data/testdata/mybook/data/words.txt +15 -0
  42. data/testdata/mybook/images/03-syntax/index-page.png +0 -0
  43. data/testdata/mybook/images/03-syntax/order-detail.png +0 -0
  44. data/testdata/mybook/images/04-customize/section_decoration_samples.png +0 -0
  45. data/testdata/mybook/images/05-faq/dummy-image.png +0 -0
  46. data/testdata/mybook/images/06-bestpractice/section_title_wlines.png +0 -0
  47. data/testdata/mybook/images/avatar-b.png +0 -0
  48. data/testdata/mybook/images/avatar-g.png +0 -0
  49. data/testdata/mybook/images/avatar-r.png +0 -0
  50. data/testdata/mybook/images/caution-icon.png +0 -0
  51. data/testdata/mybook/images/info-icon.png +0 -0
  52. data/testdata/mybook/images/warning-icon.png +0 -0
  53. data/testdata/mybook/layouts/layout.html5.erb +3 -1
  54. data/testdata/mybook/layouts/layout.tex.erb +265 -379
  55. data/testdata/mybook/layouts/layout.tex.erb.orig +386 -0
  56. data/testdata/mybook/lib/ruby/review-book.rb +64 -0
  57. data/testdata/mybook/lib/ruby/review-builder.rb +902 -63
  58. data/testdata/mybook/lib/ruby/review-compiler.rb +675 -22
  59. data/testdata/mybook/lib/ruby/review-epubbuilder.rb +33 -0
  60. data/testdata/mybook/lib/ruby/review-epubmaker.rb +10 -7
  61. data/testdata/mybook/lib/ruby/review-htmlbuilder.rb +354 -66
  62. data/testdata/mybook/lib/ruby/review-latexbuilder.rb +429 -146
  63. data/testdata/mybook/lib/ruby/review-maker.rb +117 -6
  64. data/testdata/mybook/lib/ruby/review-markdownbuilder.rb +945 -0
  65. data/testdata/mybook/lib/ruby/review-markdownmaker.rb +91 -0
  66. data/testdata/mybook/lib/ruby/review-monkeypatch.rb +2 -0
  67. data/testdata/mybook/lib/ruby/review-pdfmaker.rb +160 -82
  68. data/testdata/mybook/lib/ruby/review-webmaker.rb +20 -5
  69. data/testdata/mybook/lib/tasks/review.rake +14 -0
  70. data/testdata/mybook/lib/tasks/starter.rake +148 -4
  71. data/testdata/mybook/sty/indexstyle.ist +25 -0
  72. data/testdata/mybook/sty/mytextsize.sty +29 -0
  73. data/testdata/mybook/sty/mytitlepage.sty +34 -11
  74. data/testdata/mybook/sty/review-base.sty +276 -0
  75. data/testdata/mybook/sty/starter-codeblock.sty +237 -106
  76. data/testdata/mybook/sty/starter-color.sty +72 -17
  77. data/testdata/mybook/sty/starter-heading.sty +60 -13
  78. data/testdata/mybook/sty/starter-misc.sty +894 -0
  79. data/testdata/mybook/sty/starter-note.sty +67 -14
  80. data/testdata/mybook/sty/starter-talklist.sty +105 -0
  81. data/testdata/mybook/sty/starter-util.sty +35 -0
  82. data/testdata/mybook/sty/starter.sty +8 -526
  83. metadata +80 -4
@@ -82,7 +82,9 @@ module ReVIEW
82
82
  end
83
83
 
84
84
  def build_part(part, htmlfile)
85
- new_renderer().render_part(part, File.join(@docroot, htmlfile))
85
+ html = new_renderer().render_part(part)
86
+ filepath = File.join(@docroot, htmlfile)
87
+ File.write(filepath, html)
86
88
  end
87
89
 
88
90
  def build_chap(chap, base_path, ispart)
@@ -101,9 +103,11 @@ module ReVIEW
101
103
  #
102
104
  begin
103
105
  @converter.convert(filename, File.join(@docroot, htmlfile))
104
- rescue => ex
106
+ ## 文法エラーだけキャッチし、それ以外のエラーはキャッチしないよう変更
107
+ #rescue => ex
108
+ rescue ApplicationError => ex
105
109
  warn "compile error in #{filename} (#{ex.class})"
106
- warn ex.message
110
+ warn colored_errmsg(ex.message)
107
111
  generate_errorpage(ex, filename, htmlfile)
108
112
  end
109
113
  end
@@ -206,6 +210,11 @@ module ReVIEW
206
210
 
207
211
  class WEBBuilder < HTMLBuilder
208
212
 
213
+ def target_name
214
+ #"web"
215
+ "html"
216
+ end
217
+
209
218
  def layoutfile
210
219
  "layouts/layout.html5.erb"
211
220
  end
@@ -242,8 +251,14 @@ module ReVIEW
242
251
  #
243
252
  sb = ""
244
253
  sb << "<div class=\"part\">\n"
245
- sb << "<h1 class=\"part-number\">#{i18n('part', part.number)}</h1>\n"
246
- sb << "<h2 class=\"part-title\">#{part_name}</h2>\n" if part_name.present?
254
+ sb << "<h1 class=\"part-number\">#{h i18n('part', part.number)}</h1>\n"
255
+ sb << "<h2 class=\"part-title\">#{h part_name}</h2>\n" if part_name.present?
256
+ sb << "<ul>\n"
257
+ part.chapters.each do |c|
258
+ htmlfile = c.path.sub(/\.re\z/, ".#{@config['htmlext']}")
259
+ sb << " <li><a href=\"#{h htmlfile}\">第#{h c.number}章 #{h c.title}</a></li>\n"
260
+ end
261
+ sb << "</ul>\n"
247
262
  sb << "</div>\n"
248
263
  @body = sb
249
264
  #
@@ -23,6 +23,18 @@ def config_file()
23
23
  return conf
24
24
  end
25
25
 
26
+ def setup_envvars()
27
+ {
28
+ 'c' => 'STARTER_CHAPTER',
29
+ 't' => 'STARTER_TARGET',
30
+ 'n' => 'STARTER_COMPILETIMES',
31
+ 'd' => 'STARTER_DRAFT',
32
+ }.each do |char, name|
33
+ v = ENV.delete(char)
34
+ ENV[name] = v if v && !v.empty?
35
+ end
36
+ end
37
+
26
38
  task default: :html_all
27
39
 
28
40
  desc 'build html (Usage: rake build re=target.re)'
@@ -55,6 +67,8 @@ task :pdf => :prepare do
55
67
  #require 'review/pdfmaker'
56
68
  require './lib/ruby/review-pdfmaker'
57
69
  #
70
+ setup_envvars() # ex: `c=01-install` => ENV['STARTER_CHAPTER']='01-install'
71
+ #
58
72
  FileUtils.rm_rf [BOOK_PDF, BOOK, BOOK + '-pdf']
59
73
  begin
60
74
  ReVIEW::PDFMaker.execute(config_file())
@@ -25,8 +25,6 @@ namespace :docker do
25
25
 
26
26
  docker_image = ENV['DOCKER_IMAGE']
27
27
  docker_image = "kauplan/review2.5" if docker_image.to_s.empty?
28
- docker_opts = "--rm -v $PWD:/work -w /work"
29
- docker_opts += ENV.keys().grep(/^STARTER_/).map {|k| " -e #{k}" }.join()
30
28
 
31
29
  desc "+ pull docker image for building PDF file"
32
30
  task :setup do
@@ -34,11 +32,16 @@ namespace :docker do
34
32
  end
35
33
 
36
34
  docker_run = proc do |command, opt=nil|
35
+ docker_opts = "--rm -v $PWD:/work -w /work"
36
+ docker_opts += ENV.keys().grep(/^STARTER_/).map {|k| " -e #{k}" }.join()
37
37
  sh "docker run #{docker_opts} #{opt} #{docker_image} #{command}"
38
38
  end
39
39
 
40
40
  desc "+ run 'rake pdf' on docker"
41
- task :pdf do docker_run.call('rake pdf') end
41
+ task :pdf do
42
+ setup_envvars() # defined in 'review.rake'
43
+ docker_run.call('rake pdf')
44
+ end
42
45
 
43
46
  desc "+ run 'rake pdf:nombre' on docker"
44
47
  task :'pdf:nombre' do docker_run.call('rake pdf:nombre') end
@@ -56,6 +59,115 @@ namespace :docker do
56
59
  docker_run.call('rake web:server', opt)
57
60
  end
58
61
 
62
+ desc "+ run 'rake markdown' on docker"
63
+ task :markdown do docker_run.call('rake markdown') end
64
+
65
+ desc "+ run 'rake textlint' on docker"
66
+ task :textlint do docker_run.call('rake textlint') end
67
+
68
+ desc "+ run 'rake textlint:setup' on docker"
69
+ task :'textlint:setup' do docker_run.call('rake textlint:setup') end
70
+
71
+ end
72
+
73
+
74
+ ##
75
+ ## 初期設定
76
+ ##
77
+ namespace :setup do
78
+
79
+ desc "+ install rubygems packages"
80
+ task :rubygems do
81
+ if ENV['GEM_HOME'].to_s.empty?
82
+ ENV['GEM_HOME'] = File.join(Dir.pwd, 'rubygems')
83
+ mkdir_p 'rubygems'
84
+ end
85
+ ruby_version = RUBY_VERSION.split('.').map(&:to_i) # ex: "2.5.0" -> [2, 5, 0]
86
+ rubyzip_requires = [2, 4, 0] # rubyzip >= 2.0 requires Ruby >= 2.4
87
+ ruby_too_old = (ruby_version <=> rubyzip_requires) < 0
88
+ sh "gem install rubyzip --version 1.3" if ruby_too_old
89
+ sh "gem install review --version 2.5"
90
+ end
91
+
92
+ desc "+ download docker image"
93
+ task :dockerimage do
94
+ sh "docker pull kauplan/review2.5"
95
+ end
96
+
97
+ end
98
+
99
+
100
+ ##
101
+ ## Markdownに変換する(主にtextlistを使うため)
102
+ ##
103
+ desc "+ convert '*.re' files into '*.md'"
104
+ task :markdown => :prepare do
105
+ require 'review'
106
+ require './lib/ruby/review-markdownmaker'
107
+ #
108
+ setup_envvars() # ex: `c=01-install` => ENV['STARTER_CHAPTER']='01-install'
109
+ #
110
+ begin
111
+ builddir = ReVIEW::MarkdownMaker.execute(config_file())
112
+ $_builddir = builddir
113
+ rescue RuntimeError => ex
114
+ if ex.message =~ /^failed to run command:/
115
+ abort "*\n* ERROR (review-pdfmaker):\n* #{ex.message}\n*"
116
+ else
117
+ raise
118
+ end
119
+ end
120
+ end
121
+
122
+
123
+ ##
124
+ ## textlintを実行する
125
+ ##
126
+ task :textlint => :markdown do
127
+ builddir = $_builddir
128
+ textlint_path = "./node_modules/.bin/textlint"
129
+ if File.exist?(textlint_path)
130
+ sh "#{textlint_path} #{builddir}/*.md"
131
+ else
132
+ sh "textlint #{builddir}/*.md"
133
+ end
134
+ end
135
+
136
+
137
+ namespace :textlint do
138
+
139
+ ## see:
140
+ ## - https://github.com/textlint/textlint
141
+ ## - https://github.com/textlint/textlint/wiki/Collection-of-textlint-rule#rule-presets-japanese
142
+ task :setup do
143
+ require 'json'
144
+ rcfile = ".textlintrc"
145
+ rcdata = File.open(rcfile, encoding: 'utf-8') {|f| JSON.load(f) }
146
+ keys = ['filters', 'rules']
147
+ #
148
+ failed = false
149
+ sh "npm --version" do |ok, _| failed = !ok end
150
+ if failed
151
+ $stderr.puts <<END
152
+ **
153
+ ** ERROR: `npm' command not installed.
154
+ **
155
+ ** Please install Node.js (and npm) at first.
156
+ **
157
+ END
158
+ exit 1
159
+ end
160
+ #
161
+ sh "npm init --yes"
162
+ sh "npm install --save-dev textlint"
163
+ keys.each do |key|
164
+ rcdata[key].each do |name, enabled|
165
+ next unless enabled
166
+ sh "npm install --save-dev textlint-rule-#{name}"
167
+ end if rcdata[key]
168
+ end
169
+ end
170
+
59
171
  end
60
172
 
61
173
 
@@ -66,6 +178,21 @@ end
66
178
  ##
67
179
  namespace :pdf do
68
180
 
181
+ color2rgb = {
182
+ 'black' => [0.0, 0.0, 0.0],
183
+ 'white' => [1.0, 1.0, 1.0],
184
+ 'red' => [1.0, 0.0, 0.0],
185
+ 'green' => [0.0, 1.0, 0.0],
186
+ 'blue' => [0.0, 0.0, 1.0],
187
+ 'cyan' => [0.0, 1.0, 1.0],
188
+ 'magenta' => [1.0, 0.0, 1.0],
189
+ 'yellow' => [1.0, 1.0, 0.0],
190
+ #
191
+ 'gray' => [0.50, 0.50, 0.50],
192
+ 'darkgray' => [0.25, 0.25, 0.25],
193
+ 'lightgray' => [0.75, 0.75, 0.75],
194
+ }
195
+
69
196
  desc "+ add nombre (rake pdf:nombre [file=*.pdf] [out=*.pdf])"
70
197
  task :nombre do
71
198
  infile = ENV['file']; infile = nil if infile && infile.empty?
@@ -77,6 +204,23 @@ namespace :pdf do
77
204
  abort "ERROR: 'combine_pdf' gem not installed; please run `gem install combine_pdf` at first."
78
205
  end
79
206
  #
207
+ nombre_opts = proc {
208
+ require 'yaml'
209
+ conffile = 'config-starter.yml'
210
+ confdict = File.open(conffile, encoding: 'utf-8') {|f| YAML.load(f) }
211
+ d = confdict['starter']
212
+ mm2pt = 72.0 / 25.4 # 1 pt == 1/72 inch, 1 inch == 25.4 mm
213
+ {
214
+ :start => d['nombre_startnumber'],
215
+ :margin_h => d['nombre_bottommargin'].to_f * mm2pt,
216
+ :margin_w => d['nombre_sidemargin'].to_f * mm2pt,
217
+ :font => nil,
218
+ :size => d['nombre_fontsize'].to_i,
219
+ :color => color2rgb[d['nombre_fontcolor']],
220
+ :binding => nil,
221
+ }
222
+ }.call()
223
+ #
80
224
  class CombinePDF::PDF
81
225
  def add_nombre(options={})
82
226
  start = options[:start] || 1
@@ -131,7 +275,7 @@ namespace :pdf do
131
275
  #pdf.add_nombre()
132
276
  #File.binwrite(outfile, pdf.to_pdf())
133
277
  pdf = CombinePDF.load(infile)
134
- pdf.add_nombre()
278
+ pdf.add_nombre(nombre_opts)
135
279
  pdf.save(outfile)
136
280
  end
137
281
 
@@ -0,0 +1,25 @@
1
+ ##
2
+ ## LaTeXでの索引生成コマンド mendex (upmendex) の設定
3
+ ##
4
+
5
+ ## 用語とページ番号との間をピリオドで埋める
6
+ delim_0 "\\quad\\dotfill ~"
7
+ delim_1 "\\quad\\dotfill ~"
8
+ delim_2 "\\quad\\dotfill ~"
9
+
10
+ ## 用語とページ番号との間を空白で埋める
11
+ #delim_0 "\\quad\\hfill"
12
+ #delim_1 "\\quad\\hfill"
13
+ #delim_2 "\\quad\\hfill"
14
+
15
+ ## 索引に見出しをつける
16
+ ## (mendex のデフォルトでは見出しが「あ い う え お か ...」になる。
17
+ ## これを「あ か さ た な は ...」にするには、config.yml の
18
+ ## `makeindex_options:` オプションに「-g」を含める。)
19
+ heading_flag 1
20
+ letter_head 2
21
+
22
+ ## 見出しを囲うLaTeXコマンド
23
+ #heading_prefix "{\\bfseries\\gtfamily\\sffamily ■"
24
+ heading_prefix "\\starterindexgroup{"
25
+ heading_suffix "}"
@@ -59,3 +59,32 @@
59
59
  \addtolength{\topmargin}{-2\Cvs} % ページ上部の余白を2行分減らす
60
60
  \addtolength{\textheight}{2\Cvs} % ページ本文の高さを2行分増やす
61
61
  \addtolength{\headsep}{1mm}
62
+
63
+
64
+ %% 塗り足し幅が設定されていて、かつ印刷用PDFの場合
65
+ \if@pbook
66
+ \ifx\starter@bleedsize\empty\else
67
+ %% 塗り足しの分だけ、本文をずらす
68
+ \setlength{\@tempdimb}{\starter@bleedsize}
69
+ \addtolength{\oddsidemargin}{\@tempdimb} % 右ページを右にずらす
70
+ \addtolength{\evensidemargin}{\@tempdimb} % 左ページも右にずらす
71
+ \addtolength{\topmargin}{\@tempdimb} % 左右のページを下にずらす
72
+ %% 塗り足しの分だけ、ページサイズを増やす
73
+ \setlength{\@tempdimc}{2\@tempdimb}
74
+ \addtolength{\paperwidth}{\@tempdimc} % ページ幅を増やす
75
+ \addtolength{\paperheight}{\@tempdimc} % ページ高さを増やす
76
+ %% 塗り足しの分だけ、PDFの縦横サイズを増やす
77
+ \def\@tempa{A5}
78
+ \ifx\starter@pagesize\@tempa
79
+ \AtBeginDvi{\special{papersize=154mm,216mm}} % A5 (148x210mm)
80
+ \fi
81
+ \def\@tempb{B5}
82
+ \ifx\starter@pagesize\tempb
83
+ \AtBeginDvi{\special{papersize=188mm,263mm}} % B5 (182x257mm)
84
+ \fi
85
+ \def\@tempc{A4}
86
+ \ifx\starter@pagesize\tempc
87
+ \AtBeginDvi{\special{papersize=216mm,303mm}} % A4 (210x297mm)
88
+ \fi
89
+ \fi
90
+ \fi
@@ -3,7 +3,7 @@
3
3
  %%%
4
4
 
5
5
  \usepackage{afterpage} % for '\afterpage'
6
- \usepackage[pagecolor=none]{pagecolor} % for '\newpagecolor'
6
+ \usepackage{pagecolor} % for '\newpagecolor'
7
7
 
8
8
  %% 背景色を指定
9
9
  %\definecolor{starter@titlepagecolor}{gray}{0.90} % 薄いグレー
@@ -40,7 +40,7 @@
40
40
  {
41
41
  \Large % フォントサイズを大きめに
42
42
  {\rmfamily ---}~ % ローマン体で「--」
43
- \@subtitle % サブタイトル
43
+ \@subtitle{}% % サブタイトル
44
44
  ~{\rmfamily ---} % ローマン体で「--」
45
45
  \par % 段落を区切る(デザイン崩れを防ぐため)
46
46
  }
@@ -51,15 +51,38 @@
51
51
  %\rmfamily % ローマン体(英語)
52
52
  \normalfont % デフォルトの書体
53
53
 
54
- %% 著者
55
- \ifx\@author\empty\else
56
- \vspace{8zw} % 縦方向のスペース
57
- {
58
- \LARGE % フォントサイズを大きく
59
- \@author % 著者
60
- \par % 段落を区切る(デザイン崩れを防ぐため)
61
- }
62
- \fi
54
+ %% 著者、翻訳者、監修者
55
+ {
56
+ \Large % 大きめのフォントに変更
57
+ \newcommand{\@render@who}[2]{{
58
+ \edef\@tempa{##2} % 第2引数を一時変数に代入
59
+ \ifx\@tempa\empty\else % 第2引数が空でなければ、
60
+ [##1]##2 % 第1引数とともに表示する
61
+ \fi
62
+ }}
63
+ \def\render@bookauthor{\@render@who{著}{\book@author}} % 著者
64
+ \def\render@booktranslator{\@render@who{訳}{\book@translator}} % 翻訳者
65
+ \def\render@booksupervisor{\@render@who{監修}{\book@supervisor}} % 監修者
66
+ %% その中でいちばん長い表示幅を調べる
67
+ %% (テキストが複数行だと \settowidth が表示幅をうまく取得できない。
68
+ %% 仕方ないので1行ずつ調べて長さを比較し、いちばん長いものを選ぶ。)
69
+ \setlength{\@tempdimb}{0pt}
70
+ \settowidth{\@tempdimc}{\render@bookauthor}
71
+ \ifdim\@tempdimb<\@tempdimc \setlength{\@tempdimb}{\@tempdimc} \fi
72
+ \settowidth{\@tempdimc}{\render@booktranslator}
73
+ \ifdim\@tempdimb<\@tempdimc \setlength{\@tempdimb}{\@tempdimc} \fi
74
+ \settowidth{\@tempdimc}{\render@booksupervisor}
75
+ \ifdim\@tempdimb<\@tempdimc \setlength{\@tempdimb}{\@tempdimc} \fi
76
+ %% 表示幅のボックスを作ると、そのボックスが左右の中央に位置する
77
+ \ifdim\@tempdimb>0pt
78
+ \vspace{3\baselineskip} % 縦方向の空き
79
+ \parbox[t]{\@tempdimb}{{ % 表示幅のボックスを作る
80
+ \render@bookauthor\par % 著者
81
+ \render@booktranslator\par % 翻訳者
82
+ \render@booksupervisor\par % 監修者
83
+ }}
84
+ \fi
85
+ }
63
86
 
64
87
  %% 日付、バージョン、イベント名
65
88
  \vfill % 縦方向のスペース
@@ -0,0 +1,276 @@
1
+ % -*- coding: utf-8 -*-
2
+
3
+ \usepackage{caption}
4
+ \usepackage{suffix}
5
+ \usepackage[T1]{fontenc}
6
+ \usepackage{textcomp}%T1/TS1
7
+ %\usepackage{lmodern}
8
+ \usepackage{framed}
9
+ \usepackage{wrapfig}
10
+ \definecolor{shadecolor}{gray}{0.9}
11
+ \definecolor{shadecolorb}{gray}{0.1}
12
+ \definecolor{reviewgreen}{rgb}{0,0.4,0}
13
+ \definecolor{reviewblue}{rgb}{0.2,0.2,0.4}
14
+ \definecolor{reviewred}{rgb}{0.7,0,0}
15
+ \definecolor{reviewdarkred}{rgb}{0.3,0,0}
16
+ \usepackage[utf8]{inputenc}
17
+ \usepackage{ascmac}
18
+ \usepackage{float}
19
+ \usepackage{alltt}
20
+ \usepackage{amsmath}
21
+
22
+ %% if you use @<u>{} (underline), use jumoline.sty
23
+ \IfFileExists{jumoline.sty}{
24
+ \usepackage{jumoline}
25
+ }
26
+
27
+ \newenvironment{shadedb}{%
28
+ \def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolorb}}%
29
+ \MakeFramed {\FrameRestore}}%
30
+ {\endMakeFramed}
31
+
32
+ %\usepackage[top=10zw,bottom=12zw,left=10zw,right=10zw]{geometry}
33
+ %\usepackage[top=5zw,bottom=5zw,left=1zw,right=1zw]{geometry}
34
+
35
+ \newcommand{\parasep}{\vspace*{3zh}}
36
+ \setlength{\footskip}{30pt}
37
+
38
+ %% クラスファイルによっては \headfont が定義されてないので、
39
+ %% \newcommand ではなく \def を使う。
40
+ \def\headfont{\gtfamily\sffamily\bfseries}
41
+
42
+
43
+ %% listings
44
+ \ifx\config@highlight@listings\empty\else
45
+ %
46
+ \usepackage{listings}
47
+ \ifx\config@language@ja\empty\else
48
+ \usepackage{jlisting}
49
+ \fi
50
+ %
51
+ \renewcommand{\lstlistingname}{\review@t@list}
52
+ %
53
+ \lstset{%
54
+ breaklines=true,%
55
+ breakautoindent=false,%
56
+ breakindent=0pt,%
57
+ fontadjust=true,%
58
+ backgroundcolor=\color{shadecolor},%
59
+ frame=single,%
60
+ framerule=0pt,%
61
+ basicstyle=\ttfamily\scriptsize,%
62
+ commentstyle=\color{reviewgreen},%
63
+ identifierstyle=\color{reviewblue},%
64
+ stringstyle=\color{reviewred},%
65
+ keywordstyle=\bfseries\color{reviewdarkred},%
66
+ }
67
+ %
68
+ \lstnewenvironment{reviewemlistlst}[1][]{\lstset{#1}}{}
69
+ \lstnewenvironment{reviewemlistnumlst}[1][]{\lstset{numbers=left, #1}}{}
70
+ \lstnewenvironment{reviewlistlst}[1][]{\lstset{#1}}{}
71
+ \lstnewenvironment{reviewlistnumlst}[1][]{\lstset{numbers=left, #1}}{}
72
+ \lstnewenvironment{reviewsourcelst}[1][]{\lstset{#1}}{}
73
+ \lstnewenvironment{reviewsourcenumlst}[1][]{\lstset{numbers=left, #1}}{}
74
+ \lstnewenvironment{reviewcmdlst}[1][]{\lstset{backgroundcolor=\color{white}, frameround=tttt, frame=trbl, #1}}{}
75
+ %
76
+ \fi
77
+
78
+
79
+
80
+ %%
81
+ %% マクロ定義
82
+ %%
83
+
84
+ \newenvironment{reviewimage}{%
85
+ \begin{figure}[H]
86
+ \begin{center}}{%
87
+ \end{center}
88
+ \end{figure}}
89
+
90
+ \newenvironment{reviewdummyimage}{%
91
+ \begin{figure}[H]
92
+ \begin{center}\begin{alltt}}{%
93
+ \end{alltt}\end{center}
94
+ \end{figure}}
95
+
96
+ \newcommand{\reviewimagecaption}[1]{%
97
+ \caption{#1}}
98
+
99
+ \newenvironment{reviewemlist}{%
100
+ \medskip\small\begin{shaded}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
101
+ \end{alltt}\end{shaded}}
102
+
103
+ \newenvironment{reviewlist}{%
104
+ \begin{shaded}\small\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
105
+ \end{alltt}\end{shaded}\par\vspace*{0.5zw}}
106
+
107
+ \newenvironment{reviewsource}{%
108
+ \begin{shaded}\small\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
109
+ \end{alltt}\end{shaded}\par\vspace*{0.5zw}}
110
+
111
+ \newenvironment{reviewcmd}{%
112
+ \color{white}\medskip\small\begin{shadedb}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
113
+ \end{alltt}\end{shadedb}}
114
+
115
+ \newenvironment{reviewbox}{%
116
+ \medskip\small\begin{framed}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
117
+ \end{alltt}\end{framed}}
118
+
119
+ \newenvironment{reviewtable}[1]{%
120
+ \begin{center}\small\setlength{\baselineskip}{1.2zw}
121
+ \begin{tabular}{#1}}{%
122
+ \end{tabular}
123
+ \end{center}}
124
+
125
+ \newenvironment{reviewcolumn}{%
126
+ \begin{framed}
127
+ }{%
128
+ \end{framed}
129
+ \vspace{2zw}}
130
+
131
+ \newcommand{\reviewtablecaption}[1]{%
132
+ \caption{#1}}
133
+
134
+ \WithSuffix\newcommand\reviewtablecaption*[1]{%
135
+ \caption*{#1}}
136
+
137
+ \newcommand{\reviewimgtablecaption}[1]{%
138
+ \caption{#1}\vspace{-3mm}}
139
+
140
+ \newcommand{\reviewbackslash}[0]{%
141
+ \textbackslash{}}
142
+
143
+ \newcommand{\reviewlistcaption}[1]{%
144
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
145
+
146
+ \newcommand{\reviewemlistcaption}[1]{%
147
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
148
+
149
+ \newcommand{\reviewsourcecaption}[1]{%
150
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
151
+
152
+ \newcommand{\reviewcmdcaption}[1]{%
153
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
154
+
155
+ \newcommand{\reviewindepimagecaption}[1]{%
156
+ \begin{center}#1\end{center}}
157
+
158
+ \newcommand{\reviewboxcaption}[1]{%
159
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
160
+
161
+
162
+ \newenvironment{reviewminicolumn}{%
163
+ \vspace{1.5zw}\begin{screen}}{%
164
+ \end{screen}\vspace{2zw}}
165
+
166
+ \newcommand{\reviewkw}[1]{\textbf{\textgt{#1}}}
167
+ \newcommand{\reviewami}[1]{\mask{#1}{A}}
168
+ \newcommand{\reviewem}[1]{\textbf{#1}}
169
+ \newcommand{\reviewstrong}[1]{\textbf{#1}}
170
+ \newcommand{\reviewunderline}{\Underline}
171
+
172
+
173
+ %% @<del> is ignored in LaTeX with default style
174
+ \newcommand{\reviewstrike}[1]{#1}
175
+
176
+ %%%% for ulem.sty:
177
+ %%\renewcommand{\reviewstrike}[1]{\sout{#1}}
178
+ %%
179
+ %%%% for jumoline.sty:
180
+ %%\renewcommand{\reviewstrike}[1]{\Middleline{#1}}
181
+
182
+
183
+ \newcommand{\reviewth}[1]{{\gtfamily\sffamily\bfseries #1}}
184
+ \newcommand{\reviewtitlefont}[0]{\usefont{T1}{phv}{b}{n}\gtfamily}
185
+ \newcommand{\reviewmainfont}[0]{}
186
+ \newcommand{\reviewcolophon}[0]{\clearpage}
187
+ \newcommand{\reviewappendix}[0]{\appendix}
188
+
189
+
190
+ \ifdefined\prepartname
191
+ \renewcommand{\prepartname}{\reviewprepartname}
192
+ \fi
193
+ \ifdefined\postpartname
194
+ \renewcommand{\postpartname}{\reviewpostpartname}
195
+ \fi
196
+ \ifdefined\prechaptername
197
+ \renewcommand{\prechaptername}{\reviewprechaptername}
198
+ \fi
199
+ \ifdefined\postchaptername
200
+ \renewcommand{\postchaptername}{\reviewpostchaptername}
201
+ \fi
202
+ \ifdefined\figurename
203
+ \renewcommand{\figurename}{\reviewfigurename}
204
+ \fi
205
+ \ifdefined\tablename
206
+ \renewcommand{\tablename}{\reviewtablename}
207
+ \fi
208
+ \ifdefined\appendixname
209
+ \renewcommand{\appendixname}{\reviewappendixname}
210
+ \fi
211
+
212
+
213
+ %% maxwidth is the original width if it is less than linewidth
214
+ %% otherwise use linewidth (to make sure the graphics do not exceed the margin)
215
+ \def\maxwidth{%
216
+ \ifdim\Gin@nat@width>\linewidth
217
+ \linewidth
218
+ \else
219
+ \Gin@nat@width
220
+ \fi
221
+ }
222
+
223
+
224
+
225
+ %%
226
+ %% titlepage
227
+ %%
228
+ \newcommand\reviewtitlepage{%
229
+ \thispagestyle{empty}
230
+ \begin{center}%
231
+ \mbox{} \vskip5zw
232
+ \reviewtitlefont%
233
+ {\HUGE\bfseries \@title \par}%
234
+ \ifx\@subtitle\empty\else%
235
+ \vskip 1em%
236
+ {\Large {\rmfamily --- } \@subtitle{} {\rmfamily --- } \par}%
237
+ \fi%
238
+ \vskip 15em%
239
+ {\LARGE
240
+ \lineskip .75em
241
+ \begin{tabular}[t]{c}%
242
+ \@author%
243
+ \end{tabular}\par}%
244
+ \vfill
245
+ {\large \@date\par}%
246
+ \vskip4zw\mbox{}
247
+ \end{center}%
248
+ }
249
+
250
+
251
+ %%
252
+ %% colophon page
253
+ %%
254
+ \newcommand\reviewcolophonpage{%
255
+ \reviewcolophon
256
+ \thispagestyle{empty}
257
+ \vspace*{\fill}
258
+ {\noindent\reviewtitlefont\Large \@title} \\
259
+ \ifx\@subtitle\empty\else
260
+ \medskip
261
+ {\noindent\reviewtitlefont \@subtitle} \\
262
+ \fi
263
+ \rule[8pt]{\textwidth}{1pt} \\
264
+ {\noindent \colophonpubhistory}
265
+ \medskip
266
+ %
267
+ \begin{tabular}{ll}
268
+ \colophonokuduke
269
+ \end{tabular}
270
+ % \\
271
+ %
272
+ \medskip
273
+ \noindent
274
+ \rule[0pt]{\textwidth}{1pt} \\
275
+ \colophonrights
276
+ }