deplate 0.7.3
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS.TXT +26 -0
- data/CHANGES.TXT +177 -0
- data/LICENSE.TXT +340 -0
- data/NEWS.TXT +29 -0
- data/README.TXT +86 -0
- data/TODO.TXT +202 -0
- data/VERSION.TXT +1 -0
- data/bin/deplate +3 -0
- data/bin/deplate.bat +2 -0
- data/etc/deplate.ini +361 -0
- data/lib/deplate.rb +31 -0
- data/lib/deplate/abstract-class.rb +30 -0
- data/lib/deplate/builtin.rb +11 -0
- data/lib/deplate/cache.rb +59 -0
- data/lib/deplate/commands.rb +693 -0
- data/lib/deplate/common.rb +335 -0
- data/lib/deplate/converter.rb +99 -0
- data/lib/deplate/core.rb +2705 -0
- data/lib/deplate/css/article.css +545 -0
- data/lib/deplate/css/deplate.css +699 -0
- data/lib/deplate/css/heading-navbar.css +29 -0
- data/lib/deplate/css/layout-deplate-print.css +540 -0
- data/lib/deplate/css/layout-deplate.css +764 -0
- data/lib/deplate/css/sans-serif.css +160 -0
- data/lib/deplate/css/serif-e.css +170 -0
- data/lib/deplate/css/serif-rel.css +121 -0
- data/lib/deplate/css/serif.css +190 -0
- data/lib/deplate/css/slides.css +11 -0
- data/lib/deplate/css/tabbar-left.css +91 -0
- data/lib/deplate/css/tabbar-right-ie.css +14 -0
- data/lib/deplate/css/tabbar-right.css +118 -0
- data/lib/deplate/css/tabbar-top.css +64 -0
- data/lib/deplate/css/tabbar.css +81 -0
- data/lib/deplate/css/text-sans-serif.css +154 -0
- data/lib/deplate/css/text-serif.css +175 -0
- data/lib/deplate/define.rb +439 -0
- data/lib/deplate/docbook.rb +738 -0
- data/lib/deplate/elements.rb +1355 -0
- data/lib/deplate/etc.rb +199 -0
- data/lib/deplate/external.rb +135 -0
- data/lib/deplate/fmt/dbk-article-4.1.2.rb +21 -0
- data/lib/deplate/fmt/dbk-article.rb +46 -0
- data/lib/deplate/fmt/dbk-book.rb +46 -0
- data/lib/deplate/fmt/dbk-ref.rb +105 -0
- data/lib/deplate/fmt/dbk-slides.rb +47 -0
- data/lib/deplate/fmt/dbk-snippet.rb +21 -0
- data/lib/deplate/fmt/html-snippet.rb +21 -0
- data/lib/deplate/fmt/html.rb +1696 -0
- data/lib/deplate/fmt/htmlsite.rb +419 -0
- data/lib/deplate/fmt/htmlslides.rb +21 -0
- data/lib/deplate/fmt/htmlwebsite.rb +70 -0
- data/lib/deplate/fmt/latex-snippet.rb +22 -0
- data/lib/deplate/fmt/latex.rb +1242 -0
- data/lib/deplate/fmt/php.rb +19 -0
- data/lib/deplate/fmt/phpsite.rb +19 -0
- data/lib/deplate/fmt/plain.rb +598 -0
- data/lib/deplate/fmt/template.rb +34 -0
- data/lib/deplate/fmt/xhtml10t.rb +41 -0
- data/lib/deplate/formatter-snippet.rb +17 -0
- data/lib/deplate/formatter.rb +1210 -0
- data/lib/deplate/input.rb +492 -0
- data/lib/deplate/input/deplate-headings.rb +48 -0
- data/lib/deplate/input/deplate-restricted.rb +70 -0
- data/lib/deplate/input/deplate.rb +28 -0
- data/lib/deplate/input/rdoc.rb +277 -0
- data/lib/deplate/input/template.rb +29 -0
- data/lib/deplate/lib/latex/highlight-extra.sty +15 -0
- data/lib/deplate/lib/latex/highlight-typical.sty +15 -0
- data/lib/deplate/lib/tabmenu.js +146 -0
- data/lib/deplate/locale/de.latin1 +708 -0
- data/lib/deplate/locale/ru.koi8-r +48 -0
- data/lib/deplate/locale/zh_cn.gb2312 +35 -0
- data/lib/deplate/macros.rb +639 -0
- data/lib/deplate/messages.rb +120 -0
- data/lib/deplate/metadata.rb +77 -0
- data/lib/deplate/metadata/marshal.rb +24 -0
- data/lib/deplate/metadata/xml.rb +42 -0
- data/lib/deplate/metadata/yaml.rb +26 -0
- data/lib/deplate/mod/anyword.rb +56 -0
- data/lib/deplate/mod/babelfish.rb +27 -0
- data/lib/deplate/mod/code-gvim.rb +52 -0
- data/lib/deplate/mod/code-highlight.rb +91 -0
- data/lib/deplate/mod/colored-log.rb +17 -0
- data/lib/deplate/mod/de.rb +19 -0
- data/lib/deplate/mod/en.rb +17 -0
- data/lib/deplate/mod/endnotes.rb +60 -0
- data/lib/deplate/mod/fr.rb +46 -0
- data/lib/deplate/mod/html-asciimath.rb +40 -0
- data/lib/deplate/mod/html-deplate-button.rb +15 -0
- data/lib/deplate/mod/html-headings-navbar.rb +39 -0
- data/lib/deplate/mod/html-obfuscate-email.rb +47 -0
- data/lib/deplate/mod/html-sidebar.rb +232 -0
- data/lib/deplate/mod/htmlslides-navbar-fh.rb +32 -0
- data/lib/deplate/mod/iconv.rb +35 -0
- data/lib/deplate/mod/imgurl.rb +30 -0
- data/lib/deplate/mod/inlatex-compound.rb +69 -0
- data/lib/deplate/mod/koma.rb +109 -0
- data/lib/deplate/mod/latex-emph-table-head.rb +38 -0
- data/lib/deplate/mod/latex-styles.rb +461 -0
- data/lib/deplate/mod/latex-verbatim-small.rb +29 -0
- data/lib/deplate/mod/makefile.rb +194 -0
- data/lib/deplate/mod/mark-external-urls.rb +38 -0
- data/lib/deplate/mod/markup-1-warn.rb +37 -0
- data/lib/deplate/mod/markup-1.rb +41 -0
- data/lib/deplate/mod/navbar-png.rb +33 -0
- data/lib/deplate/mod/noindent.rb +32 -0
- data/lib/deplate/mod/numpara.rb +40 -0
- data/lib/deplate/mod/particle-math.rb +34 -0
- data/lib/deplate/mod/php-extra.rb +44 -0
- data/lib/deplate/mod/pstoedit.rb +71 -0
- data/lib/deplate/mod/recode.rb +57 -0
- data/lib/deplate/mod/ru_koi8-r.rb +20 -0
- data/lib/deplate/mod/smiley.rb +50 -0
- data/lib/deplate/mod/soffice.rb +23 -0
- data/lib/deplate/mod/symbols-latin1.rb +58 -0
- data/lib/deplate/mod/symbols-od-utf-8.rb +16 -0
- data/lib/deplate/mod/symbols-plain.rb +58 -0
- data/lib/deplate/mod/symbols-sgml.rb +97 -0
- data/lib/deplate/mod/symbols-utf-8.rb +81 -0
- data/lib/deplate/mod/symbols-xml.rb +34 -0
- data/lib/deplate/mod/syntax-region-alt.rb +37 -0
- data/lib/deplate/mod/utf8.rb +49 -0
- data/lib/deplate/mod/validate-html.rb +35 -0
- data/lib/deplate/mod/xmlrpc.rb +233 -0
- data/lib/deplate/mod/zh-cn-autospace.rb +108 -0
- data/lib/deplate/mod/zh-cn.rb +59 -0
- data/lib/deplate/once-method.rb +44 -0
- data/lib/deplate/output.rb +249 -0
- data/lib/deplate/particles.rb +815 -0
- data/lib/deplate/regions.rb +1076 -0
- data/lib/deplate/structured.rb +763 -0
- data/lib/deplate/template.rb +430 -0
- data/lib/deplate/templates/html-doc.html +28 -0
- data/lib/deplate/templates/html-left-tabbar-js.html +37 -0
- data/lib/deplate/templates/html-left-tabbar.html +31 -0
- data/lib/deplate/templates/html-tabbar-right-table.html +43 -0
- data/lib/deplate/templates/html-tabbar-right.html +23 -0
- data/lib/deplate/templates/html-tabbar-top.html +43 -0
- data/lib/deplate/templates/html-tabbar.html +31 -0
- data/lib/deplate/wiki-markup.rb +117 -0
- data/lib/deplate/xml.rb +109 -0
- data/lib/deplate/zh-cn.rb +59 -0
- data/lib/ps2ppm.rb +239 -0
- data/man/man1/deplate.1 +692 -0
- metadata +210 -0
data/lib/ps2ppm.rb
ADDED
@@ -0,0 +1,239 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# ps2ppm.rb
|
3
|
+
# @Author: Peter Kleiweg
|
4
|
+
# @Created: 11-Nov-2004.
|
5
|
+
# @Last Change: 30-Jul-2005.
|
6
|
+
# @Revision: 0.101
|
7
|
+
#
|
8
|
+
# Ruby translation of the ps2ppm script that can be found
|
9
|
+
# http://odur.let.rug.nl/~kleiweg/postscript/ps2ppm
|
10
|
+
# here.
|
11
|
+
#
|
12
|
+
# Note that this is still very perlish.
|
13
|
+
#
|
14
|
+
# The original perl script is by Peter Kleiweg.
|
15
|
+
# Kaspar Schiess (eule AT space.ch) converted this script to ruby.
|
16
|
+
#
|
17
|
+
# This is a slightly modified and de-perlished version of his converted script.
|
18
|
+
#
|
19
|
+
|
20
|
+
require 'getopts'
|
21
|
+
# require 'pp'
|
22
|
+
|
23
|
+
module Ps2ppm
|
24
|
+
@gsname = "gs"
|
25
|
+
# @gsname = "gs.bat"
|
26
|
+
@progname = "ps2pmm"
|
27
|
+
@default = 'ppmraw'
|
28
|
+
|
29
|
+
def syntax
|
30
|
+
puts <<EOS
|
31
|
+
|
32
|
+
PostScript to Pixelmap(s) Converter
|
33
|
+
(C) P. Kleiweg 1996-1999
|
34
|
+
|
35
|
+
Usage: #{@progname} [-1ghot] [-f format] [-m margin] [-O orientation] [-r resolution] file[.[e]ps]
|
36
|
+
|
37
|
+
-1: old PostScript Level 1 method (unsafe?)
|
38
|
+
-f: format (default #{@default}), for listing type: gs -h
|
39
|
+
-g: anti-alias graphics (try it)
|
40
|
+
-h: this help
|
41
|
+
-m: margin (default 0)
|
42
|
+
-O: orientation (overrides %%Orientation comment)
|
43
|
+
valid orientations are: Portrait Landscape Upside-Down Seascape
|
44
|
+
-o: force overwrite
|
45
|
+
-r: resolution (default 72)
|
46
|
+
-t: anti-alias text (recommended)
|
47
|
+
|
48
|
+
EOS
|
49
|
+
exit
|
50
|
+
end
|
51
|
+
module_function :syntax
|
52
|
+
|
53
|
+
def run(file, opt={})
|
54
|
+
syntax unless file
|
55
|
+
|
56
|
+
level = 2
|
57
|
+
format = @default
|
58
|
+
margin = 0
|
59
|
+
overwrite = 0
|
60
|
+
orient = 'Portrait'
|
61
|
+
res = 72
|
62
|
+
gab = ''
|
63
|
+
tab = ''
|
64
|
+
values = []
|
65
|
+
|
66
|
+
level = true if opt['1']
|
67
|
+
format = opt['f'] if opt['f']
|
68
|
+
margin = Float(opt['m']) if opt['m']
|
69
|
+
overwrite = true if opt['o']
|
70
|
+
res = Integer(opt['r']) if opt['r']
|
71
|
+
gab = '-dGraphicsAlphaBits=4' if opt['g']
|
72
|
+
tab = '-dTextAlphaBits=4' if opt['t']
|
73
|
+
|
74
|
+
case format
|
75
|
+
when "jpeg"
|
76
|
+
# values << "-dQFactor=1.0"
|
77
|
+
values << "-dJPEGQ=100"
|
78
|
+
end
|
79
|
+
|
80
|
+
out_file1 = "#{file}.01.#{format}"
|
81
|
+
|
82
|
+
# If you have problems with anti-aliasing, try uncommenting this:
|
83
|
+
# if opt['g'] or opt['t']
|
84
|
+
# values << '-dRedValues=256 -dGreenValues=256 -dBlueValues=256 -dGrayValues=256'
|
85
|
+
# end
|
86
|
+
|
87
|
+
infile = file
|
88
|
+
file = file.sub( /\.[eE]?[Pp][Ss]$/, '' )
|
89
|
+
unless infile =~ /\.[eE]?[Pp][Ss]$/
|
90
|
+
infile += '.ps'
|
91
|
+
end
|
92
|
+
|
93
|
+
if FileTest.file?(out_file1) && (! overwrite)
|
94
|
+
raise "File exists: #{out_file1}";
|
95
|
+
end
|
96
|
+
|
97
|
+
found = false
|
98
|
+
level = 0
|
99
|
+
x1 = nil
|
100
|
+
y1 = nil
|
101
|
+
x2 = nil
|
102
|
+
y2 = nil
|
103
|
+
found = nil
|
104
|
+
|
105
|
+
postscript = nil
|
106
|
+
File.open( infile, 'rb' ) do |io|
|
107
|
+
postscript = io.readlines
|
108
|
+
end
|
109
|
+
postscript.each do |line|
|
110
|
+
if level == 0 and line =~ /^%%BoundingBox:\s*(-?\d+)\s+(-?\d+)\s+(-?\d+)\s+(-?\d+)/
|
111
|
+
x1 = Integer($1)
|
112
|
+
y1 = Integer($2)
|
113
|
+
x2 = Integer($3)
|
114
|
+
y2 = Integer($4)
|
115
|
+
found = true
|
116
|
+
elsif level == 0 and line =~ /^%%Orientation:\s*(\S+)/
|
117
|
+
o = $1
|
118
|
+
if o =~ /^portrait$/i
|
119
|
+
orient = 'Portrait';
|
120
|
+
elsif o =~ /^landscape$/i
|
121
|
+
orient = 'Landscape'
|
122
|
+
elsif o =~ /^upside-?down$/i
|
123
|
+
orient = 'Upside-Down'
|
124
|
+
elsif o =~ /^seascape$/i
|
125
|
+
orient = 'Seascape'
|
126
|
+
end
|
127
|
+
elsif line =~ /^%%BeginDocument\b/
|
128
|
+
level += 1
|
129
|
+
elsif line =~ /^%%EndDocument\b/
|
130
|
+
level -= 1
|
131
|
+
end
|
132
|
+
end
|
133
|
+
found or raise "BoundingBox not found in #{file}.ps"
|
134
|
+
|
135
|
+
if opt['O']
|
136
|
+
case opt['O']
|
137
|
+
when /^portrait/i
|
138
|
+
orient = 'Portrait'
|
139
|
+
when /^landscape$/i
|
140
|
+
orient = 'Landscape'
|
141
|
+
when /^upside-?down$/i
|
142
|
+
orient = 'Upside-Down'
|
143
|
+
when /^seascape$/i
|
144
|
+
orient = 'Seascape'
|
145
|
+
else
|
146
|
+
raise 'Illegal orientation'
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
trans = ''
|
151
|
+
|
152
|
+
if margin != 0
|
153
|
+
trans << "#{margin} dup translate "
|
154
|
+
end
|
155
|
+
|
156
|
+
case orient
|
157
|
+
when 'Portrait'
|
158
|
+
w = x2 - x1
|
159
|
+
h = y2 - y1
|
160
|
+
when 'Landscape'
|
161
|
+
w = y2 - y1
|
162
|
+
h = x2 - x1
|
163
|
+
t = -h
|
164
|
+
trans << "-90 rotate #{t} 0 translate "
|
165
|
+
when 'Upside-Down'
|
166
|
+
w = x2 - x1
|
167
|
+
h = y2 - y1
|
168
|
+
ww = -w
|
169
|
+
hh = -h
|
170
|
+
trans << "180 rotate #{ww} #{hh} translate "
|
171
|
+
when 'Seascape'
|
172
|
+
w = y2 - y1
|
173
|
+
h = x2 - x1
|
174
|
+
t = -w
|
175
|
+
trans << "90 rotate 0 #{t} translate "
|
176
|
+
else
|
177
|
+
raise "Unknown orientation: %s" % orient
|
178
|
+
end
|
179
|
+
|
180
|
+
w = ((2.0 * margin + w) * res / 72.0).to_i
|
181
|
+
h = ((2.0 * margin + h) * res / 72.0).to_i
|
182
|
+
|
183
|
+
x = -x1
|
184
|
+
y = -y1
|
185
|
+
trans << "#{x} #{y} translate"
|
186
|
+
|
187
|
+
puts "#{file}.ps -> #{file}.%02d.#{format}"
|
188
|
+
|
189
|
+
if defined?(Deplate::External.get_app)
|
190
|
+
gsname = Deplate::External.get_app('gs', @gsname)
|
191
|
+
else
|
192
|
+
gsname = @gsname
|
193
|
+
end
|
194
|
+
cmdline = "#{gsname} -dDOINTERPOLATE #{values.join(" ")} #{gab} #{tab} -g#{w}x#{h} -r#{res} -sDEVICE=#{format} -sOutputFile=#{file}.%02d.#{format} -dNOPAUSE -"
|
195
|
+
IO.popen(cmdline, 'w') do |gs|
|
196
|
+
|
197
|
+
if level == 1
|
198
|
+
gs.puts <<LEV1HEAD
|
199
|
+
/showpage {
|
200
|
+
showpage
|
201
|
+
#{trans}
|
202
|
+
(.) print flush
|
203
|
+
} bind def
|
204
|
+
#{trans}
|
205
|
+
LEV1HEAD
|
206
|
+
else
|
207
|
+
gs.puts <<LEV2HEAD
|
208
|
+
<<
|
209
|
+
/BeginPage {
|
210
|
+
pop
|
211
|
+
#{trans}
|
212
|
+
}
|
213
|
+
/EndPage {
|
214
|
+
dup 0 eq {
|
215
|
+
pop
|
216
|
+
1 add 4 string cvs print ( ) print flush
|
217
|
+
true
|
218
|
+
} {
|
219
|
+
1 eq
|
220
|
+
exch pop
|
221
|
+
} ifelse
|
222
|
+
}
|
223
|
+
>> setpagedevice
|
224
|
+
LEV2HEAD
|
225
|
+
end
|
226
|
+
gs.puts postscript
|
227
|
+
gs.puts "\nquit\n"
|
228
|
+
return File.exist?(out_file1)
|
229
|
+
end
|
230
|
+
end
|
231
|
+
module_function :run
|
232
|
+
end
|
233
|
+
|
234
|
+
if __FILE__ == $0
|
235
|
+
file = ARGV.pop
|
236
|
+
getopts('1f:ghm:oO:r:t')
|
237
|
+
Ps2ppm.run(file, $OPT)
|
238
|
+
end
|
239
|
+
|
data/man/man1/deplate.1
ADDED
@@ -0,0 +1,692 @@
|
|
1
|
+
.\"Generated by db2man.xsl. Don't modify this, modify the source.
|
2
|
+
.de Sh \" Subsection
|
3
|
+
.br
|
4
|
+
.if t .Sp
|
5
|
+
.ne 5
|
6
|
+
.PP
|
7
|
+
\fB\\$1\fR
|
8
|
+
.PP
|
9
|
+
..
|
10
|
+
.de Sp \" Vertical space (when we can't use .PP)
|
11
|
+
.if t .sp .5v
|
12
|
+
.if n .sp
|
13
|
+
..
|
14
|
+
.de Ip \" List item
|
15
|
+
.br
|
16
|
+
.ie \\n(.$>=3 .ne \\$3
|
17
|
+
.el .ne 3
|
18
|
+
.IP "\\$1" \\$2
|
19
|
+
..
|
20
|
+
.TH "DEPLATE" 1 "02. Nov 2005" "" ""
|
21
|
+
.SH NAME
|
22
|
+
deplate \- Deplate - convert wiki-like markup to latex, docbook, html, or �html-slides�
|
23
|
+
.SH "USAGE"
|
24
|
+
|
25
|
+
.PP
|
26
|
+
The command\-line options:
|
27
|
+
|
28
|
+
.IP
|
29
|
+
|
30
|
+
Usage: deplate\&.rb [OPTIONS] FILE [OTHER FILES \&.\&.\&.]
|
31
|
+
|
32
|
+
|
33
|
+
deplate is a free software with ABSOLUTELY NO WARRANTY under
|
34
|
+
the terms of the GNU General Public License version 2\&.
|
35
|
+
|
36
|
+
|
37
|
+
General Options:
|
38
|
+
\-a, \-\-[no\-]ask On certain actions, query
|
39
|
+
user before overwriting files
|
40
|
+
\-A, \-\-allow ALLOW Allow certain things: x,
|
41
|
+
X, $
|
42
|
+
\-c, \-\-config FILE Alternative user cfg file
|
43
|
+
\-\-[no\-]clean Clean up temporary files
|
44
|
+
\-\-color Colored output
|
45
|
+
\-\-css NAME Copy NAME\&.css to the destination
|
46
|
+
directory, if inexistent
|
47
|
+
\-\-copy\-css NAME Copy NAME\&.css to the destination
|
48
|
+
directory
|
49
|
+
\-d, \-\-dir DIR Output directory
|
50
|
+
\-D, \-\-define NAME=VALUE Define a document option
|
51
|
+
\-e, \-\-[no\-]each Handle each file separately
|
52
|
+
\-\-[no\-]force Force output
|
53
|
+
\-f, \-\-format FORMAT Output format (default:
|
54
|
+
html)
|
55
|
+
\-\-[no\-]included Output body only
|
56
|
+
\-i, \-\-input NAME Input definition
|
57
|
+
\-\-list FILE A file that contains a list
|
58
|
+
of input files
|
59
|
+
\-\-log FILE A file (or \- for stdout)
|
60
|
+
where to put the log
|
61
|
+
\-\-[no\-]loop Read from stdin forever
|
62
|
+
and ever
|
63
|
+
\-\-metadata [NAME] Save metadata in this format
|
64
|
+
(default: yaml)
|
65
|
+
\-m, \-\-module MODULE Load a module
|
66
|
+
\-o, \-\-out FILE Output to file or stdout
|
67
|
+
('\-')
|
68
|
+
\-p, \-\-pattern GLOBPATTERN File name pattern
|
69
|
+
\-P, \-\-exclude GLOBPATTERN Excluded file name pattern
|
70
|
+
\-r, \-\-[no\-]recurse Recurse into directories
|
71
|
+
\-\-reset\-filecache Reset the file database
|
72
|
+
\-R, \-\-[no\-]Recurse Recurse and rebuild hierarchy
|
73
|
+
\-\-[no\-]simple\-names Disable simple wiki names
|
74
|
+
\-\-suffix SUFFIX Suffix for output files
|
75
|
+
\-t, \-\-template NAME Template to use
|
76
|
+
\-\-[no\-]vanilla Ignore user configuration
|
77
|
+
\-x, \-\-allow\-ruby [RUBY SAFE] Allow the execution of ruby
|
78
|
+
code
|
79
|
+
\-X, \-\-[no\-]allow\-exec Allow the execution of helper
|
80
|
+
applications
|
81
|
+
\-\-[no\-]external
|
82
|
+
|
83
|
+
|
84
|
+
LaTeX Formatter:
|
85
|
+
\-\-[no\-]pdf Prepare for use with pdf(la)tex
|
86
|
+
|
87
|
+
|
88
|
+
Available input defintions:
|
89
|
+
deplate, deplate\-headings, deplate\-restricted, rdoc, template
|
90
|
+
|
91
|
+
|
92
|
+
Available formatters:
|
93
|
+
dbk\-article, dbk\-article\-4\&.1\&.2, dbk\-book, dbk\-ref, dbk\-slides,
|
94
|
+
dbk\-snippet, html, html\-snippet, htmlsite, htmlslides, htmlwebsite,
|
95
|
+
latex, latex\-snippet, php, phpsite, plain, template, xhtml10t
|
96
|
+
|
97
|
+
|
98
|
+
Available metadata formats:
|
99
|
+
marshal, xml, yaml
|
100
|
+
|
101
|
+
|
102
|
+
Available modules:
|
103
|
+
anyword, babelfish, code\-gvim, code\-highlight, colored\-log, de,
|
104
|
+
en, endnotes, fr, html\-asciimath, html\-deplate\-button, html\-headings\-navbar,
|
105
|
+
html\-obfuscate\-email, html\-sidebar, htmlslides\-navbar\-fh, iconv,
|
106
|
+
imgurl, inlatex\-compound, koma, latex\-emph\-table\-head, latex\-styles,
|
107
|
+
latex\-verbatim\-small, makefile, mark\-external\-urls, markup\-1,
|
108
|
+
markup\-1\-warn, navbar\-png, noindent, numpara, particle\-math,
|
109
|
+
php\-extra, pstoedit, recode, ru_koi8\-r, smiley, soffice, symbols\-latin1,
|
110
|
+
symbols\-od\-utf\-8, symbols\-plain, symbols\-sgml, symbols\-utf\-8,
|
111
|
+
symbols\-xml, syntax\-region\-alt, utf8, validate\-html, xmlrpc,
|
112
|
+
zh\-cn, zh\-cn\-autospace
|
113
|
+
|
114
|
+
|
115
|
+
Available css files:
|
116
|
+
article, deplate, heading\-navbar, layout\-deplate, layout\-deplate\-print,
|
117
|
+
sans\-serif, serif, serif\-e, serif\-rel, slides, tabbar, tabbar\-left,
|
118
|
+
tabbar\-right, tabbar\-right\-ie, tabbar\-top, text\-sans\-serif, text\-serif
|
119
|
+
|
120
|
+
|
121
|
+
Available templates:
|
122
|
+
CVS, html\-doc\&.html, html\-left\-tabbar\-js\&.html, html\-left\-tabbar\&.html,
|
123
|
+
html\-tabbar\-right\-table\&.html, html\-tabbar\-right\&.html, html\-tabbar\-top\&.html,
|
124
|
+
html\-tabbar\&.html
|
125
|
+
|
126
|
+
|
127
|
+
Other Options:
|
128
|
+
\-\-debug [LEVEL] Show debug messages
|
129
|
+
\-\-[no\-]profile Profile execution
|
130
|
+
\-\-[no\-]quiet Be quiet
|
131
|
+
\-v, \-\-[no\-]verbose Run verbosely
|
132
|
+
\-h, \-\-help Show this message
|
133
|
+
\-\-version Show version
|
134
|
+
\-\-microversion Show version
|
135
|
+
|
136
|
+
.PP
|
137
|
+
Typical uses of deplate are:
|
138
|
+
|
139
|
+
.TP
|
140
|
+
deplate \-D auxiliaryDirSuffix=_files text\&.txt
|
141
|
+
Convert the file to html; put auxiliary files that are created during the conversion process into a subdirectory called �text_files�
|
142
|
+
|
143
|
+
.TP
|
144
|
+
deplate \-d DESTDIR \-f htmlslides text*\&.txt
|
145
|
+
Convert a bunch of files to �html slides�; put the output into �DESTDIR�
|
146
|
+
|
147
|
+
.TP
|
148
|
+
deplate \-f latex \-\-pdf \-D suffix=txt text*\&.txt
|
149
|
+
Convert a bunch of files to a single LaTeX file and prepare for pdflatex; assume that the wiki files have a �txt� extension; wiki names referring to included files are transformed to internal references
|
150
|
+
|
151
|
+
.TP
|
152
|
+
deplate \-R \-p �\\*\&.txt� \-D suffix=txt \-o \&.\&./Wiki\&.tex WikiIndex\&.txt *
|
153
|
+
Convert all files in the current directory and below to a single LaTeX file; include only files with �txt� as suffix; put WikiIndex\&.txt first
|
154
|
+
|
155
|
+
.TP
|
156
|
+
deplate \-R \-e \-d \&.\&./Wiki_html *
|
157
|
+
Convert all files in the current directory and its subdirectories to html; save the output in directory Wiki_html; rebuild the directory structure of the input files
|
158
|
+
|
159
|
+
.TP
|
160
|
+
deplate \- < INPUT > OUTPUT
|
161
|
+
Work as a filter by converting the input from stdin; this doesn�t actually work like a pipe though because all the input has to be read in order to generate the output
|
162
|
+
|
163
|
+
.TP
|
164
|
+
deplate \-x \-X file\&.txt
|
165
|
+
Convert a file and allow the evaluation of embedded ruby code and the execution of external applications, e\&.g\&., latex\&. These command switches are necessary for some language elements to work\&.
|
166
|
+
|
167
|
+
.PP
|
168
|
+
Notes:
|
169
|
+
|
170
|
+
.TP
|
171
|
+
\-D VAR, \-D VAR=VALUE
|
172
|
+
You can define document variables via the command line; if no value is provided the variable is set to �1�\&.
|
173
|
+
|
174
|
+
The option parser library, which deplate uses, doesn�t deal well with spaces in command line arguments\&. This is why spaces have to be replaced with tildes; a tilde and backslashes have to be preceded with backslashes\&. Example: \-D\~text=bla~bla\\~bla sets the document variable text to �bla bla~bla�\&. As a shell usually interpretes backslashes too, you would usually have to type \-D\~text=bla~bla\\\\~bla\&.
|
175
|
+
|
176
|
+
.TP
|
177
|
+
\-e
|
178
|
+
Process each file separately
|
179
|
+
|
180
|
+
.TP
|
181
|
+
\-m, \-\-module MODULE
|
182
|
+
Load an add\-on/module (after loading the core and the formatter); modules reside in the deplate library directory or in the user configuration directory (�~/\&.deplate/mod/�); type deplate\~\-\-help to see a list of available modules\&.
|
183
|
+
|
184
|
+
After loading the module, deplate searches for the file �~/\&.deplate/after/mod/NAME\&.rb� which will be loaded if found\&.
|
185
|
+
|
186
|
+
German, Chinese, and Russian localizations are provided as modules\&.
|
187
|
+
|
188
|
+
.TP
|
189
|
+
\-p PATTERN, \-P PATTERN
|
190
|
+
Backslashes in the pattern must come in doubles; backslashes can be used to prevent the shell from expanding the pattern; e\&.g\&., in case you�re using bash, you would usually type something like \-p\~"\\\\*\&.txt"
|
191
|
+
|
192
|
+
.TP
|
193
|
+
\-x, \-\-allow\-ruby [RUBY SAFE]
|
194
|
+
Ruby�s SAFE variable has 5 levels (0=no checks/default \&.\&. 4=sandbox; at present, this also sets the SAFE variable for deplate itself, which doesn�t work with SAFE set to 4)
|
195
|
+
|
196
|
+
.TP
|
197
|
+
\-X, \-\-[no\-]allow\-exec, \-\-[no\-]external
|
198
|
+
Allow the execution of external applications, e\&.g\&., LaTeX\&. You won�t be able to translate inline LaTeX unless you call deplate with this command line option\&. In order to make this permanent, see\~[xref to anchor]\&.
|
199
|
+
|
200
|
+
.TP
|
201
|
+
\-A, \-\-allow FLAGS
|
202
|
+
Flags is a list of comma separated letters which may contain:
|
203
|
+
|
204
|
+
.RS
|
205
|
+
|
206
|
+
.TP
|
207
|
+
x
|
208
|
+
Same as \-x
|
209
|
+
|
210
|
+
.TP
|
211
|
+
X
|
212
|
+
Same as \-X
|
213
|
+
|
214
|
+
.TP
|
215
|
+
:
|
216
|
+
Allow referencing options by prepending a name with �:� in some situations (e\&.g\&. #IF tests)\&.
|
217
|
+
|
218
|
+
.RE
|
219
|
+
.IP
|
220
|
+
|
221
|
+
.PP
|
222
|
+
Some variables change the way deplate works\&.
|
223
|
+
|
224
|
+
.TP
|
225
|
+
autoFileNames
|
226
|
+
In multi\-file output, the file name is constructed from the top heading unless explicitely defined (id, caption, shortcaption)
|
227
|
+
|
228
|
+
.TP
|
229
|
+
auxiliaryDirSuffix
|
230
|
+
If defined, auxiliary files are saved in the subdirectory #{basename\~FILENAME}#{auxiliaryDirSuffix}\&. E\&.g\&., if auxiliaryDirSuffix is �_files� and the current file is �Test�, then auxiliary files (images, on\-the\-fly generated files that are passed to external applications etc\&.) are saved in �Test_files�\&.
|
231
|
+
|
232
|
+
.SS "Editor support"
|
233
|
+
|
234
|
+
.PP
|
235
|
+
As whitespace is significant in the context of lists and the like, you should not insert tab characters in the document but replace tabs with blanks/spaces\&. Most editors can be tweaked to work this way\&.
|
236
|
+
|
237
|
+
.PP
|
238
|
+
If you absolutely want to insert tab characters or if you don�t know how to keep your editor from inserting tabs, you can set the tabwidth (default: 4) variable to the tab width setting of your editor\&. deplate will then try to expand tab characters\&.
|
239
|
+
|
240
|
+
.PP
|
241
|
+
deplate is the accompanying converter for the Vim viki plugin: \fIhttp://www.vim.org/scripts/script.php?script_id=861\fR, which supports all of deplate�s default markup\&.
|
242
|
+
|
243
|
+
.SH "CONFIGURATION"
|
244
|
+
|
245
|
+
.PP
|
246
|
+
Configuration requires some knowledge of the ruby language\&. If you don�t already know ruby, ruby is a well designed, \fIfully\fR object\-oriented interpreted language in the spirit of Smalltalk (but with a rather modern syntax) plus some features from Perl and Lisp/Scheme (e\&.g\&. continuations)\&.
|
247
|
+
|
248
|
+
.PP
|
249
|
+
The configuration files are regular ruby files and are loaded after requiring all the libraries necessary\&. Theses files reside in the directory �$HOME/\&.deplate/� or �$USERPROFILE/deplate\&.rc/�\&. This directory may also contain custom modules or css files etc\&. On Win 2000/XP etc\&., $USERPROFILE is usually set to �C:\\Documents and Settings\\USERNAME\\�\&. See also\~?? for how to add new elements, particles, macros etc\&.
|
250
|
+
|
251
|
+
.PP
|
252
|
+
The user configuration directory should look like this:
|
253
|
+
|
254
|
+
.TP 3
|
255
|
+
\(bu
|
256
|
+
~/\&.deplate/
|
257
|
+
|
258
|
+
.RS
|
259
|
+
.TP 3
|
260
|
+
\(bu
|
261
|
+
config\&.rb (the general user configuration file, which is loaded last)
|
262
|
+
.TP
|
263
|
+
\(bu
|
264
|
+
deplate\&.ini (an alternative way to configure deplate)
|
265
|
+
.TP
|
266
|
+
\(bu
|
267
|
+
after/ (files that are loaded right after the corresponding formatter or module)
|
268
|
+
|
269
|
+
.RS
|
270
|
+
.TP 3
|
271
|
+
\(bu
|
272
|
+
fmt/
|
273
|
+
.TP
|
274
|
+
\(bu
|
275
|
+
input/
|
276
|
+
.TP
|
277
|
+
\(bu
|
278
|
+
mod/
|
279
|
+
.LP
|
280
|
+
.RE
|
281
|
+
.IP
|
282
|
+
.TP
|
283
|
+
\(bu
|
284
|
+
css/ (user defined css files)
|
285
|
+
.TP
|
286
|
+
\(bu
|
287
|
+
fmt/ (user defined formatters)
|
288
|
+
.TP
|
289
|
+
\(bu
|
290
|
+
input/ (user defined input definitions)
|
291
|
+
.TP
|
292
|
+
\(bu
|
293
|
+
lib/ (user defined deplate snippets)
|
294
|
+
|
295
|
+
.RS
|
296
|
+
.TP 3
|
297
|
+
\(bu
|
298
|
+
FORMATTER/ (output\-format specific deplate snippets)
|
299
|
+
.LP
|
300
|
+
.RE
|
301
|
+
.IP
|
302
|
+
.TP
|
303
|
+
\(bu
|
304
|
+
mod/ (user defined modules)
|
305
|
+
.TP
|
306
|
+
\(bu
|
307
|
+
templates/ (user defined templates)
|
308
|
+
.LP
|
309
|
+
.RE
|
310
|
+
.IP
|
311
|
+
.LP
|
312
|
+
|
313
|
+
.PP
|
314
|
+
If the user requests loading �MODULE�, deplate searches for �~/\&.deplate/mod/MODULE\&.rb� first, then in ruby site\-library\&. If it was found and loaded, the file �~/\&.deplate/after/mod/MODULE\&.rb� will be sourced, too \-\- if available\&.
|
315
|
+
|
316
|
+
.PP
|
317
|
+
deplate calls the class method Deplate::Core\&.user_setup after processing the command line argumend\&. It calls the instance method Deplate#user_initialize after the new instance of the deplate converter was created and initialized, right before actually performing the conversion\&.
|
318
|
+
|
319
|
+
.PP
|
320
|
+
In general, configuration is done by patching ruby classes\&. In the following example, we
|
321
|
+
|
322
|
+
.TP 3
|
323
|
+
\(bu
|
324
|
+
restrict the markers for unordered lists to �#�
|
325
|
+
.TP
|
326
|
+
\(bu
|
327
|
+
define Koma\-Script�s article class as the default latex class
|
328
|
+
.LP
|
329
|
+
|
330
|
+
.IP
|
331
|
+
|
332
|
+
class Deplate::List::Itemize
|
333
|
+
@rx = /^(([ \\t]+)(#)[ \\t]+)(\&.+)$/
|
334
|
+
end
|
335
|
+
|
336
|
+
class Deplate::Formatter::LaTeX
|
337
|
+
@@latexDocClass = "scrartcl"
|
338
|
+
end
|
339
|
+
|
340
|
+
.PP
|
341
|
+
Here is another example from my personal �after/fmt/latex\&.rb� file\&.
|
342
|
+
|
343
|
+
.IP
|
344
|
+
|
345
|
+
class Deplate::Formatter::LaTeX
|
346
|
+
def hook_pre_prepare_my_configuration
|
347
|
+
suppl = @deplate\&.variables["suppl"] #1
|
348
|
+
suppl &&= "[" + suppl + "]"
|
349
|
+
output_at(:pre, :user_packages, "\\\\usepackage#{suppl}{suppl}")
|
350
|
+
|
351
|
+
t = @deplate\&.get_clip("title") #2
|
352
|
+
output_at(:pre, :body_title, "\\\\tmltitle{#{t\&.elt}}") if t
|
353
|
+
a = @deplate\&.get_clip("author")
|
354
|
+
output_at(:pre, :body_title, "\\\\tmlauthor{#{a\&.elt}}") if a
|
355
|
+
d = @deplate\&.get_clip("date")
|
356
|
+
output_at(:pre, :body_title, "\\\\tmldate{#{d\&.elt}}") if d
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
360
|
+
.TP 3
|
361
|
+
1.
|
362
|
+
Add a usepackage statement to the preamble \-\- with optional arguments from the �suppl� variable: \fImarkup.xml#docCmd\fR\&.
|
363
|
+
.TP
|
364
|
+
2.
|
365
|
+
extracts information about the document�s title and author (see\~??) and adds some user\-defined commands to the document preamble \-\- but below any usepackage statements (see\~??)
|
366
|
+
.LP
|
367
|
+
|
368
|
+
.SS "User configuration of the standard setup"
|
369
|
+
|
370
|
+
.PP
|
371
|
+
deplate calls the methods Deplate::Core\&.user_setup(options) and Deplate::Core#user_initialize if they are defined in order to provide a possibility to hook into the standard setup procedure\&.
|
372
|
+
|
373
|
+
.PP
|
374
|
+
Deplate::Core\&.user_setup is called when starting deplate from the command line and before a instance of Deplate::Core was created\&. This method should be used to set values in the options structure (see\~??) or to permanently require one of deplate�s modules\&.
|
375
|
+
|
376
|
+
.PP
|
377
|
+
Deplate::Core#user_initialize is called after an instance of Deplate::Core was created and should be used to set variables specific to this instance\&.
|
378
|
+
|
379
|
+
.IP
|
380
|
+
|
381
|
+
class Deplate::Core
|
382
|
+
def self\&.user_setup(options)
|
383
|
+
options\&.field_name = 'some value'
|
384
|
+
require_module(options, 'NAME')
|
385
|
+
end
|
386
|
+
|
387
|
+
def user_initialize
|
388
|
+
@variables['NAME'] = 'VALUE'
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
392
|
+
.SS "Configuration of wiki names"
|
393
|
+
|
394
|
+
.PP
|
395
|
+
Usually, any word in CamelCase (a\&.k\&.a\&. wiki name) is turned into a hyperlink\&. By default only the letters A\-Z and a\-z are allowed here in order to minimize possible conflicts between different encodings and different versions of ruby on different systems with different locales in effect\&. If this doesn�t fit your needs, maybe because you happen to write in a language other than English, which is possible and maybe even likely, you might want to change this\&. Add something like this with the new character sets to your config\&.rb file:
|
396
|
+
|
397
|
+
.IP
|
398
|
+
|
399
|
+
class Deplate::HyperLink
|
400
|
+
@@uc = 'A\-Z���'
|
401
|
+
@@lc = 'a\-z��������������'
|
402
|
+
end
|
403
|
+
|
404
|
+
# the following re\-compiles the regexps for wiki names
|
405
|
+
Deplate::HyperLink\&.setup
|
406
|
+
|
407
|
+
.SS "Configuration via deplate.ini"
|
408
|
+
|
409
|
+
.PP
|
410
|
+
If you don�t want to configure deplate using ruby, you can put some settings into the deplate\&.ini file, which usually resides in ~/\&.depate and/or #{PWD}/deplate\&.rc\-\-but see\~[xref to refsect1]\&.
|
411
|
+
|
412
|
+
.PP
|
413
|
+
This file contains a sequence of commands\&. Each command must fit in one line\&. The following commands are allowed:
|
414
|
+
|
415
|
+
.TP
|
416
|
+
mod\~NAME
|
417
|
+
Load the module NAME
|
418
|
+
|
419
|
+
.TP
|
420
|
+
fmt\~NAME
|
421
|
+
Set the standard formatter
|
422
|
+
|
423
|
+
.TP
|
424
|
+
clip\~NAME=VALUE
|
425
|
+
Set the clip NAME (e\&.g\&., �author�) to VALUE
|
426
|
+
|
427
|
+
.TP
|
428
|
+
wiki\~NAME\&.SUFFIX=BASEURL
|
429
|
+
Define an interwiki (the \&.SUFFIX part is optional)
|
430
|
+
|
431
|
+
.TP
|
432
|
+
wikichars\~UPPERCHARS\~LOWERCHARS
|
433
|
+
Define the allowed characters in wiki names
|
434
|
+
|
435
|
+
.RS
|
436
|
+
.Sh "Important"
|
437
|
+
|
438
|
+
.PP
|
439
|
+
Wiki names must always begin with A\-Z even then wiki chars were redefined (at least until ruby�s regexp library makes \\b match properly against words starting with an international upper case character)
|
440
|
+
|
441
|
+
.RE
|
442
|
+
|
443
|
+
.TP
|
444
|
+
app\~NAME=COMMANDLINE
|
445
|
+
Define an external app (e\&.g\&., latex, dvips, R, dot, neato, pstoedit, identify, gs \&.\&.\&.)
|
446
|
+
|
447
|
+
.TP
|
448
|
+
$ENV=VALUE
|
449
|
+
Set an environment variable
|
450
|
+
|
451
|
+
.TP
|
452
|
+
VAR=VALUE
|
453
|
+
Set variable VAR to VALUE
|
454
|
+
|
455
|
+
.RS
|
456
|
+
.TP 3
|
457
|
+
\(bu
|
458
|
+
Alternatively, variables can contain multi\-line values using the usual heredoc pattern (<<MARKER\\nTEXT\&.\&.\&.\\nMARKER\\n) as long as the smaller characters (�<<�) appear right after the equals sign\&. Internally, a multi\-line value is processed as array\&.
|
459
|
+
.LP
|
460
|
+
.RE
|
461
|
+
.IP
|
462
|
+
|
463
|
+
.PP
|
464
|
+
Although this may not always work as expected, you can also set some options (as defined in \~??) by prepending the name with a colon (�:�) or by using the option keyword:
|
465
|
+
|
466
|
+
.TP
|
467
|
+
option\~NAME~
|
468
|
+
Set option NAME to false
|
469
|
+
|
470
|
+
.TP
|
471
|
+
option\~NAME!
|
472
|
+
Set option NAME to true
|
473
|
+
|
474
|
+
.TP
|
475
|
+
option\~NAME?=true|false|yes|no|on|off
|
476
|
+
Set option NAME to a boolean value
|
477
|
+
|
478
|
+
.TP
|
479
|
+
option\~NAME%=INTEGER
|
480
|
+
Set option NAME to a numeric value
|
481
|
+
|
482
|
+
.TP
|
483
|
+
option\~NAME=VALUE
|
484
|
+
Set option NAME to VALUE as string
|
485
|
+
|
486
|
+
.PP
|
487
|
+
Lines beginning with one of *%#; are considered comments\&.
|
488
|
+
|
489
|
+
.PP
|
490
|
+
Example deplate\&.ini:
|
491
|
+
|
492
|
+
.IP
|
493
|
+
|
494
|
+
# Load some standard modules
|
495
|
+
mod de
|
496
|
+
mod mark\-external\-urls
|
497
|
+
mod colored\-log
|
498
|
+
|
499
|
+
# Applications
|
500
|
+
app dot=/somewhere/not/in/the/standard/path/dot
|
501
|
+
|
502
|
+
# Clips
|
503
|
+
clip author=Thomas Link
|
504
|
+
|
505
|
+
# Options
|
506
|
+
option allow_exec!
|
507
|
+
option allow_ruby!
|
508
|
+
|
509
|
+
# By default, use only a subset of deplate's standard markup
|
510
|
+
option input_def=deplate\-restricted
|
511
|
+
|
512
|
+
# Create latex output by default
|
513
|
+
option fmt=latex
|
514
|
+
|
515
|
+
# Wikis
|
516
|
+
wikichars A\-Z��� a\-z��������������
|
517
|
+
wiki DEPLATE\&.html=http://deplate\&.sf\&.net/
|
518
|
+
|
519
|
+
# Variables
|
520
|
+
## HTML
|
521
|
+
css=deplate\&.css
|
522
|
+
|
523
|
+
topBar=<<\-\-\-\-
|
524
|
+
[auto]
|
525
|
+
MyOtherHomepage | http://www\&.homepage\&.org
|
526
|
+
\-\-\-\-
|
527
|
+
|
528
|
+
## Save auxiliary files in a subdirectory (BASENAME_files)
|
529
|
+
auxiliaryDirSuffix=_files
|
530
|
+
|
531
|
+
.SS "Templates"
|
532
|
+
|
533
|
+
.PP
|
534
|
+
deplate supports two ways of page templates:
|
535
|
+
|
536
|
+
.TP 3
|
537
|
+
1.
|
538
|
+
Template variables
|
539
|
+
.TP
|
540
|
+
2.
|
541
|
+
Template files
|
542
|
+
.LP
|
543
|
+
|
544
|
+
.PP
|
545
|
+
You can define a template in ruby by setting the following Deplate class variables:
|
546
|
+
|
547
|
+
.TP 3
|
548
|
+
\(bu
|
549
|
+
these variables (array of arrays of strings) can be redefined in Deplate::Core\&.user_setup to put some formatted output on every page/file
|
550
|
+
|
551
|
+
.RS
|
552
|
+
.TP 3
|
553
|
+
\(bu
|
554
|
+
@@pre_matter_template
|
555
|
+
.TP
|
556
|
+
\(bu
|
557
|
+
@@body_template
|
558
|
+
.TP
|
559
|
+
\(bu
|
560
|
+
@@post_matter_template
|
561
|
+
.LP
|
562
|
+
.RE
|
563
|
+
.IP
|
564
|
+
.TP
|
565
|
+
\(bu
|
566
|
+
this variable (array of strings) can contain some deplate markup that will be prepended to every file read
|
567
|
+
|
568
|
+
.RS
|
569
|
+
.TP 3
|
570
|
+
\(bu
|
571
|
+
@@deplate_template
|
572
|
+
.LP
|
573
|
+
.RE
|
574
|
+
.IP
|
575
|
+
.LP
|
576
|
+
|
577
|
+
.PP
|
578
|
+
Typical use would be (in your config\&.rb file)
|
579
|
+
|
580
|
+
.IP
|
581
|
+
|
582
|
+
class Deplate
|
583
|
+
def self\&.user_setup(options)
|
584
|
+
if options\&.fmt =~ /^html/
|
585
|
+
@@post_matter_template[10] = ['<br>\\n(c) 2004, Me']
|
586
|
+
end
|
587
|
+
@@deplate_template << '#AU: My Name'
|
588
|
+
end
|
589
|
+
end
|
590
|
+
|
591
|
+
.PP
|
592
|
+
Via the \-t or \-\-template command\-line option or by setting the template document variable (see\~??), you can define simple text templates that will be filled in with content from your deplate file\&.
|
593
|
+
|
594
|
+
.PP
|
595
|
+
Since version 0\&.7, deplate uses a specialized formatter for handling templates\&. Before 0\&.7, this was done by search & replace\&. If you have pre 0\&.7 templates which don�t work any more, you can switch back to the old template mechanism by setting the document option: \fImarkup.xml#docOpt\fR template_version to 1\&.
|
596
|
+
|
597
|
+
.PP
|
598
|
+
In templates, only a small number of statements are available:
|
599
|
+
|
600
|
+
.TP
|
601
|
+
Commands
|
602
|
+
GET, ARG, XARG, VAR, OPT, PREMATTER, POSTMATTER, BODY, IF, ELSE, ELSEIF, ENDIF, INC/INCLUDE
|
603
|
+
|
604
|
+
.TP
|
605
|
+
Regions
|
606
|
+
Foreach, Mingle, Ruby, Var
|
607
|
+
|
608
|
+
.TP
|
609
|
+
Macros
|
610
|
+
get, clip, opt, arg, xarg, doc, ruby
|
611
|
+
|
612
|
+
.PP
|
613
|
+
The commands PREMATTER, POSTMATTER, BODY as well as the Mingle region are specific to templates\&.
|
614
|
+
|
615
|
+
.PP
|
616
|
+
PREMATTER, POSTMATTER, and BODY can be used to fill in formatted content (see\~?? for an explanation of deplate�s document structure):
|
617
|
+
|
618
|
+
.TP
|
619
|
+
#PREMATTER
|
620
|
+
The file header, the beginning of the document definition, some text that in multi\-file mode should appear in every output file
|
621
|
+
|
622
|
+
.TP
|
623
|
+
#BODY
|
624
|
+
The text body
|
625
|
+
|
626
|
+
.TP
|
627
|
+
#POSTMATTER
|
628
|
+
Some text that in multi\-file mode should appear in every output file, the end of document definition
|
629
|
+
|
630
|
+
.PP
|
631
|
+
These commands take a list of slots (named or as numbers) as arguments (see\~??)\&. The slots can be single slots or ranges\&. They can be positive (add selectively) or negative (add with the exception of certain content)\&. Examples:
|
632
|
+
|
633
|
+
.TP
|
634
|
+
#PREMATTER:\~\-doc_def
|
635
|
+
add the prematter without the document type definition
|
636
|
+
|
637
|
+
.TP
|
638
|
+
#PREMATTER:\~doc_def\~mod_packages\~mod_head
|
639
|
+
add the document type definition, and stuff added by modules
|
640
|
+
|
641
|
+
.TP
|
642
|
+
#PREMATTER:\~head_beg\&.\&.prematter_end
|
643
|
+
add everything from the head on downwards
|
644
|
+
|
645
|
+
.PP
|
646
|
+
A slot cannot be consumed twice\&. I\&.e\&., if you use several template commands, the latter will not insert the content that was already inserted by the previous command\&.
|
647
|
+
|
648
|
+
.PP
|
649
|
+
The Mingle region can be used to add some text to a specific slot in the original document\&. Filling in templates takes place after the document was produced\&. A template actually processed by deplate like normal text but with a different active rule set\&. Thus, if you define a slot or a type for a region in the template file these definitions refer to the template output which usually is not quite what you want\&. You can use Mingle to make them refer to the original document\&. See html\-left\-tabbar\-js\&.html in the templates subdirectory of the distribution for an example\&.
|
650
|
+
|
651
|
+
.PP
|
652
|
+
Curly braces in templates could cause problems because deplate maybe interpretes them as macros\&. If deplate mixes up your template, you should prefix these curly braces that cause problems with a backslash\&.
|
653
|
+
|
654
|
+
.PP
|
655
|
+
Backslashes have always to be doubled\&.
|
656
|
+
|
657
|
+
.PP
|
658
|
+
A LaTeX template could then look like this:
|
659
|
+
|
660
|
+
.IP
|
661
|
+
|
662
|
+
|
663
|
+
\\\\documentclass[12pt,a4paper]{letter}
|
664
|
+
|
665
|
+
#PREMATTER: \-doc_def
|
666
|
+
|
667
|
+
\\\\address{{get: author}\\\\\\\\
|
668
|
+
Where I live}
|
669
|
+
\\\\signature{{get: author}}
|
670
|
+
|
671
|
+
\\\\begin{letter}{{get: addresseeAddress}}
|
672
|
+
|
673
|
+
\\\\opening{Dear {get: addresseeName},}
|
674
|
+
|
675
|
+
#BODY
|
676
|
+
|
677
|
+
\\\\closing{Sincerly,}
|
678
|
+
|
679
|
+
\\\\vfill{}
|
680
|
+
\\\\encl{{val: enclosure}}
|
681
|
+
|
682
|
+
\\\\end{letter}
|
683
|
+
|
684
|
+
#POSTMATTER
|
685
|
+
|
686
|
+
.PP
|
687
|
+
You could now copy this example template to �~/\&.deplate/templates/letter\&.tex� and call deplate as:
|
688
|
+
|
689
|
+
.IP
|
690
|
+
|
691
|
+
deplate \-f latex \-t letter\&.tex DEPLATE\&.FILE
|
692
|
+
|