tmtms-review 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +9 -0
  3. data/COPYING +515 -0
  4. data/ChangeLog +2083 -0
  5. data/README.rdoc +50 -0
  6. data/Rakefile +56 -0
  7. data/VERSION +1 -0
  8. data/bin/review-check +178 -0
  9. data/bin/review-checkdep +63 -0
  10. data/bin/review-compile +205 -0
  11. data/bin/review-epubmaker +661 -0
  12. data/bin/review-epubmaker-ng +176 -0
  13. data/bin/review-index +118 -0
  14. data/bin/review-pdfmaker +208 -0
  15. data/bin/review-preproc +142 -0
  16. data/bin/review-validate +51 -0
  17. data/bin/review-vol +102 -0
  18. data/debian/README.Debian +12 -0
  19. data/debian/README.source +5 -0
  20. data/debian/changelog +5 -0
  21. data/debian/compat +1 -0
  22. data/debian/control +22 -0
  23. data/debian/copyright +62 -0
  24. data/debian/docs +6 -0
  25. data/debian/manpage.1.ex +59 -0
  26. data/debian/patches/path.diff +91 -0
  27. data/debian/patches/series +1 -0
  28. data/debian/review.install +13 -0
  29. data/debian/review.links +4 -0
  30. data/debian/rules +13 -0
  31. data/debian/source/format +1 -0
  32. data/doc/format.rdoc +582 -0
  33. data/doc/format_idg.rdoc +180 -0
  34. data/doc/libepubmaker/sample.yaml +90 -0
  35. data/doc/quickstart.rdoc +188 -0
  36. data/doc/ruby-uuid/README +11 -0
  37. data/doc/ruby-uuid/README.ja +34 -0
  38. data/doc/sample.css +108 -0
  39. data/doc/sample.yaml +62 -0
  40. data/lib/epubmaker.rb +28 -0
  41. data/lib/epubmaker/content.rb +82 -0
  42. data/lib/epubmaker/epubv2.rb +418 -0
  43. data/lib/epubmaker/epubv3.rb +249 -0
  44. data/lib/epubmaker/producer.rb +204 -0
  45. data/lib/epubmaker/resource.rb +66 -0
  46. data/lib/lineinput.rb +155 -0
  47. data/lib/review.rb +3 -0
  48. data/lib/review/book.rb +46 -0
  49. data/lib/review/book/base.rb +235 -0
  50. data/lib/review/book/chapter.rb +81 -0
  51. data/lib/review/book/compilable.rb +159 -0
  52. data/lib/review/book/index.rb +339 -0
  53. data/lib/review/book/page_metric.rb +38 -0
  54. data/lib/review/book/parameters.rb +97 -0
  55. data/lib/review/book/part.rb +44 -0
  56. data/lib/review/book/volume.rb +65 -0
  57. data/lib/review/builder.rb +444 -0
  58. data/lib/review/compiler.rb +550 -0
  59. data/lib/review/configure.rb +38 -0
  60. data/lib/review/epubbuilder.rb +18 -0
  61. data/lib/review/exception.rb +21 -0
  62. data/lib/review/extentions.rb +3 -0
  63. data/lib/review/extentions/object.rb +9 -0
  64. data/lib/review/extentions/string.rb +33 -0
  65. data/lib/review/htmlbuilder.rb +1097 -0
  66. data/lib/review/htmllayout.rb +19 -0
  67. data/lib/review/htmlutils.rb +36 -0
  68. data/lib/review/i18n.rb +30 -0
  69. data/lib/review/i18n.yaml +34 -0
  70. data/lib/review/idgxmlbuilder.rb +1145 -0
  71. data/lib/review/latexbuilder.rb +815 -0
  72. data/lib/review/latexindex.rb +35 -0
  73. data/lib/review/latexutils.rb +79 -0
  74. data/lib/review/preprocessor.rb +563 -0
  75. data/lib/review/review.tex.erb +232 -0
  76. data/lib/review/textbuilder.rb +17 -0
  77. data/lib/review/textutils.rb +66 -0
  78. data/lib/review/tocparser.rb +342 -0
  79. data/lib/review/tocprinter.rb +221 -0
  80. data/lib/review/topbuilder.rb +785 -0
  81. data/lib/review/unfold.rb +138 -0
  82. data/lib/uuid.rb +312 -0
  83. data/review.gemspec +141 -0
  84. data/test/CHAPS +2 -0
  85. data/test/bib.re +13 -0
  86. data/test/book_test_helper.rb +35 -0
  87. data/test/test.re +43 -0
  88. data/test/test_book.rb +598 -0
  89. data/test/test_book_chapter.rb +418 -0
  90. data/test/test_book_parameter.rb +42 -0
  91. data/test/test_book_part.rb +50 -0
  92. data/test/test_builder.rb +144 -0
  93. data/test/test_compiler.rb +44 -0
  94. data/test/test_epubmaker.rb +507 -0
  95. data/test/test_helper.rb +27 -0
  96. data/test/test_htmlbuilder.rb +554 -0
  97. data/test/test_htmlutils.rb +28 -0
  98. data/test/test_i18n.rb +64 -0
  99. data/test/test_idgxmlbuilder.rb +589 -0
  100. data/test/test_index.rb +31 -0
  101. data/test/test_latexbuilder.rb +656 -0
  102. data/test/test_lineinput.rb +198 -0
  103. data/test/test_preprocessor.rb +23 -0
  104. data/test/test_textutils.rb +68 -0
  105. data/test/test_topbuilder.rb +244 -0
  106. data/test/test_uuid.rb +156 -0
  107. metadata +161 -0
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # $Id: review-preproc 3761 2007-12-31 07:20:09Z aamine $
4
+ #
5
+ # Copyright (c) 2010 Minero Aoki, Kenshi Muto
6
+ # Copyright (c) 1999-2007 Minero Aoki
7
+ #
8
+ # This program is free software.
9
+ # You can distribute or modify this program under the terms of
10
+ # the GNU LGPL, Lesser General Public License version 2.1.
11
+ # For details of the GNU LGPL, see the file "COPYING".
12
+ #
13
+
14
+ require 'pathname'
15
+
16
+ bindir = Pathname.new(__FILE__).realpath.dirname
17
+ $LOAD_PATH.unshift((bindir + '../lib').realpath)
18
+
19
+ require 'review/preprocessor'
20
+ require 'review/unfold'
21
+ require 'lineinput'
22
+ require 'stringio'
23
+ require 'fileutils'
24
+ require 'optparse'
25
+
26
+ def sigmain
27
+ Signal.trap(:INT) { exit 1 }
28
+ if RUBY_PLATFORM !~ /mswin(?!ce)|mingw|cygwin|bccwin/
29
+ Signal.trap(:PIPE, 'IGNORE')
30
+ end
31
+ main
32
+ rescue Errno::EPIPE
33
+ exit 0
34
+ end
35
+
36
+ def main
37
+ $KCODE = 'UTF-8' unless defined?(Encoding)
38
+
39
+ param = {
40
+ "inencoding" => "UTF-8",
41
+ "outencoding" => "UTF-8",
42
+ }
43
+
44
+ mode = :output
45
+ parser = OptionParser.new
46
+ parser.banner = "Usage: #{File.basename($0)} [-c|-d|-s|--replace] [<file>...]"
47
+ parser.on('--inencoding=ENCODING', 'Set input encoding. (UTF-8, EUC, JIS, and
48
+ SJIS)') {|enc|
49
+ param["inencoding"] = enc
50
+ }
51
+ parser.on('--outencoding=ENCODING', 'Set output encoding. (UTF-8[default], EUC
52
+ , JIS, and SJIS)') {|enc|
53
+ param["outencoding"] = enc
54
+ }
55
+ parser.on('-c', '--check', 'Check if preprocess is needed.') {
56
+ mode = :check
57
+ }
58
+ parser.on('-d', '--diff', 'Show diff from current file.') {
59
+ mode = :diff
60
+ }
61
+ parser.on('--replace', 'Replace file by preprocessed one.') {
62
+ mode = :replace
63
+ }
64
+ parser.on('-s', '--strip', 'Strip preprocessor tags.') {
65
+ mode = :strip
66
+ }
67
+ parser.on('--final', 'Unfold text and strip preprocessor tags. (deprecated)') {
68
+ mode = :final
69
+ }
70
+ parser.on('--tabwidth=WIDTH', 'tab width') {|width| param["tabwidth"] = width.to_i }
71
+ parser.on('--help', 'Print this message and quit.') {
72
+ puts parser.help
73
+ exit 0
74
+ }
75
+ begin
76
+ parser.parse!
77
+ rescue OptionParser::ParseError => err
78
+ $stderr.puts err.message
79
+ $stderr.puts parser.help
80
+ exit 1
81
+ end
82
+
83
+ pp = ReVIEW::Preprocessor.new(ReVIEW::Repository.new(param), param)
84
+ current_file = nil
85
+ ARGV.each do |path|
86
+ current_file = path
87
+ case mode
88
+ when :output
89
+ File.open(path) {|f|
90
+ pp.process f, $stdout
91
+ }
92
+ when :replace
93
+ File.write "#{path}.pptmp", preproc(pp, path)
94
+ File.rename "#{path}.pptmp", path
95
+ when :diff, :check
96
+ tmp = '/tmp/review.pptmp'
97
+ begin
98
+ File.write tmp, preproc(pp, path)
99
+ if mode == :check
100
+ system "diff -qu #{path} #{tmp} >/dev/null || echo #{path}"
101
+ else
102
+ system "diff -u #{path} #{tmp}"
103
+ end
104
+ ensure
105
+ FileUtils.rm_f tmp
106
+ end
107
+ when :strip
108
+ File.open(path) {|f|
109
+ ReVIEW::Preprocessor::Strip.new(f).each do |line|
110
+ puts line
111
+ end
112
+ }
113
+ when :final
114
+ u = ReVIEW::Unfold.new
115
+ File.open(path) {|f|
116
+ u.unfold ReVIEW::Preprocessor::Strip.new(f), $stdout
117
+ }
118
+ else
119
+ raise "must not happen: #{mode}"
120
+ end
121
+ end
122
+ rescue ReVIEW::Error => err
123
+ raise if $DEBUG
124
+ $stderr.puts err.message
125
+ exit 1
126
+ end
127
+
128
+ def preproc(pp, path)
129
+ buf = StringIO.new
130
+ File.open(path) {|f|
131
+ pp.process f, buf
132
+ }
133
+ buf.string
134
+ end
135
+
136
+ def File.write(path, str)
137
+ File.open(path, 'w') {|f|
138
+ f.write str
139
+ }
140
+ end
141
+
142
+ sigmain
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+ # Copyright (c) 2010 Kenshi Muto
3
+ #
4
+ # This program is free software
5
+ # You can distribute or modify this program under the terms of
6
+ # the GNU LGPL, Lesser General Public License version 2.1.
7
+ # For details of the GNU LGPL, see the file "COPYING".
8
+ #
9
+
10
+ # simple validator for ReVIEW
11
+
12
+ block = nil
13
+ maxcolcount = 0
14
+ colcount = 0
15
+ ln = 0
16
+
17
+ ARGF.each {|line|
18
+ ln = ln + 1
19
+ if line =~ /\A\/\/([a-z]+).+\{/
20
+ # block
21
+ _block = $1
22
+ puts "#{ln}: block #{_block} started, but previous block #{block} didn't close yet." unless block.nil?
23
+ block = _block
24
+ elsif line =~ /\A\/\/\}/
25
+ puts "#{ln}: block seen ended, but not opened." if block.nil?
26
+ block = nil
27
+ maxcolcount = 0
28
+ colcount = 0
29
+ elsif line =~ /\A(\d+\.)\s+/
30
+ # number
31
+ unless ["list", "emlist", "listnum", "emlistnum", "cmd", "image", "table"].include?(block)
32
+ puts "#{ln}: found $1 without the head space. Is it correct?"
33
+ end
34
+ elsif line =~ /\A\*\s+/
35
+ # itemize
36
+ unless ["list", "emlist", "listnum", "emlistnum", "cmd", "image", "table"].include?(block)
37
+ puts "#{ln}: found '*' without the head space. Is it correct?"
38
+ end
39
+ elsif line =~ /\A\s+(\d+\.)\s+/ && line =~ /\A\s+\*\s+/
40
+ unless ["list", "emlist", "listnum", "emlistnum", "cmd", "image", "table"].include?(block)
41
+ puts "#{ln}: found itemized list or numbered list in #{block}. Is it correct?"
42
+ end
43
+ elsif block == "table"
44
+ if line !~ /\A\-\-\-\-\-/
45
+ # table
46
+ colcount = line.split("\t").size
47
+ maxcolcount = colcount if maxcolcount == 0
48
+ puts "#{ln}: the number of table columns seems mismatch. (#{maxcolcount} != #{colcount})" if colcount != maxcolcount
49
+ end
50
+ end
51
+ }
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # $Id: review-vol 3901 2008-02-11 20:04:59Z aamine $
4
+ #
5
+ # Copyright (c) 2003-2007 Minero Aoki
6
+ #
7
+ # This program is free software.
8
+ # You can distribute or modify this program under the terms of
9
+ # the GNU LGPL, Lesser General Public License version 2.1.
10
+ # For details of the GNU LGPL, see the file "COPYING".
11
+ #
12
+
13
+ require 'pathname'
14
+
15
+ bindir = Pathname.new(__FILE__).realpath.dirname
16
+ $LOAD_PATH.unshift((bindir + '../lib').realpath)
17
+
18
+ require 'review'
19
+ require 'optparse'
20
+
21
+ include ReVIEW::TextUtils
22
+
23
+ def main
24
+ $KCODE = 'UTF-8' unless defined?(Encoding)
25
+
26
+ @param = {
27
+ "inencoding" => "UTF-8",
28
+ "outencoding" => "UTF-8"
29
+ }
30
+
31
+ part_sensitive = false
32
+ basedir = nil
33
+ parser = OptionParser.new
34
+ parser.on('-P', '--part-sensitive', 'Prints volume of each parts.') {
35
+ part_sensitive = true
36
+ }
37
+ parser.on('--inencoding=ENCODING', 'Set input encoding. (UTF-8, EUC, JIS, and SJIS)') {|enc|
38
+ @param["inencoding"] = enc
39
+ }
40
+ parser.on('--outencoding=ENCODING', 'Set output encoding. (UTF-8[default], EUC, JIS, and SJIS)') {|enc|
41
+ @param["outencoding"] = enc
42
+ }
43
+ parser.on('--directory=DIR', 'Compile all chapters in DIR.') {|path|
44
+ basedir = path
45
+ }
46
+ parser.on('--help', 'Print this message and quit') {
47
+ puts parser.help
48
+ exit 0
49
+ }
50
+ begin
51
+ parser.parse!
52
+ rescue OptionParser::ParseError => err
53
+ $stderr.puts err.message
54
+ $stderr.puts parser.help
55
+ exit 1
56
+ end
57
+
58
+ book = basedir ? ReVIEW::Book.load(basedir) : ReVIEW.book
59
+ ReVIEW.book.param = @param
60
+ if part_sensitive
61
+ sep = ""
62
+ book.each_part do |part|
63
+ print sep; sep = "\n"
64
+ puts "Part #{part.number} #{part.name}" if part.number
65
+ part.each_chapter do |chap|
66
+ print_chapter_volume chap
67
+ end
68
+ puts ' --------------------'
69
+ print_volume part.volume
70
+ end
71
+ puts '============================='
72
+ print_volume book.volume #puts "Total #{book.volume}"
73
+ else
74
+ book.each_chapter do |chap|
75
+ print_chapter_volume chap
76
+ end
77
+ puts '============================='
78
+ print_volume book.volume #puts "Total #{book.volume}"
79
+ end
80
+ rescue ReVIEW::ApplicationError, Errno::ENOENT => err
81
+ raise if $DEBUG
82
+ $stderr.puts "#{File.basename($0)}: #{err.message}"
83
+ exit 1
84
+ end
85
+
86
+ def print_chapter_volume(chap)
87
+ vol = chap.volume
88
+ title = convert_outencoding(chap.title, @param["outencoding"])
89
+ printf "%s %3dKB %6dC %5dL %3dP %s %-s\n",
90
+ chapnumstr(chap.number), vol.kbytes, vol.chars, vol.lines, vol.page,
91
+ "#{chap.name} ".ljust(25, '.'), title
92
+ end
93
+
94
+ def print_volume(vol)
95
+ printf " %3dKB %6dC %5dL %3dP\n", vol.kbytes, vol.chars, vol.lines, vol.page
96
+ end
97
+
98
+ def chapnumstr(n)
99
+ n ? sprintf('%2d.', n) : ' '
100
+ end
101
+
102
+ main
@@ -0,0 +1,12 @@
1
+ review for Debian
2
+ -----------------
3
+
4
+ review-epubmaker, is EPUB builder, needs zip package. If you'd like to
5
+ use MathML in HTML, install libmathml-ruby also.
6
+ review-pdfmaker, is PDF builder, needs ptexlive environment.
7
+ Although ptexlive isn't packaged yet, you can take experimental packages
8
+ from http://www1.pm.tokushima-u.ac.jp/~kohda/tex/ptexlive.html
9
+ Plus, review-pdfmaker uses additional style;
10
+ - jumoline.sty: http://www.para.media.kyoto-u.ac.jp/latex/jumoline.tar.gz
11
+
12
+ -- Kenshi Muto <kmuto@debian.org> Tue, 23 Nov 2010 17:35:59 +0900
@@ -0,0 +1,5 @@
1
+ review for Debian
2
+ -----------------
3
+
4
+ Rakefile focuses test and gem, not Debian packaging.
5
+ Test needs some gem files are not yet included in Debian pool.
@@ -0,0 +1,5 @@
1
+ review (1.0+20120212) unstable; urgency=low
2
+
3
+ * Initial Release. (closes: #XXXX)
4
+
5
+ -- Kenshi Muto <kmuto@debian.org> Sun, 12 Feb 2012 15:38:55 +0900
@@ -0,0 +1 @@
1
+ 7
@@ -0,0 +1,22 @@
1
+ Source: review
2
+ Section: text
3
+ Priority: optional
4
+ Maintainer: Kenshi Muto <kmuto@debian.org>
5
+ Build-Depends: debhelper (>= 7.0.50~), quilt (>= 0.46-7~)
6
+ Standards-Version: 3.9.1
7
+ Homepage: http://github.com/kmuto/review
8
+ Vcs-Git: git://github.com/kmuto/review.git
9
+
10
+ Package: review
11
+ Architecture: all
12
+ Depends: ${shlibs:Depends}, ${misc:Depends}, ruby
13
+ Recommends: zip
14
+ Suggests: ptex-bin, okumura-clsfiles, libmathml-ruby
15
+ Description: easy-to-use digital publishing system for Japanese books and ebooks
16
+ ReVIEW is a digital publishing system for books and ebooks.
17
+ It is aimed professional Japanese editorial use.
18
+ .
19
+ ReVIEW generates HTML, LaTeX, plain text, and Adobe InDesign XML
20
+ from a text file with simple and extensible tags.
21
+ .
22
+ This package provides the builders for EPUB and PDF.
@@ -0,0 +1,62 @@
1
+ This work was packaged for Debian by:
2
+
3
+ Kenshi Muto <kmuto@debian.org> on Tue, 23 Nov 2010 17:35:59 +0900
4
+
5
+ It was downloaded from:
6
+
7
+ git://github.com/kmuto/review
8
+
9
+ Upstream Author(s):
10
+
11
+ Minero Aoki, Kenshi Muto,
12
+ Masayoshi Takahashi, and
13
+ Masanori KADO <kdmsnr@gmail.com>.
14
+
15
+ Copyright:
16
+
17
+ Copyright (C) 2006-2012 Minero Aoki, Kenshi Muto, Masayoshi Takahashi,
18
+ Masanori KADO.
19
+
20
+ For lib/uuid.rb:
21
+ Copyright(c) 2005 URABE, Shyouhei
22
+
23
+ License:
24
+
25
+ This program is free software: you can redistribute it and/or modify
26
+ it under the terms of the GNU Lesser General Public License as published by
27
+ the Free Software Foundation, version 2.1 of the License.
28
+
29
+ This package is distributed in the hope that it will be useful,
30
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
31
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32
+ GNU Lesser General Public License for more details.
33
+
34
+ You should have received a copy of the GNU Lesser General Public License
35
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
36
+
37
+ On Debian systems, the complete text of the GNU Lesser General
38
+ Public License version 2.1 can be found in "/usr/share/common-licenses/LGPL-2.1".
39
+
40
+ lib/uuid.rb:
41
+ Permission is hereby granted, free of charge, to any person obtaining a copy
42
+ of this code, to deal in the code without restriction, including without
43
+ limitation the rights to use, copy, modify, merge, publish, distribute,
44
+ sublicense, and/or sell copies of the code, and to permit persons to whom the
45
+ code is furnished to do so, subject to the following conditions:
46
+
47
+ The above copyright notice and this permission notice shall be
48
+ included in all copies or substantial portions of the code.
49
+
50
+ THE CODE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
51
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
52
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
53
+ AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
54
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
55
+ OUT OF OR IN CONNECTION WITH THE CODE OR THE USE OR OTHER DEALINGS IN THE
56
+ CODE.
57
+
58
+ The Debian packaging is:
59
+
60
+ Copyright (C) 2010 Kenshi Muto <kmuto@debian.org>
61
+
62
+ and is licensed under the GNU Lesser GPL version 2.1, see above.
@@ -0,0 +1,6 @@
1
+ README.rdoc
2
+ ChangeLog
3
+ doc/format.rdoc
4
+ doc/quickstart.rdoc
5
+ doc/sample.css
6
+ doc/sample.yaml
@@ -0,0 +1,59 @@
1
+ .\" Hey, EMACS: -*- nroff -*-
2
+ .\" First parameter, NAME, should be all caps
3
+ .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
4
+ .\" other parameters are allowed: see man(7), man(1)
5
+ .TH REVIEW SECTION "November 23, 2010"
6
+ .\" Please adjust this date whenever revising the manpage.
7
+ .\"
8
+ .\" Some roff macros, for reference:
9
+ .\" .nh disable hyphenation
10
+ .\" .hy enable hyphenation
11
+ .\" .ad l left justify
12
+ .\" .ad b justify to both left and right margins
13
+ .\" .nf disable filling
14
+ .\" .fi enable filling
15
+ .\" .br insert line break
16
+ .\" .sp <n> insert n+1 empty lines
17
+ .\" for manpage-specific macros, see man(7)
18
+ .SH NAME
19
+ review \- program to do something
20
+ .SH SYNOPSIS
21
+ .B review
22
+ .RI [ options ] " files" ...
23
+ .br
24
+ .B bar
25
+ .RI [ options ] " files" ...
26
+ .SH DESCRIPTION
27
+ This manual page documents briefly the
28
+ .B review
29
+ and
30
+ .B bar
31
+ commands.
32
+ .PP
33
+ .\" TeX users may be more comfortable with the \fB<whatever>\fP and
34
+ .\" \fI<whatever>\fP escape sequences to invode bold face and italics,
35
+ .\" respectively.
36
+ \fBreview\fP is a program that...
37
+ .SH OPTIONS
38
+ These programs follow the usual GNU command line syntax, with long
39
+ options starting with two dashes (`-').
40
+ A summary of options is included below.
41
+ For a complete description, see the Info files.
42
+ .TP
43
+ .B \-h, \-\-help
44
+ Show summary of options.
45
+ .TP
46
+ .B \-v, \-\-version
47
+ Show version of program.
48
+ .SH SEE ALSO
49
+ .BR bar (1),
50
+ .BR baz (1).
51
+ .br
52
+ The programs are documented fully by
53
+ .IR "The Rise and Fall of a Fooish Bar" ,
54
+ available via the Info system.
55
+ .SH AUTHOR
56
+ review was written by <upstream author>.
57
+ .PP
58
+ This manual page was written by Kenshi Muto <kmuto@debian.org>,
59
+ for the Debian project (and may be used by others).