review 2.5.0 → 3.0.0.preview1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +28 -10
  3. data/.travis.yml +11 -2
  4. data/NEWS.ja.md +89 -17
  5. data/NEWS.md +92 -0
  6. data/README.md +1 -1
  7. data/Rakefile +0 -13
  8. data/bin/review-catalog-converter +83 -37
  9. data/bin/review-check +17 -5
  10. data/bin/review-compile +1 -1
  11. data/bin/review-index +6 -0
  12. data/bin/review-init +3 -155
  13. data/bin/review-preproc +0 -5
  14. data/bin/review-validate +21 -7
  15. data/bin/review-vol +13 -5
  16. data/doc/config.yml.sample +12 -7
  17. data/doc/config.yml.sample-simple +1 -1
  18. data/doc/format.ja.md +39 -3
  19. data/doc/format.md +39 -3
  20. data/doc/format_idg.ja.md +0 -4
  21. data/doc/pdfmaker.ja.md +1 -1
  22. data/doc/pdfmaker.md +1 -1
  23. data/doc/sample.css +7 -0
  24. data/lib/epubmaker/content.rb +31 -12
  25. data/lib/epubmaker/epubcommon.rb +10 -3
  26. data/lib/epubmaker/epubv2.rb +11 -3
  27. data/lib/epubmaker/epubv3.rb +11 -3
  28. data/lib/epubmaker/producer.rb +55 -20
  29. data/lib/review/book/base.rb +63 -48
  30. data/lib/review/book/chapter.rb +19 -7
  31. data/lib/review/book/compilable.rb +5 -20
  32. data/lib/review/book/image_finder.rb +10 -3
  33. data/lib/review/book/index.rb +30 -9
  34. data/lib/review/book/part.rb +9 -6
  35. data/lib/review/book.rb +0 -14
  36. data/lib/review/builder.rb +110 -18
  37. data/lib/review/catalog.rb +24 -4
  38. data/lib/review/compiler.rb +3 -1
  39. data/lib/review/configure.rb +43 -9
  40. data/lib/review/epubmaker/reviewheaderlistener.rb +57 -0
  41. data/lib/review/epubmaker.rb +129 -85
  42. data/lib/review/htmlbuilder.rb +76 -58
  43. data/lib/review/htmlutils.rb +20 -13
  44. data/lib/review/i18n.rb +6 -2
  45. data/lib/review/idgxmlbuilder.rb +52 -41
  46. data/lib/review/init.rb +194 -0
  47. data/lib/review/latexbuilder.rb +118 -34
  48. data/lib/review/latexutils.rb +5 -5
  49. data/lib/review/logger.rb +2 -1
  50. data/lib/review/makerhelper.rb +1 -1
  51. data/lib/review/markdownbuilder.rb +66 -6
  52. data/lib/review/md2inaobuilder.rb +2 -2
  53. data/lib/review/pdfmaker.rb +74 -22
  54. data/lib/review/plaintextbuilder.rb +8 -4
  55. data/lib/review/preprocessor.rb +14 -17
  56. data/lib/review/sec_counter.rb +8 -2
  57. data/lib/review/textmaker.rb +2 -2
  58. data/lib/review/textutils.rb +9 -2
  59. data/lib/review/tocparser.rb +7 -4
  60. data/lib/review/tocprinter.rb +3 -1
  61. data/lib/review/version.rb +1 -1
  62. data/lib/review/webmaker.rb +19 -7
  63. data/lib/review/webtocprinter.rb +8 -4
  64. data/review.gemspec +4 -3
  65. data/templates/latex/config.erb +84 -0
  66. data/templates/latex/layout.tex.erb +76 -361
  67. data/templates/latex/review-jlreq/README.md +22 -0
  68. data/templates/latex/review-jlreq/review-base.sty +178 -0
  69. data/templates/latex/review-jlreq/review-custom.sty +1 -0
  70. data/templates/latex/review-jlreq/review-jlreq.cls +141 -0
  71. data/templates/latex/review-jlreq/review-style.sty +149 -0
  72. data/templates/latex/review-jlreq/reviewmacro.sty +8 -0
  73. data/templates/latex/review-jsbook/jumoline.sty +310 -0
  74. data/templates/latex/review-jsbook/plistings.sty +326 -0
  75. data/templates/latex/review-jsbook/review-base.sty +405 -0
  76. data/templates/latex/review-jsbook/review-custom.sty +1 -0
  77. data/templates/latex/review-jsbook/review-style.sty +38 -0
  78. data/templates/latex/review-jsbook/reviewmacro.sty +8 -0
  79. data/templates/latex-compat2/layout.tex.erb +387 -0
  80. data/test/assets/test_template.tex +105 -235
  81. data/test/assets/test_template_backmatter.tex +133 -14
  82. data/test/book_test_helper.rb +1 -1
  83. data/test/run_test.rb +2 -0
  84. data/test/sample-book/src/Rakefile +11 -6
  85. data/test/sample-book/src/config.yml +2 -2
  86. data/test/sample-book/src/sty/reviewmacro.sty +1 -39
  87. data/test/sample-book/src/style.css +6 -0
  88. data/test/syntax-book/config.yml +1 -1
  89. data/test/test_book.rb +13 -16
  90. data/test/test_book_chapter.rb +4 -10
  91. data/test/test_book_part.rb +4 -3
  92. data/test/test_catalog.rb +15 -4
  93. data/test/test_helper.rb +2 -2
  94. data/test/test_htmlbuilder.rb +78 -10
  95. data/test/test_htmlutils.rb +12 -5
  96. data/test/test_idgxmlbuilder.rb +1 -1
  97. data/test/test_latexbuilder.rb +94 -49
  98. data/test/test_latexbuilder_v2.rb +1077 -0
  99. data/test/test_logger.rb +20 -0
  100. data/test/test_markdownbuilder.rb +10 -0
  101. data/test/test_pdfmaker.rb +6 -7
  102. data/test/test_plaintextbuilder.rb +1 -1
  103. data/test/test_review_ext.rb +0 -1
  104. data/test/test_rstbuilder.rb +1 -1
  105. data/test/test_topbuilder.rb +19 -7
  106. data/test/test_webtocprinter.rb +14 -14
  107. data/{test/sample-book/src/vendor → vendor}/jumoline/README +0 -0
  108. data/{test/sample-book/src/vendor → vendor}/jumoline/jumoline.dtx +0 -0
  109. data/{test/sample-book/src/vendor → vendor}/jumoline/jumoline.ins +0 -0
  110. data/{test/sample-book/src/vendor → vendor}/jumoline/lppl.txt +0 -0
  111. data/vendor/plistings/.gitignore +9 -0
  112. data/vendor/plistings/LICENSE +21 -0
  113. data/vendor/plistings/README.md +18 -0
  114. data/vendor/plistings/plistings.sty +326 -0
  115. data/vendor/plistings/test1.tex +174 -0
  116. data/vendor/plistings/test2.tex +54 -0
  117. metadata +48 -19
  118. data/lib/review/unfold.rb +0 -129
  119. data/test/CHAPS +0 -2
  120. data/test/bib.re +0 -13
  121. data/test/test.re +0 -43
