review 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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}