review 1.0.0 → 1.1.0

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 (100) hide show
  1. data/.travis.yml +1 -2
  2. data/ChangeLog +65 -0
  3. data/Gemfile +5 -0
  4. data/README.rdoc +6 -1
  5. data/Rakefile +14 -28
  6. data/bin/review-check +9 -21
  7. data/bin/review-compile +45 -12
  8. data/bin/review-epubmaker +477 -220
  9. data/bin/review-epubmaker-ng +5 -14
  10. data/bin/review-index +4 -2
  11. data/bin/review-init +94 -0
  12. data/bin/review-pdfmaker +70 -287
  13. data/bin/review-preproc +5 -2
  14. data/bin/review-vol +4 -11
  15. data/debian/changelog +3 -3
  16. data/debian/copyright +5 -3
  17. data/debian/docs +1 -0
  18. data/doc/format.rdoc +57 -11
  19. data/doc/quickstart.rdoc +4 -4
  20. data/doc/sample.yaml +11 -7
  21. data/lib/epubmaker.rb +1 -1
  22. data/lib/epubmaker/epubv2.rb +26 -27
  23. data/lib/epubmaker/epubv3.rb +13 -13
  24. data/lib/epubmaker/producer.rb +1 -1
  25. data/lib/review.rb +3 -4
  26. data/lib/review/book.rb +17 -581
  27. data/lib/review/book/base.rb +247 -0
  28. data/lib/review/book/chapter.rb +81 -0
  29. data/lib/review/book/compilable.rb +163 -0
  30. data/lib/review/book/index.rb +339 -0
  31. data/lib/review/book/page_metric.rb +38 -0
  32. data/lib/review/book/parameters.rb +97 -0
  33. data/lib/review/book/part.rb +44 -0
  34. data/lib/review/book/volume.rb +65 -0
  35. data/lib/review/builder.rb +34 -40
  36. data/lib/review/compiler.rb +32 -13
  37. data/lib/review/configure.rb +38 -0
  38. data/lib/review/ewbbuilder.rb +23 -21
  39. data/lib/review/extentions.rb +3 -0
  40. data/lib/review/extentions/object.rb +9 -0
  41. data/lib/review/{compat.rb → extentions/string.rb} +11 -0
  42. data/lib/review/htmlbuilder.rb +162 -74
  43. data/lib/review/htmlutils.rb +28 -1
  44. data/lib/review/i18n.yaml +11 -0
  45. data/lib/review/idgxmlbuilder.rb +119 -35
  46. data/lib/review/inaobuilder.rb +355 -0
  47. data/lib/review/latexbuilder.rb +133 -59
  48. data/lib/review/latexutils.rb +15 -6
  49. data/lib/review/makerhelper.rb +59 -0
  50. data/lib/review/markdownbuilder.rb +129 -0
  51. data/lib/review/preprocessor.rb +20 -7
  52. data/lib/review/review.tex.erb +250 -0
  53. data/lib/review/textutils.rb +28 -3
  54. data/lib/review/tocparser.rb +20 -12
  55. data/lib/review/tocprinter.rb +7 -3
  56. data/lib/review/topbuilder.rb +44 -27
  57. data/lib/review/version.rb +3 -0
  58. data/review.gemspec +20 -117
  59. data/test/book_test_helper.rb +35 -0
  60. data/test/sample-book/README.md +5 -0
  61. data/test/sample-book/src/CHAPS +2 -0
  62. data/test/sample-book/src/PREDEF +1 -0
  63. data/test/sample-book/src/Rakefile +26 -0
  64. data/test/sample-book/src/_cover.html +3 -0
  65. data/test/sample-book/src/ch01.re +71 -0
  66. data/test/sample-book/src/ch02.re +3 -0
  67. data/test/sample-book/src/config.yml +55 -0
  68. data/test/sample-book/src/images/ch01-imgsample.jpg +0 -0
  69. data/test/sample-book/src/images/cover.jpg +0 -0
  70. data/test/sample-book/src/main.css +251 -0
  71. data/test/sample-book/src/preface.re +15 -0
  72. data/test/sample-book/src/sty/jumoline.sty +310 -0
  73. data/test/sample-book/src/sty/samplemacro.sty +21 -0
  74. data/test/sample-book/src/vendor/jumoline/README +29 -0
  75. data/test/sample-book/src/vendor/jumoline/jumoline.dtx +2988 -0
  76. data/test/sample-book/src/vendor/jumoline/jumoline.ins +6 -0
  77. data/test/test_book.rb +26 -646
  78. data/test/test_book_chapter.rb +418 -0
  79. data/test/test_book_parameter.rb +42 -0
  80. data/test/test_book_part.rb +53 -0
  81. data/test/test_builder.rb +17 -10
  82. data/test/test_compiler.rb +46 -0
  83. data/test/test_epubmaker.rb +1 -1
  84. data/test/test_epubmaker_cmd.rb +36 -0
  85. data/test/test_helper.rb +17 -0
  86. data/test/test_htmlbuilder.rb +156 -24
  87. data/test/test_htmlutils.rb +4 -0
  88. data/test/test_i18n.rb +6 -2
  89. data/test/test_idgxmlbuilder.rb +33 -11
  90. data/test/test_inaobuilder.rb +247 -0
  91. data/test/test_index.rb +31 -0
  92. data/test/test_latexbuilder.rb +115 -35
  93. data/test/test_makerhelper.rb +50 -0
  94. data/test/test_pdfmaker_cmd.rb +36 -0
  95. data/test/test_preprocessor.rb +7 -7
  96. data/test/test_topbuilder.rb +6 -7
  97. data/test/test_uuid.rb +1 -0
  98. metadata +117 -12
  99. data/lib/review/index.rb +0 -323
  100. data/lib/review/volume.rb +0 -66
