review-retrovert 0.9.7 → 0.9.8

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.
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
+ }