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.
- checksums.yaml +4 -4
- data/.rubocop.yml +28 -10
- data/.travis.yml +11 -2
- data/NEWS.ja.md +89 -17
- data/NEWS.md +92 -0
- data/README.md +1 -1
- data/Rakefile +0 -13
- data/bin/review-catalog-converter +83 -37
- data/bin/review-check +17 -5
- data/bin/review-compile +1 -1
- data/bin/review-index +6 -0
- data/bin/review-init +3 -155
- data/bin/review-preproc +0 -5
- data/bin/review-validate +21 -7
- data/bin/review-vol +13 -5
- data/doc/config.yml.sample +12 -7
- data/doc/config.yml.sample-simple +1 -1
- data/doc/format.ja.md +39 -3
- data/doc/format.md +39 -3
- data/doc/format_idg.ja.md +0 -4
- data/doc/pdfmaker.ja.md +1 -1
- data/doc/pdfmaker.md +1 -1
- data/doc/sample.css +7 -0
- data/lib/epubmaker/content.rb +31 -12
- data/lib/epubmaker/epubcommon.rb +10 -3
- data/lib/epubmaker/epubv2.rb +11 -3
- data/lib/epubmaker/epubv3.rb +11 -3
- data/lib/epubmaker/producer.rb +55 -20
- data/lib/review/book/base.rb +63 -48
- data/lib/review/book/chapter.rb +19 -7
- data/lib/review/book/compilable.rb +5 -20
- data/lib/review/book/image_finder.rb +10 -3
- data/lib/review/book/index.rb +30 -9
- data/lib/review/book/part.rb +9 -6
- data/lib/review/book.rb +0 -14
- data/lib/review/builder.rb +110 -18
- data/lib/review/catalog.rb +24 -4
- data/lib/review/compiler.rb +3 -1
- data/lib/review/configure.rb +43 -9
- data/lib/review/epubmaker/reviewheaderlistener.rb +57 -0
- data/lib/review/epubmaker.rb +129 -85
- data/lib/review/htmlbuilder.rb +76 -58
- data/lib/review/htmlutils.rb +20 -13
- data/lib/review/i18n.rb +6 -2
- data/lib/review/idgxmlbuilder.rb +52 -41
- data/lib/review/init.rb +194 -0
- data/lib/review/latexbuilder.rb +118 -34
- data/lib/review/latexutils.rb +5 -5
- data/lib/review/logger.rb +2 -1
- data/lib/review/makerhelper.rb +1 -1
- data/lib/review/markdownbuilder.rb +66 -6
- data/lib/review/md2inaobuilder.rb +2 -2
- data/lib/review/pdfmaker.rb +74 -22
- data/lib/review/plaintextbuilder.rb +8 -4
- data/lib/review/preprocessor.rb +14 -17
- data/lib/review/sec_counter.rb +8 -2
- data/lib/review/textmaker.rb +2 -2
- data/lib/review/textutils.rb +9 -2
- data/lib/review/tocparser.rb +7 -4
- data/lib/review/tocprinter.rb +3 -1
- data/lib/review/version.rb +1 -1
- data/lib/review/webmaker.rb +19 -7
- data/lib/review/webtocprinter.rb +8 -4
- data/review.gemspec +4 -3
- data/templates/latex/config.erb +84 -0
- data/templates/latex/layout.tex.erb +76 -361
- data/templates/latex/review-jlreq/README.md +22 -0
- data/templates/latex/review-jlreq/review-base.sty +178 -0
- data/templates/latex/review-jlreq/review-custom.sty +1 -0
- data/templates/latex/review-jlreq/review-jlreq.cls +141 -0
- data/templates/latex/review-jlreq/review-style.sty +149 -0
- data/templates/latex/review-jlreq/reviewmacro.sty +8 -0
- data/templates/latex/review-jsbook/jumoline.sty +310 -0
- data/templates/latex/review-jsbook/plistings.sty +326 -0
- data/templates/latex/review-jsbook/review-base.sty +405 -0
- data/templates/latex/review-jsbook/review-custom.sty +1 -0
- data/templates/latex/review-jsbook/review-style.sty +38 -0
- data/templates/latex/review-jsbook/reviewmacro.sty +8 -0
- data/templates/latex-compat2/layout.tex.erb +387 -0
- data/test/assets/test_template.tex +105 -235
- data/test/assets/test_template_backmatter.tex +133 -14
- data/test/book_test_helper.rb +1 -1
- data/test/run_test.rb +2 -0
- data/test/sample-book/src/Rakefile +11 -6
- data/test/sample-book/src/config.yml +2 -2
- data/test/sample-book/src/sty/reviewmacro.sty +1 -39
- data/test/sample-book/src/style.css +6 -0
- data/test/syntax-book/config.yml +1 -1
- data/test/test_book.rb +13 -16
- data/test/test_book_chapter.rb +4 -10
- data/test/test_book_part.rb +4 -3
- data/test/test_catalog.rb +15 -4
- data/test/test_helper.rb +2 -2
- data/test/test_htmlbuilder.rb +78 -10
- data/test/test_htmlutils.rb +12 -5
- data/test/test_idgxmlbuilder.rb +1 -1
- data/test/test_latexbuilder.rb +94 -49
- data/test/test_latexbuilder_v2.rb +1077 -0
- data/test/test_logger.rb +20 -0
- data/test/test_markdownbuilder.rb +10 -0
- data/test/test_pdfmaker.rb +6 -7
- data/test/test_plaintextbuilder.rb +1 -1
- data/test/test_review_ext.rb +0 -1
- data/test/test_rstbuilder.rb +1 -1
- data/test/test_topbuilder.rb +19 -7
- data/test/test_webtocprinter.rb +14 -14
- data/{test/sample-book/src/vendor → vendor}/jumoline/README +0 -0
- data/{test/sample-book/src/vendor → vendor}/jumoline/jumoline.dtx +0 -0
- data/{test/sample-book/src/vendor → vendor}/jumoline/jumoline.ins +0 -0
- data/{test/sample-book/src/vendor → vendor}/jumoline/lppl.txt +0 -0
- data/vendor/plistings/.gitignore +9 -0
- data/vendor/plistings/LICENSE +21 -0
- data/vendor/plistings/README.md +18 -0
- data/vendor/plistings/plistings.sty +326 -0
- data/vendor/plistings/test1.tex +174 -0
- data/vendor/plistings/test2.tex +54 -0
- metadata +48 -19
- data/lib/review/unfold.rb +0 -129
- data/test/CHAPS +0 -2
- data/test/bib.re +0 -13
- data/test/test.re +0 -43
data/test/test_logger.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'review/logger'
|
3
|
+
|
4
|
+
class LoggerTest < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_logging
|
9
|
+
old_stderr = STDERR.dup
|
10
|
+
IO.pipe do |r, w|
|
11
|
+
STDERR.reopen(w)
|
12
|
+
@logger = ReVIEW::Logger.new
|
13
|
+
@logger.warn('test')
|
14
|
+
msg = r.readline
|
15
|
+
STDERR.reopen(old_stderr)
|
16
|
+
|
17
|
+
assert_equal "WARN: test\n", msg
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -26,6 +26,16 @@ class MARKDOWNBuilderTest < Test::Unit::TestCase
|
|
26
26
|
assert_equal %Q(\n> foobar\n> \n> buz\n\n), actual
|
27
27
|
end
|
28
28
|
|
29
|
+
def test_memo
|
30
|
+
actual = compile_block("//memo[this is @<b>{test}<&>_]{\ntest1\n\ntest@<i>{2}\n//}\n")
|
31
|
+
assert_equal %Q(<div class="memo">\n<p class="caption">this is **test**<&>_</p>\ntest1\ntest*2*\n</div>\n), actual
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_noindent
|
35
|
+
actual = compile_block("//noindent\nfoo\nbar\n\nfoo2\nbar2\n")
|
36
|
+
assert_equal %Q(<p class="noindent">foobar</p>\n\nfoo2bar2\n\n), actual
|
37
|
+
end
|
38
|
+
|
29
39
|
def test_inline_em
|
30
40
|
assert_equal 'test*foo*abc', compile_inline('test@<em>{foo}abc')
|
31
41
|
end
|
data/test/test_pdfmaker.rb
CHANGED
@@ -10,7 +10,7 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
10
10
|
@config.merge!(
|
11
11
|
'bookname' => 'sample',
|
12
12
|
'title' => 'Sample Book',
|
13
|
-
'
|
13
|
+
'review_version' => 3,
|
14
14
|
'urnid' => 'http://example.jp/',
|
15
15
|
'date' => '2011-01-01',
|
16
16
|
'language' => 'ja',
|
@@ -141,6 +141,7 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
141
141
|
def test_template_content
|
142
142
|
Dir.mktmpdir do
|
143
143
|
@maker.basedir = Dir.pwd
|
144
|
+
@maker.erb_config
|
144
145
|
tmpl = @maker.template_content
|
145
146
|
expect = File.read(File.join(assets_dir, 'test_template.tex'))
|
146
147
|
assert_equal(expect, tmpl)
|
@@ -149,9 +150,9 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
149
150
|
|
150
151
|
def test_gettemplate_with_backmatter
|
151
152
|
@config.merge!(
|
152
|
-
'backcover' => 'backcover.
|
153
|
-
'profile' => 'profile.
|
154
|
-
'advfile' => 'advfile.
|
153
|
+
'backcover' => 'backcover.tex',
|
154
|
+
'profile' => 'profile.tex',
|
155
|
+
'advfile' => 'advfile.tex'
|
155
156
|
)
|
156
157
|
Dir.mktmpdir do |dir|
|
157
158
|
Dir.chdir(dir) do
|
@@ -161,12 +162,10 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
161
162
|
File.open(File.join(dir, 'advfile.tex'), 'w') { |f| f.write(advfile) }
|
162
163
|
backcover = "\\clearpage\n\\thispagestyle{empty}\\AddToShipoutPictureBG{%\n\\AtPageLowerLeft{\\includegraphics[width=\\paperwidth,height=\\paperheight]{images/backcover.png}}\n}\n\\null"
|
163
164
|
File.open(File.join(dir, 'backcover.tex'), 'w') { |f| f.write(backcover) }
|
164
|
-
|
165
165
|
expect = File.read(File.join(assets_dir, 'test_template_backmatter.tex'))
|
166
|
-
|
167
166
|
@maker.basedir = Dir.pwd
|
167
|
+
@maker.erb_config
|
168
168
|
tmpl = @maker.template_content
|
169
|
-
tmpl.gsub!(/\A.*%% backmatter begins\n/m, '')
|
170
169
|
assert_equal(expect, tmpl)
|
171
170
|
end
|
172
171
|
end
|
@@ -12,7 +12,7 @@ class PLAINTEXTBuidlerTest < Test::Unit::TestCase
|
|
12
12
|
@config = ReVIEW::Configure.values
|
13
13
|
@config['secnolevel'] = 2
|
14
14
|
@config['language'] = 'ja'
|
15
|
-
@book = Book::Base.new
|
15
|
+
@book = Book::Base.new
|
16
16
|
@book.config = @config
|
17
17
|
@compiler = ReVIEW::Compiler.new(@builder)
|
18
18
|
@chapter = Book::Chapter.new(@book, 1, '-', nil, StringIO.new)
|
data/test/test_review_ext.rb
CHANGED
data/test/test_rstbuilder.rb
CHANGED
@@ -12,7 +12,7 @@ class RSTBuidlerTest < Test::Unit::TestCase
|
|
12
12
|
@config = ReVIEW::Configure.values
|
13
13
|
@config['secnolevel'] = 2
|
14
14
|
@config['language'] = 'ja'
|
15
|
-
@book = Book::Base.new
|
15
|
+
@book = Book::Base.new
|
16
16
|
@book.config = @config
|
17
17
|
@compiler = ReVIEW::Compiler.new(@builder)
|
18
18
|
@chapter = Book::Chapter.new(@book, 1, '-', nil, StringIO.new)
|
data/test/test_topbuilder.rb
CHANGED
@@ -12,19 +12,13 @@ class TOPBuidlerTest < Test::Unit::TestCase
|
|
12
12
|
@config = ReVIEW::Configure.values
|
13
13
|
@config['secnolevel'] = 2
|
14
14
|
@config['language'] = 'ja'
|
15
|
-
@book = Book::Base.new
|
15
|
+
@book = Book::Base.new
|
16
16
|
@book.config = @config
|
17
17
|
@compiler = ReVIEW::Compiler.new(@builder)
|
18
18
|
@chapter = Book::Chapter.new(@book, 1, '-', nil, StringIO.new)
|
19
19
|
location = Location.new(nil, nil)
|
20
20
|
@builder.bind(@compiler, @chapter, location)
|
21
21
|
|
22
|
-
@builder.instance_eval do
|
23
|
-
# to ignore lineno in original method
|
24
|
-
def warn(msg)
|
25
|
-
puts msg
|
26
|
-
end
|
27
|
-
end
|
28
22
|
I18n.setup(@config['language'])
|
29
23
|
end
|
30
24
|
|
@@ -297,6 +291,24 @@ class TOPBuidlerTest < Test::Unit::TestCase
|
|
297
291
|
assert_equal %Q(◆→開始:TeX式←◆\n\\sin\n1^{2}\n◆→終了:TeX式←◆\n\n), actual
|
298
292
|
end
|
299
293
|
|
294
|
+
def test_inline_w
|
295
|
+
Dir.mktmpdir do |dir|
|
296
|
+
File.open(File.join(dir, 'words.csv'), 'w') do |f|
|
297
|
+
f.write <<EOB
|
298
|
+
"F","foo"
|
299
|
+
"B","bar""\\<>_@<b>{BAZ}"
|
300
|
+
EOB
|
301
|
+
end
|
302
|
+
@book.config['words_file'] = File.join(dir, 'words.csv')
|
303
|
+
|
304
|
+
io = StringIO.new
|
305
|
+
@builder.instance_eval{ @logger = ReVIEW::Logger.new(io) }
|
306
|
+
actual = compile_block('@<w>{F} @<w>{B} @<wb>{B} @<w>{N}')
|
307
|
+
assert_equal %Q(foo bar"\\<>_@<b>{BAZ} ★bar"\\<>_@<b>{BAZ}☆ [missing word: N]\n), actual
|
308
|
+
assert_match(/WARN -- : :1: word not bound: N/, io.string)
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
300
312
|
def test_inline_unknown
|
301
313
|
e = assert_raises(ReVIEW::ApplicationError) { compile_block "@<img>{n}\n" }
|
302
314
|
assert_equal ':1: error: unknown image: n', e.message
|
data/test/test_webtocprinter.rb
CHANGED
@@ -35,8 +35,8 @@ EOB
|
|
35
35
|
expect = <<-EOB
|
36
36
|
<ul class="book-toc">
|
37
37
|
<li><a href="index.html">TOP</a></li>
|
38
|
-
<li><a href="
|
39
|
-
<li><a href="
|
38
|
+
<li><a href="ch1.html">1 ch. 1</a></li>
|
39
|
+
<li><a href="ch2.html">2 ch. 2</a></li>
|
40
40
|
</ul>
|
41
41
|
EOB
|
42
42
|
assert_equal expect, str
|
@@ -60,12 +60,12 @@ EOB
|
|
60
60
|
<li><a href="index.html">TOP</a></li>
|
61
61
|
<li>I part1
|
62
62
|
<ul>
|
63
|
-
<li><a href="
|
63
|
+
<li><a href="ch1.html">1 ch. 1</a></li>
|
64
64
|
</ul>
|
65
65
|
</li>
|
66
66
|
<li>II part2
|
67
67
|
<ul>
|
68
|
-
<li><a href="
|
68
|
+
<li><a href="ch2.html">2 ch. 2</a></li>
|
69
69
|
</ul>
|
70
70
|
</li>
|
71
71
|
</ul>
|
@@ -93,12 +93,12 @@ EOB
|
|
93
93
|
<li><a href="index.html">TOP</a></li>
|
94
94
|
<li><a href="p1.html">I This is PART1</a>
|
95
95
|
<ul>
|
96
|
-
<li><a href="
|
96
|
+
<li><a href="ch1.html">1 ch. 1</a></li>
|
97
97
|
</ul>
|
98
98
|
</li>
|
99
99
|
<li><a href="p2.html">II This is PART2</a>
|
100
100
|
<ul>
|
101
|
-
<li><a href="
|
101
|
+
<li><a href="ch2.html">2 ch. 2</a></li>
|
102
102
|
</ul>
|
103
103
|
</li>
|
104
104
|
</ul>
|
@@ -139,22 +139,22 @@ EOB
|
|
139
139
|
expect = <<-EOB
|
140
140
|
<ul class="book-toc">
|
141
141
|
<li><a href="index.html">TOP</a></li>
|
142
|
-
<li><a href="
|
143
|
-
<li><a href="
|
142
|
+
<li><a href="pre1.html">PRE1</a></li>
|
143
|
+
<li><a href="pre2.html">PRE2</a></li>
|
144
144
|
<li><a href="part1.html">I PART1</a>
|
145
145
|
<ul>
|
146
|
-
<li><a href="
|
146
|
+
<li><a href="ch1.html">1 ch. 1</a></li>
|
147
147
|
</ul>
|
148
148
|
</li>
|
149
149
|
<li><a href="part2.html">II PART2</a>
|
150
150
|
<ul>
|
151
|
-
<li><a href="
|
151
|
+
<li><a href="ch2.html">2 ch. 2</a></li>
|
152
152
|
</ul>
|
153
153
|
</li>
|
154
|
-
<li><a href="
|
155
|
-
<li><a href="
|
156
|
-
<li><a href="
|
157
|
-
<li><a href="
|
154
|
+
<li><a href="app1.html">APP1</a></li>
|
155
|
+
<li><a href="app2.html">APP2</a></li>
|
156
|
+
<li><a href="post1.html">POST1</a></li>
|
157
|
+
<li><a href="post2.html">POST2</a></li>
|
158
158
|
</ul>
|
159
159
|
EOB
|
160
160
|
assert_equal expect, str
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2015--2017 Hironori Kitagawa
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#`plistings` パッケージ
|
2
|
+
|
3
|
+
`plistings` パッケージは,`listings` パッケージを pLaTeX 上で用いる際の日本語対応処理を
|
4
|
+
強化するためのパッケージである.
|
5
|
+
[LuaTeX-ja](https://osdn.jp/projects/luatex-ja/wiki/FrontPage) 中の `lltjp-listings.sty` を
|
6
|
+
ベースとしている.
|
7
|
+
|
8
|
+
ライセンスは今まで明記していなかったが,MIT License とした (2010-10-11).
|
9
|
+
|
10
|
+
## 注意点(と,現在の制約)
|
11
|
+
|
12
|
+
* 実行には e-TeX 拡張が必要である(`\scantokens`, `\detokenize` 利用のため).
|
13
|
+
最近の TeX Live, W32TeX では `platex` と打つと標準で e-TeX 拡張が有効になっている.
|
14
|
+
* 内部で文字コード 0 の文字 (`^^@`, NUL) を日本語処理命令として用いている.
|
15
|
+
そのため,NUL を含んだソースリストを出力することは出来なくなる.
|
16
|
+
* 「LaTeX へのエスケープ」内では,和文文字を含んだ制御綴が試験的にできるようになったが,
|
17
|
+
エスケープ内に書かれた NUL は自動的に取り除かれる.
|
18
|
+
|
@@ -0,0 +1,326 @@
|
|
1
|
+
%
|
2
|
+
% plistings.sty
|
3
|
+
%
|
4
|
+
% lltjp-listings.sty ベース,コード未整理
|
5
|
+
|
6
|
+
\NeedsTeXFormat{LaTeX2e}
|
7
|
+
\ProvidesPackage{plistings}[2015/12/07 v0.10 Japanese support of listings package]
|
8
|
+
|
9
|
+
%%%%%%%% Package options
|
10
|
+
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{listings}}
|
11
|
+
\ProcessOptions\relax
|
12
|
+
\RequirePackage{listings,etoolbox}
|
13
|
+
|
14
|
+
%%%%%%%% Japanese support
|
15
|
+
%% whether letter-space in a fixed mode box is doubled or not
|
16
|
+
\newif\if@ltj@lst@double
|
17
|
+
\lst@Key{doubleletterspace}f[t]{\lstKV@SetIf{#1}\if@ltj@lst@double}
|
18
|
+
|
19
|
+
% override \lst@FillFixed@
|
20
|
+
\def\lst@FillFixed@#1{%
|
21
|
+
\ifx\@empty#1\else\ltj@lst@hss#1\expandafter\lst@FillFixed@\fi}
|
22
|
+
\def\ltj@lst@hss@double{\lst@hss\lst@hss}
|
23
|
+
|
24
|
+
% 最下層の処理
|
25
|
+
\newif\if@ltj@lst@kanji
|
26
|
+
\lst@AddToHook{InitVars}{\@ltj@lst@kanjifalse}
|
27
|
+
|
28
|
+
\def\lst@AppendLetter{%
|
29
|
+
\ltj@lst@setletterflag\lst@Append}
|
30
|
+
\def\lst@AppendOther{%
|
31
|
+
\lst@ifletter\lst@Output\lst@letterfalse\fi\@ltj@lst@kanjifalse
|
32
|
+
\futurelet\lst@lastother\lst@Append}
|
33
|
+
|
34
|
+
\def\ltj@lst@setletterflag{%
|
35
|
+
\lst@ifletter
|
36
|
+
\if@ltj@lst@kanji\lst@Output\@ltj@lst@kanjifalse\fi
|
37
|
+
\else
|
38
|
+
\lst@lettertrue\if@ltj@lst@kanji\@ltj@lst@kanjifalse\else\lst@OutputOther\fi
|
39
|
+
\fi}
|
40
|
+
|
41
|
+
\def\ltj@lst@setkanjiflag{%
|
42
|
+
\lst@ifletter
|
43
|
+
\lst@Output
|
44
|
+
\else
|
45
|
+
\if@ltj@lst@kanji\else\lst@OutputOther\fi\lst@lettertrue
|
46
|
+
\fi\@ltj@lst@kanjitrue}
|
47
|
+
|
48
|
+
\def\ltj@lst@setopenflag{%
|
49
|
+
\lst@ifletter
|
50
|
+
\lst@letterfalse\lst@Output
|
51
|
+
\else
|
52
|
+
\if@ltj@lst@kanji\else\lst@OutputOther\fi
|
53
|
+
\fi\@ltj@lst@kanjitrue}
|
54
|
+
|
55
|
+
\def\ltj@lst@setcloseflag{%
|
56
|
+
\lst@ifletter\else\lst@lettertrue\fi\@ltj@lst@kanjitrue}
|
57
|
+
|
58
|
+
%%%% 和文文字の出力命令.
|
59
|
+
%%%% 和文文字の前にこれが前置されることになる.
|
60
|
+
\def\ltj@lst@ProcessJALetter#1{%
|
61
|
+
\lst@whitespacefalse
|
62
|
+
\ifnum`#1>255
|
63
|
+
\ifnum\postbreakpenalty`#1>0
|
64
|
+
\ltj@lst@setopenflag % 開き括弧類
|
65
|
+
\else
|
66
|
+
\ifnum\prebreakpenalty`#1>0
|
67
|
+
\ltj@lst@setcloseflag % 閉じ括弧類,句読点
|
68
|
+
\else
|
69
|
+
\ltj@lst@setkanjiflag % 通常の和文文字
|
70
|
+
\fi\fi
|
71
|
+
\advance\lst@length\@ne % 和文文字は通常の2倍の幅
|
72
|
+
\else
|
73
|
+
\ltj@lst@setletterflag
|
74
|
+
\fi
|
75
|
+
\lst@Append#1}
|
76
|
+
|
77
|
+
|
78
|
+
%%%% \lst@InsideConvert の処理内容変更
|
79
|
+
%%%% active 文字化に加え,^^@ を和文文字の前に前置
|
80
|
+
\def\ltj@lst@MakeActive#1{%
|
81
|
+
\let\lst@temp\@empty \ltj@lst@MakeActive@#1\relax}
|
82
|
+
\begingroup
|
83
|
+
\catcode`\^^A=\active
|
84
|
+
\catcode`\^^@=\active
|
85
|
+
\lowercase{%
|
86
|
+
\gdef\ltj@lst@MakeActive@#1{\let\lst@next\relax%
|
87
|
+
\ifx#1\relax
|
88
|
+
\else\let\lst@next\ltj@lst@MakeActive@
|
89
|
+
\ifnum`#1>255
|
90
|
+
\lst@lAddTo\lst@temp{^^@#1}%
|
91
|
+
\else
|
92
|
+
\lccode`\^^A=`#1
|
93
|
+
\lowercase{\lst@lAddTo\lst@temp{^^A}}%
|
94
|
+
\fi\fi\lst@next}}
|
95
|
+
\endgroup
|
96
|
+
\begingroup \lccode`\~=`\ \relax \lowercase{%
|
97
|
+
\gdef\lst@InsideConvert@#1 #2{%
|
98
|
+
\ltj@lst@MakeActive{#1}%
|
99
|
+
\ifx\@empty#2%
|
100
|
+
\lst@lExtend\lst@arg{\lst@temp}%
|
101
|
+
\else
|
102
|
+
\lst@lExtend\lst@arg{\lst@temp~}%
|
103
|
+
\expandafter\lst@InsideConvert@
|
104
|
+
\fi #2}
|
105
|
+
}\endgroup
|
106
|
+
|
107
|
+
|
108
|
+
%%%%%%%% \lstinline の再定義.
|
109
|
+
%%%% 引数を全部読み込み,\lst@InsideConvert で変換
|
110
|
+
\renewcommand\lstinline[1][]{%
|
111
|
+
\leavevmode\bgroup % \hbox\bgroup --> \bgroup
|
112
|
+
\def\lst@boxpos{b}%
|
113
|
+
\lsthk@PreSet\lstset{flexiblecolumns,#1}%
|
114
|
+
\lsthk@TextStyle
|
115
|
+
\@ifnextchar\bgroup \ltj@lst@InlineG \ltj@lstinline@}
|
116
|
+
\def\ltj@lstinline@#1{%
|
117
|
+
\edef\ltj@lst@temp{\the\catcode`#1}\lst@Init\relax\catcode`#1\ltj@lst@temp
|
118
|
+
\lst@Def{13}{\lst@DeInit\egroup \global\let\lst@inlinechars\@empty
|
119
|
+
\PackageError{Listings}{lstinline ended by EOL}\@ehc}%
|
120
|
+
\lst@InlineJ#1}
|
121
|
+
\def\ltj@lst@InlineG{%
|
122
|
+
\lst@Init\relax\edef\ltj@lst@temp{\the\catcode`\}}%
|
123
|
+
\catcode`\}=2 \catcode`\ =12\relax
|
124
|
+
\lst@Def{13}{\lst@DeInit\egroup \global\let\lst@inlinechars\@empty
|
125
|
+
\PackageError{Listings}{lstinline ended by EOL}\@ehc}%
|
126
|
+
\let\lst@arg\@empty\afterassignment\ltj@lst@InlineG@@\@temptokena}
|
127
|
+
\def\ltj@lst@InlineG@@{%
|
128
|
+
\catcode`\}=\ltj@lst@temp
|
129
|
+
\expandafter\expandafter\expandafter\lst@InsideConvert%
|
130
|
+
\expandafter{\the\@temptokena}\lst@arg\lst@DeInit\egroup}
|
131
|
+
|
132
|
+
%%%%%%%% \lstenv@process の再定義
|
133
|
+
%%%% 基本的にはインライン時と同様に全トークンを読み込み→\lst@InsideConvert で変換
|
134
|
+
%%%% その後,変換した中身は \scantokens で読み込み直される
|
135
|
+
\begingroup \lccode`\~=`\^^M\lowercase{%
|
136
|
+
\gdef\lstenv@Process#1{%
|
137
|
+
\ifx~#1%
|
138
|
+
\lstenv@DroppedWarning \let\lst@next\ltj@lstenv@ProcessM
|
139
|
+
\else\ifx^^J#1%
|
140
|
+
\lstenv@DroppedWarning \let\lst@next\lstenv@ProcessJ
|
141
|
+
\else
|
142
|
+
\let\lst@dropped#1\let\lst@next\lstenv@Process
|
143
|
+
\fi \fi
|
144
|
+
\lst@next}
|
145
|
+
}\endgroup
|
146
|
+
\begingroup\lccode`\[=`\{\lccode`\]=`\}\lccode`|=`\\\lowercase{%
|
147
|
+
\gdef\ltj@lstenv@ProcessM{%
|
148
|
+
\let\lst@arg\@empty
|
149
|
+
\edef\lst@temp{|end[\lstenv@name]}%
|
150
|
+
\expandafter\expandafter\expandafter\lst@InsideConvert%
|
151
|
+
\expandafter{\lst@temp}%
|
152
|
+
\@temptokena{%
|
153
|
+
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
|
154
|
+
\lst@SkipToFirst\expandafter\expandafter\expandafter\scantokens\expandafter{\lst@arg}%
|
155
|
+
}
|
156
|
+
\expandafter\expandafter\expandafter\toks@\expandafter{\lst@arg}
|
157
|
+
\expandafter\edef\expandafter\lst@temp\expandafter##\expandafter1\lst@arg
|
158
|
+
{%
|
159
|
+
\noexpand\let\noexpand\lst@arg\noexpand\@empty%
|
160
|
+
\noexpand\lst@InsideConvert{\noexpand##1}
|
161
|
+
\the\@temptokena\the\toks@
|
162
|
+
}%
|
163
|
+
\lst@temp}
|
164
|
+
}\endgroup
|
165
|
+
|
166
|
+
\def\lst@BeginDropInput#1{%
|
167
|
+
\lst@EnterMode{#1}%
|
168
|
+
{\lst@modetrue
|
169
|
+
\let\lst@OutputBox\@gobble
|
170
|
+
\let\lst@ifdropinput\iftrue
|
171
|
+
\let\lst@ProcessLetter\@gobble
|
172
|
+
\let\lst@ProcessDigit\@gobble
|
173
|
+
\let\lst@ProcessOther\@gobble
|
174
|
+
\let\lst@ProcessSpace\@empty
|
175
|
+
\let\lst@ProcessTabulator\@empty
|
176
|
+
\let\lst@ProcessFormFeed\@empty
|
177
|
+
\let\ltj@lst@ProcessJALetter\@gobble % added
|
178
|
+
}}
|
179
|
+
|
180
|
+
|
181
|
+
%%%% ^^@ を active 文字化 (\ltj@lst@ProcessJALetter)
|
182
|
+
\begingroup\catcode`\^^@=\active
|
183
|
+
\lst@AddTo\lst@SelectStdCharTable{\def^^@{\ltj@lst@ProcessJALetter}}
|
184
|
+
\endgroup
|
185
|
+
\lst@AddToHook{InitVars}{%
|
186
|
+
\catcode`\^^@=\active
|
187
|
+
\if@ltj@lst@double
|
188
|
+
\let\ltj@lst@hss=\ltj@lst@hss@double
|
189
|
+
\else
|
190
|
+
\let\ltj@lst@hss=\lst@hss
|
191
|
+
\fi
|
192
|
+
}
|
193
|
+
|
194
|
+
%%%% 白線対策のため,\lineskiplimit を負の値にする
|
195
|
+
\newif\ifltj@lst@frame@top
|
196
|
+
\newdimen\ltj@lst@frame@lslimit
|
197
|
+
\gdef\lst@frameInit{%
|
198
|
+
\ltj@lst@frame@toptrue
|
199
|
+
\ifx\lst@framelshape\@empty \let\lst@frameL\@empty \fi
|
200
|
+
\ifx\lst@framershape\@empty \let\lst@frameR\@empty \fi
|
201
|
+
\def\lst@framevrule{\vrule\@width\lst@framerulewidth\relax}%
|
202
|
+
\lst@ifframeround
|
203
|
+
\lst@frameCalcDimA\z@ \@getcirc\@tempdima
|
204
|
+
\@tempdimb\@tempdima \divide\@tempdimb\tw@
|
205
|
+
\advance\@tempdimb -\@wholewidth
|
206
|
+
\edef\lst@frametextsep{\the\@tempdimb}%
|
207
|
+
\edef\lst@framerulewidth{\the\@wholewidth}%
|
208
|
+
\lst@frameCalcDimA\@ne \@getcirc\@tempdima
|
209
|
+
\@tempdimb\@tempdima \divide\@tempdimb\tw@
|
210
|
+
\advance\@tempdimb -\tw@\@wholewidth
|
211
|
+
\advance\@tempdimb -\lst@frametextsep
|
212
|
+
\edef\lst@rulesep{\the\@tempdimb}%
|
213
|
+
\fi
|
214
|
+
\lst@frameMakeBoxV\lst@framebox{\ht\strutbox}{\dp\strutbox}%
|
215
|
+
%%%% ここから
|
216
|
+
\@tempdima\z@
|
217
|
+
\ifdim\ht\strutbox<\cht\@tempdima=\dimexpr\cht-\ht\strutbox\relax\fi
|
218
|
+
\ifdim\dp\strutbox<\cdp\advance\@tempdima=\dimexpr\cdp-\dp\strutbox\relax\fi
|
219
|
+
\ltj@lst@frame@lslimit=-\@tempdima
|
220
|
+
\def\lst@framelr{%
|
221
|
+
\ifltj@lst@frame@top\ltj@lst@frame@topfalse\else\lineskiplimit\ltj@lst@frame@lslimit\fi
|
222
|
+
\copy\lst@framebox}%
|
223
|
+
%%%% ここまで
|
224
|
+
\ifx\lst@frametshape\@empty\else
|
225
|
+
\lst@frameH T\lst@frametshape
|
226
|
+
\ifvoid\z@\else
|
227
|
+
\par\lst@parshape
|
228
|
+
\@tempdima-\baselineskip \advance\@tempdima\ht\z@
|
229
|
+
\ifdim\prevdepth<\@cclvi\p@\else
|
230
|
+
\advance\@tempdima\prevdepth
|
231
|
+
\fi
|
232
|
+
\ifdim\@tempdima<\z@
|
233
|
+
\vskip\@tempdima\vskip\lineskip
|
234
|
+
\fi
|
235
|
+
\noindent\box\z@\par
|
236
|
+
\lineskiplimit\maxdimen \lineskip\z@
|
237
|
+
\fi
|
238
|
+
\lst@frameSpreadV\lst@framextopmargin
|
239
|
+
\fi}
|
240
|
+
|
241
|
+
% lstinputlisting
|
242
|
+
% modified from jlisting.sty
|
243
|
+
\def\lst@InputListing#1{%
|
244
|
+
\begingroup
|
245
|
+
\lsthk@PreSet \gdef\lst@intname{#1}%
|
246
|
+
\expandafter\lstset\expandafter{\lst@set}%
|
247
|
+
\lsthk@DisplayStyle
|
248
|
+
\catcode\active=\active
|
249
|
+
\lst@Init\relax \let\lst@gobble\z@
|
250
|
+
\lst@SkipToFirst
|
251
|
+
\lst@ifprint \def\lst@next{\lst@get@filecontents{#1}}%
|
252
|
+
\else \let\lst@next\@empty
|
253
|
+
\fi
|
254
|
+
\lst@next
|
255
|
+
\lst@DeInit
|
256
|
+
\endgroup}
|
257
|
+
\newread\lst@inputfile
|
258
|
+
\def\lst@get@filecontents#1{%
|
259
|
+
\let\lst@filecontents\@empty
|
260
|
+
\openin\lst@inputfile=#1\relax
|
261
|
+
\let\@lst@get@filecontents@prevline\relax
|
262
|
+
\lst@get@filecontents@loop
|
263
|
+
\closein\lst@inputfile
|
264
|
+
\lst@filecontents\empty}
|
265
|
+
\def\lst@get@filecontents@loop{%
|
266
|
+
\read\lst@inputfile to\lst@temp
|
267
|
+
\let\lst@arg\@empty\expandafter\expandafter\expandafter\lst@InsideConvert\expandafter{\lst@temp}%
|
268
|
+
\ifx\@lst@get@filecontents@prevline\relax\else
|
269
|
+
\expandafter\expandafter\expandafter\def
|
270
|
+
\expandafter\expandafter\expandafter\lst@filecontents
|
271
|
+
\expandafter\expandafter\expandafter{%
|
272
|
+
\expandafter\lst@filecontents\@lst@get@filecontents@prevline}%
|
273
|
+
\fi
|
274
|
+
\let\@lst@get@filecontents@prevline\lst@arg
|
275
|
+
\ifeof\lst@inputfile\else
|
276
|
+
\expandafter\lst@get@filecontents@loop
|
277
|
+
\fi}
|
278
|
+
|
279
|
+
%%%%%%%% escape to \LaTeX
|
280
|
+
%%%% 一旦中身を全部取得した後で,^^@ ( = \ltj@lst@ProcessJALetter) を
|
281
|
+
%%%% トークン列から削除,その後 \scantokens で再読み込み
|
282
|
+
\lstloadaspects{escape}
|
283
|
+
\gdef\lst@Escape#1#2#3#4{%
|
284
|
+
\lst@CArgX #1\relax\lst@CDefX
|
285
|
+
{}%
|
286
|
+
{\lst@ifdropinput\else
|
287
|
+
\lst@TrackNewLines\lst@OutputLostSpace \lst@XPrintToken
|
288
|
+
\lst@InterruptModes
|
289
|
+
\lst@EnterMode{\lst@TeXmode}{\lst@modetrue}%
|
290
|
+
\ifx\^^M#2%
|
291
|
+
\lst@CArg #2\relax\lst@ActiveCDefX
|
292
|
+
{}%
|
293
|
+
{\lst@escapeend #4\lst@LeaveAllModes\lst@ReenterModes}%
|
294
|
+
{\ltj@lst@MProcessListing}%
|
295
|
+
\else
|
296
|
+
\lst@CArg #2\relax\lst@ActiveCDefX
|
297
|
+
{}%
|
298
|
+
{\lst@escapeend #4\lst@LeaveAllModes\lst@ReenterModes
|
299
|
+
\lst@newlines\z@ \lst@whitespacefalse}%
|
300
|
+
{}%
|
301
|
+
\fi%
|
302
|
+
\ltj@lst@escape@setup#2
|
303
|
+
#3\lst@escapebegin\expandafter\lst@next%
|
304
|
+
\fi}%
|
305
|
+
{}}
|
306
|
+
\def\ltj@lst@escape@setup#1{%
|
307
|
+
\begingroup\lccode`\~=`#1\lowercase{%
|
308
|
+
\gdef\lst@next##1~{%
|
309
|
+
\let\lst@arg\@empty\ltj@lst@remove@jacmd{##1}%
|
310
|
+
\expandafter\expandafter\expandafter\scantokens\expandafter{\lst@arg}%
|
311
|
+
~}%
|
312
|
+
}\endgroup
|
313
|
+
}
|
314
|
+
|
315
|
+
\begingroup
|
316
|
+
\catcode`\^^@=12 %
|
317
|
+
\gdef\ltj@lst@remove@jacmd#1{%
|
318
|
+
\expandafter\ltj@lst@remove@jacmd@\detokenize{#1}^^@\@nil^^@}
|
319
|
+
\gdef\ltj@lst@remove@jacmd@#1^^@{%
|
320
|
+
\ifx#1\@nil\else
|
321
|
+
\lst@lAddTo\lst@arg{#1}%
|
322
|
+
\expandafter\ltj@lst@remove@jacmd@
|
323
|
+
\fi}
|
324
|
+
\endgroup
|
325
|
+
|
326
|
+
\endinput
|