@@ -0,0 +1,387 @@
1
+ \documentclass[dvipdfmx,<%= @documentclassoption %>]{<%= @documentclass %>}
2
+ % %% fixes to LaTeX2e
3
+ % \usepackage{fix-cm}[2006/09/13 v1.1m]
4
+ % \usepackage{fixltx2e}[2006/09/13 v1.1m]
5
+
6
+ <%- if @texcompiler == "uplatex" -%>
7
+ \usepackage[deluxe,uplatex]{otf}
8
+ <%- else -%>
9
+ \usepackage[deluxe]{otf}
10
+ <%- end -%>
11
+ \usepackage{caption}
12
+ \usepackage{suffix}
13
+ \usepackage[T1]{fontenc}\usepackage{textcomp}%T1/TS1
14
+ \usepackage{lmodern}
15
+ \usepackage[dvipdfmx]{graphicx}
16
+ \usepackage[dvipdfmx,table]{xcolor}%requires colortbl, array
17
+ \usepackage{framed}
18
+ \usepackage{wrapfig}
19
+ \definecolor{shadecolor}{gray}{0.9}
20
+ \definecolor{shadecolorb}{gray}{0.1}
21
+ \definecolor{reviewgreen}{rgb}{0,0.4,0}
22
+ \definecolor{reviewblue}{rgb}{0.2,0.2,0.4}
23
+ \definecolor{reviewred}{rgb}{0.7,0,0}
24
+ \definecolor{reviewdarkred}{rgb}{0.3,0,0}
25
+ \usepackage[utf8]{inputenc}
26
+ \usepackage{ascmac}
27
+ \usepackage{float}
28
+ \usepackage{alltt}
29
+ \usepackage{amsmath}
30
+
31
+ %% if you use @<u>{} (underline), use jumoline.sty
32
+ \IfFileExists{jumoline.sty}{
33
+ \usepackage{jumoline}
34
+ }
35
+
36
+ \newenvironment{shadedb}{%
37
+ \def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolorb}}%
38
+ \MakeFramed {\FrameRestore}}%
39
+ {\endMakeFramed}
40
+
41
+ <%- unless ["utbook", "tbook"].include?(@documentclass) -%>
42
+ \usepackage[top=10zw,bottom=12zw,left=10zw,right=10zw]{geometry}
43
+ %\usepackage[top=5zw,bottom=5zw,left=1zw,right=1zw]{geometry}
44
+ <%- end -%>
45
+
46
+ \newcommand{\parasep}{\vspace*{3zh}}
47
+ \setlength{\footskip}{30pt}
48
+
49
+ %% Bookmarkの文字化け対策(日本語向け)
50
+ \usepackage[dvipdfmx,bookmarks=true,bookmarksnumbered=true,colorlinks=true,%
51
+ pdftitle={<%= escape_latex(@config.name_of("booktitle")) %>},%
52
+ pdfauthor={<%= escape_latex(@config.names_of("aut").join(I18n.t("names_splitter"))) %>}]{hyperref}
53
+ \usepackage[dvipdfmx]{pxjahyper}
54
+
55
+ <%- if ["utbook", "tbook"].include?(@documentclass) -%>
56
+ \newcommand{\headfont}{\gtfamily\sffamily\bfseries}
57
+ \usepackage{plext}
58
+ <%- end -%>
59
+
60
+ <%- if config["highlight"] && config["highlight"]["latex"] == "listings" -%>
61
+ <%- if config["language"] == "ja" -%>
62
+ \usepackage{listings,jlisting}
63
+ <%- else -%>
64
+ \usepackage{listings}
65
+ <%- end -%>
66
+ \renewcommand{\lstlistingname}{<%= escape_latex(I18n.t("list")) %>}
67
+ \lstset{%
68
+ breaklines=true,%
69
+ breakautoindent=false,%
70
+ breakindent=0pt,%
71
+ fontadjust=true,%
72
+ backgroundcolor=\color{shadecolor},%
73
+ frame=single,%
74
+ framerule=0pt,%
75
+ basicstyle=\ttfamily\scriptsize,%
76
+ commentstyle=\color{reviewgreen},%
77
+ identifierstyle=\color{reviewblue},%
78
+ stringstyle=\color{reviewred},%
79
+ keywordstyle=\bfseries\color{reviewdarkred},%
80
+ }
81
+
82
+ \lstnewenvironment{reviewemlistlst}[1][]{\lstset{#1}}{}
83
+ \lstnewenvironment{reviewemlistnumlst}[1][]{\lstset{numbers=left, #1}}{}
84
+ \lstnewenvironment{reviewlistlst}[1][]{\lstset{#1}}{}
85
+ \lstnewenvironment{reviewlistnumlst}[1][]{\lstset{numbers=left, #1}}{}
86
+ \lstnewenvironment{reviewsourcelst}[1][]{\lstset{#1}}{}
87
+ \lstnewenvironment{reviewsourcenumlst}[1][]{\lstset{numbers=left, #1}}{}
88
+ \lstnewenvironment{reviewcmdlst}[1][]{\lstset{backgroundcolor=\color{white}, frameround=tttt, frame=trbl, #1}}{}
89
+ <%- end -%>
90
+
91
+ \newenvironment{reviewimage}{%
92
+ \begin{figure}[H]
93
+ \begin{center}}{%
94
+ \end{center}
95
+ \end{figure}}
96
+
97
+ \newenvironment{reviewdummyimage}{%
98
+ \begin{figure}[H]
99
+ \begin{center}\begin{alltt}}{%
100
+ \end{alltt}\end{center}
101
+ \end{figure}}
102
+
103
+ \newenvironment{reviewemlist}{%
104
+ \medskip\small\begin{shaded}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
105
+ \end{alltt}\end{shaded}}
106
+
107
+ \newenvironment{reviewlist}{%
108
+ \begin{shaded}\small\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
109
+ \end{alltt}\end{shaded}\par\vspace*{0.5zw}}
110
+
111
+ \newenvironment{reviewsource}{%
112
+ \begin{shaded}\small\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
113
+ \end{alltt}\end{shaded}\par\vspace*{0.5zw}}
114
+
115
+ \newenvironment{reviewcmd}{%
116
+ \color{white}\medskip\small\begin{shadedb}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
117
+ \end{alltt}\end{shadedb}}
118
+
119
+ \newenvironment{reviewbox}{%
120
+ \medskip\small\begin{framed}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
121
+ \end{alltt}\end{framed}}
122
+
123
+ \newenvironment{reviewtable}[1]{%
124
+ \begin{center}\small\setlength{\baselineskip}{1.2zw}
125
+ \begin{tabular}{#1}}{%
126
+ \end{tabular}
127
+ \end{center}}
128
+
129
+ \newenvironment{reviewcolumn}{%
130
+ \begin{framed}
131
+ }{%
132
+ \end{framed}
133
+ \vspace{2zw}}
134
+
135
+ \newcommand{\reviewcolumnhead}[2]{%
136
+ {\noindent\large <%= escape_latex(I18n.t("column_head"))%>: #2}}
137
+
138
+ \newcommand{\reviewtablecaption}[1]{%
139
+ \caption{#1}}
140
+
141
+ \WithSuffix\newcommand\reviewtablecaption*[1]{%
142
+ \caption*{#1}}
143
+
144
+ \newcommand{\reviewimgtablecaption}[1]{%
145
+ \caption{#1}\vspace{-3mm}}
146
+
147
+ \newcommand{\reviewbackslash}[0]{%
148
+ \textbackslash{}}
149
+
150
+ \newcommand{\reviewlistcaption}[1]{%
151
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
152
+
153
+ \newcommand{\reviewemlistcaption}[1]{%
154
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
155
+
156
+ \newcommand{\reviewsourcecaption}[1]{%
157
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
158
+
159
+ \newcommand{\reviewcmdcaption}[1]{%
160
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
161
+
162
+ \newcommand{\reviewindepimagecaption}[1]{%
163
+ \begin{center}#1\end{center}}
164
+
165
+ \newcommand{\reviewboxcaption}[1]{%
166
+ \medskip{\small\noindent #1}\vspace*{-1.3zw}}
167
+
168
+ \newcommand{\reviewimageref}[2]{<%= escape_latex(I18n.t("image"))%> #1}
169
+ \newcommand{\reviewtableref}[2]{<%= escape_latex(I18n.t("table"))%> #1}
170
+ \newcommand{\reviewlistref}[1]{<%= escape_latex(I18n.t("list"))%> #1}
171
+ \newcommand{\reviewbibref}[2]{#1}
172
+ \newcommand{\reviewcolumnref}[2]{<%= escape_latex(I18n.t("columnname"))%> #1}
173
+ \newcommand{\reviewsecref}[2]{#1}
174
+
175
+ \newcommand{\reviewminicolumntitle}[1]{%
176
+ {\large <%= escape_latex(I18n.t("memo_head"))%>: #1}\\}
177
+
178
+ <%- if @config["toctitle"].present? -%>
179
+ \renewcommand{\contentsname}{<%= escape_latex(@config["toctitle"]) %>}
180
+ <%- elsif I18n.t("toctitle") -%>
181
+ \renewcommand{\contentsname}{<%= escape_latex(I18n.t("toctitle")) %>}
182
+ <%- end -%>
183
+
184
+ \newenvironment{reviewminicolumn}{%
185
+ \vspace{1.5zw}\begin{screen}}{%
186
+ \end{screen}\vspace{2zw}}
187
+
188
+ \newcommand{\reviewkw}[1]{\textbf{\textgt{#1}}}
189
+ \newcommand{\reviewami}[1]{\mask{#1}{A}}
190
+ \newcommand{\reviewem}[1]{\textbf{#1}}
191
+ \newcommand{\reviewstrong}[1]{\textbf{#1}}
192
+ \newcommand{\reviewballoon}[1]{←{#1}}
193
+ \newcommand{\reviewunderline}{\Underline}
194
+
195
+ %% @<del> is ignored in LaTeX with default style
196
+ \newcommand{\reviewstrike}[1]{#1}
197
+
198
+ %%%% for ulem.sty:
199
+ %%\renewcommand{\reviewstrike}[1]{\sout{#1}}
200
+ %%
201
+ %%%% for jumoline.sty:
202
+ %%\renewcommand{\reviewstrike}[1]{\Middleline{#1}}
203
+
204
+ \newcommand{\reviewth}[1]{\textgt{#1}}
205
+ \newcommand{\reviewtitlefont}[0]{\usefont{T1}{phv}{b}{n}\gtfamily}
206
+ \newcommand{\reviewmainfont}[0]{}
207
+ \newcommand{\reviewcolophon}[0]{\clearpage}
208
+ \newcommand{\reviewappendix}[0]{\appendix}
209
+
210
+ \newcommand{\reviewprepartname}{<%= escape_latex(@locale_latex["prepartname"]) %>}
211
+ \newcommand{\reviewpostpartname}{<%= escape_latex(@locale_latex["postpartname"]) %>}
212
+ \newcommand{\reviewprechaptername}{<%= escape_latex(@locale_latex["prechaptername"]) %>}
213
+ \newcommand{\reviewpostchaptername}{<%= escape_latex(@locale_latex["postchaptername"]) %>}
214
+ \newcommand{\reviewfigurename}{<%= escape_latex(I18n.t("image")) %>}
215
+ \newcommand{\reviewtablename}{<%= escape_latex(I18n.t("table")) %>}
216
+ \newcommand{\reviewappendixname}{<%= escape_latex(@locale_latex["preappendixname"]) %>}
217
+
218
+ \ifdefined\prepartname
219
+ \renewcommand{\prepartname}{\reviewprepartname}
220
+ \fi
221
+ \ifdefined\postpartname
222
+ \renewcommand{\postpartname}{\reviewpostpartname}
223
+ \fi
224
+ \ifdefined\prechaptername
225
+ \renewcommand{\prechaptername}{\reviewprechaptername}
226
+ \fi
227
+ \ifdefined\postchaptername
228
+ \renewcommand{\postchaptername}{\reviewpostchaptername}
229
+ \fi
230
+ \ifdefined\figurename
231
+ \renewcommand{\figurename}{\reviewfigurename}
232
+ \fi
233
+ \ifdefined\tablename
234
+ \renewcommand{\tablename}{\reviewtablename}
235
+ \fi
236
+ \ifdefined\appendixname
237
+ \renewcommand{\appendixname}{\reviewappendixname}
238
+ \fi
239
+
240
+
241
+ \makeatletter
242
+ %% maxwidth is the original width if it is less than linewidth
243
+ %% otherwise use linewidth (to make sure the graphics do not exceed the margin)
244
+ \def\maxwidth{%
245
+ \ifdim\Gin@nat@width>\linewidth
246
+ \linewidth
247
+ \else
248
+ \Gin@nat@width
249
+ \fi
250
+ }
251
+ \makeatother
252
+
253
+ <%- if @config["texstyle"] -%>
254
+ <%- [@config["texstyle"]].flatten.each do |x| -%>
255
+ \usepackage{<%= x %>}
256
+ <%- end -%>
257
+ <%- end -%>
258
+ <%- if @config["makeindex"] -%>
259
+ \usepackage{makeidx}
260
+ \makeindex
261
+ <%- end -%>
262
+
263
+ \begin{document}
264
+
265
+ \reviewmainfont
266
+
267
+ <%- if @config["titlepage"] -%>
268
+ <%- if @custom_titlepage -%>
269
+ <%= @custom_titlepage %>
270
+ <%- else -%>
271
+ \begin{titlepage}
272
+ <%- if @config["coverimage"] -%>
273
+ \begin{center}
274
+ \includegraphics[<%= @coverimageoption%>]{./<%= @config["imagedir"] %>/<%= @config["coverimage"] %>}
275
+ \end{center}
276
+ \clearpage
277
+ <%- end -%>
278
+ \thispagestyle{empty}
279
+ \begin{center}%
280
+ \mbox{} \vskip5zw
281
+ \reviewtitlefont%
282
+ {\Huge <%= escape_latex(@config.name_of("booktitle")) %> \par}%
283
+ <%- if @config["subtitle"] -%>
284
+ \vskip 1em%
285
+ {\Large <%= escape_latex(@config.name_of("subtitle")) %> \par}%
286
+ <%- end -%>
287
+ \vskip 15em%
288
+ {\huge
289
+ \lineskip .75em
290
+ \begin{tabular}[t]{c}%
291
+ <%= @authors %>
292
+ \end{tabular}\par}%
293
+ \vfill
294
+ {\large <%= escape_latex(@config["date"].to_s) %> <%= escape_latex(I18n.t("edition")) %>\hspace{2zw}<%= escape_latex(I18n.t("published_by", @config.names_of("pbl").join(I18n.t("names_splitter"))))%>\par}%
295
+ \vskip4zw\mbox{}
296
+ \end{center}%
297
+ \end{titlepage}
298
+ <%- end -%>
299
+ <%- end -%>
300
+
301
+ \renewcommand{\chaptermark}[1]{{}}
302
+ \frontmatter
303
+
304
+ %%% originaltitle
305
+ <%- if @config["originaltitlefile"] -%>
306
+ <%= @custom_originaltitlepage %>
307
+ <%- end -%>
308
+
309
+ %%% credit
310
+ <%- if @config["creditfile"] -%>
311
+ <%= @custom_creditpage %>
312
+ <%- end -%>
313
+
314
+ %% preface
315
+ <%= @input_files["PREDEF"] %>
316
+
317
+ <%- if @config["toc"] -%>
318
+ \setcounter{tocdepth}{<%= @config["toclevel"] - 1 %>}
319
+ \tableofcontents
320
+ <%- end -%>
321
+
322
+ \renewcommand{\chaptermark}[1]{\markboth{\prechaptername\thechapter\postchaptername~#1}{}}
323
+ \mainmatter
324
+ <%= @input_files["CHAPS"] %>
325
+ \renewcommand{\chaptermark}[1]{\markboth{\appendixname\thechapter~#1}{}}
326
+ \reviewappendix
327
+ <%= @input_files["APPENDIX"] %>
328
+
329
+ %% backmatter begins
330
+ <%- if @input_files["POSTDEF"] or @config["colophon"] -%>
331
+ \backmatter
332
+ <%- end -%>
333
+
334
+ <%- if @input_files["POSTDEF"] -%>
335
+ <%= @input_files["POSTDEF"] %>
336
+ <%- end -%>
337
+ <%- if @config["pdfmaker"]["makeindex"] -%>
338
+ \printindex
339
+ <%- end -%>
340
+
341
+ %%% profile
342
+ <%- if @config["profile"] -%>
343
+ <%= @custom_profilepage %>
344
+ <%- end -%>
345
+
346
+ %%% advfile
347
+ <%- if @config["advfile"] -%>
348
+ <%= @custom_advfilepage %>
349
+ <%- end -%>
350
+
351
+ %%% colophon
352
+ <%- if @config["colophon"] -%>
353
+ <%- if @custom_colophonpage -%>
354
+ <%= @custom_colophonpage %>
355
+ <%- else -%>
356
+ %% okuduke
357
+ \reviewcolophon
358
+ \thispagestyle{empty}
359
+
360
+ \vspace*{\fill}
361
+
362
+ {\noindent\reviewtitlefont\Large <%= escape_latex(@config.name_of("booktitle")) %>} \\
363
+ <%- if @config["subtitle"] -%>
364
+ {\noindent\reviewtitlefont\large <%= escape_latex(@config.name_of("subtitle")) %>} \\
365
+ <%- end -%>
366
+ \rule[8pt]{\textwidth}{1pt} \\
367
+ {\noindent
368
+ <%= @config["pubhistory"].to_s.gsub(/\n/){"\n\n\\noindent\n"} %>
369
+ }
370
+
371
+ \begin{tabular}{ll}
372
+ <%= @okuduke %>
373
+ \end{tabular}
374
+  \\
375
+ \rule[0pt]{\textwidth}{1pt} \\
376
+ <%- if @config["rights"] -%>
377
+ <%= @config.names_of("rights").map{|s| escape_latex(s)}.join('\\' + '\\') %> \\
378
+ <%- end -%>
379
+ <%- end -%>
380
+ <%- end -%>
381
+
382
+ %%% backcover
383
+ <%- if @config["backcover"] -%>
384
+ <%= @custom_backcoverpage %>
385
+ <%- end -%>
386
+
387
+ \end{document}