@@ -10,11 +10,13 @@
10
10
  # For details of the GNU LGPL, see the file "COPYING".
11
11
  #
12
12
 
13
+ require 'nkf'
14
+
13
15
  module ReVIEW
14
16
 
15
17
  module LaTeXUtils
16
18
 
17
- MATACHARS = {
19
+ METACHARS = {
18
20
  '#' => '\#',
19
21
  "$" => '\textdollar{}',
20
22
  '%' => '\%',
@@ -28,6 +30,7 @@ module ReVIEW
28
30
  '<' => '\textless{}',
29
31
  '>' => '\textgreater{}',
30
32
  "\\" => '\reviewbackslash{}',
33
+ "-" => '{-}',
31
34
 
32
35
  '⓪' => '\UTF{24EA}',
33
36
  '①' => '\UTF{2460}',
@@ -42,22 +45,28 @@ module ReVIEW
42
45
  '⑩' => '\UTF{2469}',
43
46
  }
44
47
 
45
- METACHARS_RE = /[#{Regexp.escape(MATACHARS.keys.join(''))}]/
48
+ kanalist = %w{。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゙ ゚}
49
+ kanalist.each do |char|
50
+ char_jisx0208 = NKF::nkf('-WwX',char)
51
+ METACHARS[char] = "\\aj半角{#{char_jisx0208}}"
52
+ end
53
+
54
+ METACHARS_RE = /[#{Regexp.escape(METACHARS.keys.join(''))}]/u
46
55
 
47
- MATACHARS_INVERT = MATACHARS.invert
56
+ METACHARS_INVERT = METACHARS.invert
48
57
 
49
58
  def escape_latex(str)
50
59
  str.gsub(METACHARS_RE) {|s|
51
- MATACHARS[s] or raise "unknown trans char: #{s}"
60
+ METACHARS[s] or raise "unknown trans char: #{s}"
52
61
  }
53
62
  end
54
63
 
55
64
  alias escape escape_latex
56
65
 
57
66
  def unescape_latex(str)
58
- metachars_invert_re = Regexp.new(MATACHARS_INVERT.keys.collect{|key| Regexp.escape(key)}.join('|'))
67
+ metachars_invert_re = Regexp.new(METACHARS_INVERT.keys.collect{|key| Regexp.escape(key)}.join('|'))
59
68
  str.gsub(metachars_invert_re) {|s|
60
- MATACHARS_INVERT[s] or raise "unknown trans char: #{s}"
69
+ METACHARS_INVERT[s] or raise "unknown trans char: #{s}"
61
70
  }
62
71
  end
63
72
 
@@ -0,0 +1,59 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Copyright (c) 2012 Yuto HAYAMIZU
4
+ #
5
+ # This program is free software.
6
+ # You can distribute or modify this program under the terms of
7
+ # the GNU LGPL, Lesser General Public License version 2.1.
8
+ # For details of the GNU LGPL, see the file "COPYING".
9
+ #
10
+
11
+ module ReVIEW
12
+ class MakerHelper
13
+
14
+ # Copy image files under from_dir to to_dir recursively
15
+ # ==== Args
16
+ # from_dir :: path to the directory which has image files to be copied
17
+ # to_dir :: path to the directory to which the image files are copied
18
+ # options :: used to specify optional operations during copy
19
+ # ==== Returns
20
+ # list of image files
21
+ # ==== Options
22
+ # :convert :: Conversion rule
23
+ # ==== Examples
24
+ #
25
+ # copy_images_to_dir("/path/to/foo", "/path/to/bar", :convert => {:eps => :png})
26
+ #
27
+ # Image files are copied recursively, and each '.eps' file is converted into '.eps.png'
28
+ #
29
+
30
+ def self.copy_images_to_dir(from_dir, to_dir, options = {})
31
+ image_files = []
32
+
33
+ Dir.open(from_dir) do |dir|
34
+ dir.each do |fname|
35
+ next if fname =~ /^\./
36
+ if FileTest.directory?("#{from_dir}/#{fname}")
37
+ image_files += copy_images_to_dir("#{from_dir}/#{fname}", "#{to_dir}/#{fname}")
38
+ else
39
+ Dir.mkdir(to_dir) unless File.exist?(to_dir)
40
+
41
+ is_converted = false
42
+ (options[:convert] || {}).each do |orig_type, conv_type|
43
+ next unless /\.#{orig_type}$/ =~ fname
44
+ is_converted = system("convert #{from_dir}/#{fname} #{to_dir}/#{fname}.#{conv_type}")
45
+ image_files << "#{from_dir}/#{fname}.#{conv_type}"
46
+ end
47
+
48
+ if !is_converted && fname =~ /\.(png|gif|jpg|jpeg|svg|pdf|eps)$/i
49
+ FileUtils.cp "#{from_dir}/#{fname}", to_dir
50
+ image_files << "#{from_dir}/#{fname}"
51
+ end
52
+ end
53
+ end
54
+ end
55
+
56
+ image_files
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,129 @@
1
+ # -*- coding: utf-8 -*-
2
+ # This program is free software.
3
+ # You can distribute or modify this program under the terms of
4
+ # the GNU LGPL, Lesser General Public License version 2.1.
5
+
6
+ require 'review/builder'
7
+ require 'review/textutils'
8
+
9
+ module ReVIEW
10
+
11
+ class MARKDOWNBuilder < Builder
12
+ include TextUtils
13
+
14
+ def extname
15
+ '.md'
16
+ end
17
+
18
+ def puts(str)
19
+ @blank_seen = false
20
+ super
21
+ end
22
+
23
+ def blank
24
+ @output.puts unless @blank_seen
25
+ @blank_seen = true
26
+ end
27
+
28
+ def headline(level, label, caption)
29
+ prefix = "#" * level
30
+ puts "#{prefix} #{caption}"
31
+ end
32
+
33
+ def quote(lines)
34
+ blank
35
+ puts split_paragraph(lines).map{|line| "> #{line}"}.join("\n> \n")
36
+ blank
37
+ end
38
+
39
+ def paragraph(lines)
40
+ puts lines.join
41
+ puts "\n"
42
+ end
43
+
44
+ def ul_begin
45
+ blank
46
+ end
47
+
48
+ def ul_item(lines)
49
+ puts "- #{lines.join}"
50
+ end
51
+
52
+ def ul_end
53
+ blank
54
+ end
55
+
56
+ def ol_begin
57
+ blank
58
+ end
59
+
60
+ def ol_item(lines, num)
61
+ puts "#{num}. #{lines.join}"
62
+ end
63
+
64
+ def ol_end
65
+ blank
66
+ end
67
+
68
+ def emlist(lines, caption = nil)
69
+ blank
70
+ puts "```"
71
+ lines.each do |line|
72
+ puts detab(line)
73
+ end
74
+ puts "```"
75
+ blank
76
+ end
77
+
78
+ def hr
79
+ puts "----"
80
+ end
81
+
82
+ def compile_href(url, label)
83
+ label = url if label.blank?
84
+ "[#{label}](#{url})"
85
+ end
86
+
87
+ def inline_i(str)
88
+ "*#{str.gsub(/\*/, '\*')}*"
89
+ end
90
+
91
+ def inline_b(str)
92
+ "**#{str.gsub(/\*/, '\*')}**"
93
+ end
94
+
95
+ def inline_code(str)
96
+ "`#{str}`"
97
+ end
98
+
99
+ def image_image(id, caption, metric)
100
+ blank
101
+ puts "![#{caption}](/images/#{id}.#{image_ext})"
102
+ blank
103
+ end
104
+
105
+ def image_dummy(id, caption, lines)
106
+ puts lines.join
107
+ end
108
+
109
+ def inline_img(id)
110
+ "#{I18n.t("image")}#{@chapter.image(id).number}"
111
+ rescue KeyError
112
+ error "unknown image: #{id}"
113
+ nofunc_text("[UnknownImage:#{id}]")
114
+ end
115
+
116
+ def pagebreak
117
+ puts "{pagebreak}"
118
+ end
119
+
120
+ def image_ext
121
+ "jpg"
122
+ end
123
+
124
+ def nofunc_text(str)
125
+ str
126
+ end
127
+ end
128
+
129
+ end # module ReVIEW
@@ -88,7 +88,11 @@ module ReVIEW
88
88
 
89
89
  def gets
90
90
  while line = @f.gets
91
- return line unless /\A\#@/ =~ line
91
+ if /\A\#@/ =~ line
92
+ return "\#@\#\n"
93
+ else
94
+ return line
95
+ end
92
96
  end
93
97
  nil
94
98
  end
@@ -192,13 +196,13 @@ module ReVIEW
192
196
  end
193
197
 
194
198
  if @param["outencoding"] =~ /^EUC$/i
195
- NKF.nkf("#{ine} -e", *s)
199
+ NKF.nkf("#{ine} -m0x -e", *s)
196
200
  elsif @param["outencoding"] =~ /^SJIS$/i
197
- NKF.nkf("#{ine} -s", *s)
201
+ NKF.nkf("#{ine} -m0x -s", *s)
198
202
  elsif @param["outencoding"] =~ /^JIS$/i
199
- NKF.nkf("#{ine} -j", *s)
203
+ NKF.nkf("#{ine} -m0x -j", *s)
200
204
  else
201
- NKF.nkf("#{ine} -w", *s)
205
+ NKF.nkf("#{ine} -m0x -w", *s)
202
206
  end
203
207
  end
204
208
 
@@ -412,8 +416,9 @@ module ReVIEW
412
416
  include TextUtils
413
417
  include ErrorUtils
414
418
 
415
- def initialize
419
+ def initialize(param)
416
420
  @repository = {}
421
+ @param = param
417
422
  end
418
423
 
419
424
  def fetch_file(file)
@@ -532,7 +537,15 @@ module ReVIEW
532
537
  end
533
538
 
534
539
  def canonical(line)
535
- detab(line).rstrip + "\n"
540
+ tabwidth = 8
541
+ if @param['tabwidth']
542
+ tabwidth = @param['tabwidth']
543
+ end
544
+ if tabwidth > 0
545
+ detab(line, tabwidth).rstrip + "\n"
546
+ else
547
+ line
548
+ end
536
549
  end
537
550
 
538
551
  def check_type(type)
@@ -0,0 +1,250 @@
1
+ \documentclass[<%= documentclassoption %>]{<%= documentclass %>}
2
+ \usepackage[deluxe]{otf}
3
+ \usepackage[dvipdfmx]{color}
4
+ \usepackage[dvipdfmx]{graphicx}
5
+ \usepackage{framed}
6
+ \usepackage{wrapfig}
7
+ \definecolor{shadecolor}{gray}{0.9}
8
+ \definecolor{shadecolorb}{gray}{0.1}
9
+ \usepackage[utf8]{inputenc}
10
+ \usepackage{ascmac}
11
+ \usepackage{float}
12
+ \usepackage{alltt}
13
+ \usepackage{amsmath}
14
+
15
+ %% if you use @<u>{} (underline), use jumoline.sty
16
+ %%\usepackage{jumoline}
17
+
18
+ \newenvironment{shadedb}{%
19
+ \def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolorb}}%
20
+ \MakeFramed {\FrameRestore}}%
21
+ {\endMakeFramed}
22
+
23
+ \usepackage[top=10zw,bottom=12zw,left=10zw,right=10zw]{geometry}
24
+ %\usepackage[top=5zw,bottom=5zw,left=1zw,right=1zw]{geometry}
25
+
26
+
27
+ \newcommand{\parasep}{\vspace*{3zh}}
28
+ \setlength{\footskip}{30pt}
29
+
30
+ %% Bookmarkの文字化け対策(日本語向け)
31
+ \ifnum 46273=\euc"B4C1 % 46273 == 0xB4C1 == 漢(EUC-JP)
32
+ \usepackage{atbegshi}%
33
+ \AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}}%
34
+ %%\AtBeginDvi{\special{pdf:tounicode EUC-UCS2}}%
35
+ \else
36
+ \usepackage{atbegshi}%
37
+ \AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}}%
38
+ %%\AtBeginDvi{\special{pdf:tounicode 90ms-RKSJ-UCS2}}%
39
+ \fi
40
+
41
+ \usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true,colorlinks=true,%
42
+ pdftitle={<%= values["booktitle"] %>},%
43
+ pdfauthor={<%= values["aut"] %>}]{hyperref}
44
+
45
+ \newenvironment{reviewimage}{%
46
+ \begin{figure}[H]
47
+ \begin{center}}{%
48
+ \end{center}
49
+ \end{figure}}
50
+
51
+ \newenvironment{reviewdummyimage}{%
52
+ \begin{figure}[H]
53
+ \begin{center}\begin{alltt}}{%
54
+ \end{alltt}\end{center}
55
+ \end{figure}}
56
+
57
+ \newenvironment{reviewemlist}{%
58
+ \medskip\small\begin{shaded}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
59
+ \end{alltt}\end{shaded}}
60
+
61
+ \newenvironment{reviewlist}{%
62
+ \begin{shaded}\small\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
63
+ \end{alltt}\end{shaded}\par\vspace*{0.5zw}}
64
+
65
+ \newenvironment{reviewcmd}{%
66
+ \color{white}\medskip\small\begin{shadedb}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
67
+ \end{alltt}\end{shadedb}}
68
+
69
+ \newenvironment{reviewbox}{%
70
+ \medskip\small\begin{framed}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
71
+ \end{alltt}\end{framed}}
72
+
73
+ \newenvironment{reviewtable}[1]{%
74
+ \begin{center}\small\setlength{\baselineskip}{1.2zw}
75
+ \begin{tabular}{#1}}{%
76
+ \end{tabular}
77
+ \end{center}}
78
+
79
+ \newenvironment{reviewcolumn}{%
80
+ \begin{framed}
81
+ }{%
82
+ \end{framed}
83
+ \vspace{2zw}}
84
+
85
+ \newcommand{\reviewcolumnhead}[2]{%
86
+ {\noindent\large ■コラム: #2}}
87
+
88
+ \newcommand{\reviewtablecaption}[1]{%
89
+ \caption{#1}}
90
+
91
+ \newcommand{\reviewbackslash}[0]{%
92
+ \textbackslash{}}
93
+
94
+ \newcommand{\reviewlistcaption}[1]{%
95
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
96
+
97
+ \newcommand{\reviewemlistcaption}[1]{%
98
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
99
+
100
+ \newcommand{\reviewcmdcaption}[1]{%
101
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
102
+
103
+ \newcommand{\reviewindepimagecaption}[1]{%
104
+ \begin{center}#1\end{center}}
105
+
106
+ \newcommand{\reviewboxcaption}[1]{%
107
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
108
+
109
+ \newcommand{\reviewimageref}[2]{%
110
+ 図 #1}
111
+ \newcommand{\reviewtableref}[2]{%
112
+ 表 #1}
113
+ \newcommand{\reviewlistref}[1]{%
114
+ リスト #1}
115
+ \newcommand{\reviewbibref}[2]{%
116
+ #1}
117
+
118
+ \newcommand{\reviewminicolumntitle}[1]{%
119
+ {\large ■メモ:#1}\\}
120
+
121
+ \newenvironment{reviewminicolumn}{%
122
+ \vspace{1.5zw}\begin{screen}}{%
123
+ \end{screen}\vspace{2zw}}
124
+
125
+ \newcommand{\reviewkw}[1]{%
126
+ \textbf{\textgt{#1}}}
127
+
128
+ \newcommand{\reviewami}[1]{%
129
+ \mask{#1}{A}}
130
+
131
+ \newcommand{\reviewem}[1]{%
132
+ \textbf{#1}}
133
+
134
+ \newcommand{\reviewstrong}[1]{%
135
+ \textbf{#1}}
136
+
137
+ %% @<del> is ignored in LaTeX with default style
138
+ \newcommand{\reviewstrike}[1]{#1}
139
+
140
+ %%%% for ulem.sty:
141
+ %%\renewcommand{\reviewstrike}[1]{\sout{#1}}
142
+ %%
143
+ %%%% for jumoline.sty:
144
+ %%\renewcommand{\reviewstrike}[1]{\Middleline{#1}}
145
+
146
+ \newcommand{\reviewth}[1]{%
147
+ \textgt{#1}}
148
+
149
+ \newcommand{\reviewtitlefont}[0]{%
150
+ \usefont{T1}{phv}{b}{n}\gtfamily}
151
+
152
+ \newcommand{\reviewmainfont}[0]{%
153
+ }
154
+
155
+ \newcommand{\reviewcolophon}[0]{%
156
+ \backmatter
157
+ \clearpage}
158
+ \newcommand{\reviewappendix}[0]{%
159
+ \appendix}
160
+
161
+ \makeatletter
162
+ \def\maxwidth{%
163
+ \ifdim\Gin@nat@width>\linewidth
164
+ \linewidth
165
+ \else
166
+ \Gin@nat@width
167
+ \fi
168
+ }
169
+ \makeatother
170
+
171
+ <%= values["usepackage"] %>
172
+
173
+ \usepackage[T1]{fontenc}
174
+
175
+ \begin{document}
176
+
177
+ \reviewmainfont
178
+
179
+ <% if values["titlepage"] %>
180
+ <% if custom_titlepage %>
181
+ <%= custom_titlepage %>
182
+ <% else %>
183
+ \begin{titlepage}
184
+ <% if values["coverimage"] %>
185
+ \begin{center}
186
+ %%%\mbox{}\vskip5zw%
187
+ \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{./images/<%= values["coverimage"] %>}
188
+ \end{center}
189
+ \clearpage
190
+ <% end %>
191
+ \thispagestyle{empty}
192
+ \begin{center}%
193
+ \mbox{} \vskip5zw
194
+ \reviewtitlefont%
195
+ {\Huge <%= values["booktitle"] %> \par}%
196
+ \vskip 15em%
197
+ {\huge
198
+ \lineskip .75em
199
+ \begin{tabular}[t]{c}%
200
+ <%= authors %>
201
+ \end{tabular}\par}%
202
+ \vfill
203
+ {\large <%= values["date"] %> 版\hspace{2zw}<%= values["prt"] %> 発行\par}%
204
+ \vskip4zw\mbox{}
205
+ \end{center}%
206
+ \end{titlepage}
207
+ <% end %>
208
+ <% end %>
209
+
210
+ \renewcommand{\chaptermark}[1]{{}}
211
+ \frontmatter
212
+
213
+ %% preface
214
+ <%= values["pre_str"] %>
215
+
216
+ <% if values["toc"] %>
217
+ \setcounter{tocdepth}{<%= values["toclevel"] %>}
218
+ \tableofcontents
219
+ <% end %>
220
+
221
+ \renewcommand{\chaptermark}[1]{\markboth{\prechaptername\thechapter\postchaptername~#1}{}}
222
+ \mainmatter
223
+ <%= values["chap_str"] %>
224
+ \renewcommand{\chaptermark}[1]{\markboth{\appendixname\thechapter~#1}{}}
225
+ \reviewappendix
226
+ <%= values["post_str"] %>
227
+
228
+ <% if values["colophon"] %>
229
+ %% okuduke
230
+ \reviewcolophon
231
+ \thispagestyle{empty}
232
+
233
+ \vspace*{\fill}
234
+
235
+ {\noindent\reviewtitlefont\Large <%= values["booktitle"] %>} \\
236
+ \rule[8pt]{14cm}{1pt} \\
237
+ {\noindent
238
+ <%= values["pubhistory"].to_s.gsub(/\n/){"\n\n\\noindent"} %>
239
+ }
240
+
241
+ \begin{tabular}{ll}
242
+ <%= okuduke %>
243
+ \end{tabular}
244
+  \\
245
+ \rule[0pt]{14cm}{1pt} \\
246
+ <%= values["rights"] %> \\
247
+ <% end %>
248
+
249
+
250
+ \end{document}