1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#!/usr/bin/env ruby
require 'erb'
require 'scriptingutils'
# doit - make all or some example picture sets.
# Usage: doit # make them all
# doit nnx # make nnx.pdf and snnx.pdf
#
# pictures are numbered 01, 02, etc.
# nn[a-z] has code to typeset a \ctable; for nn[k-z] page layout will be shown
# for each nn[a-z] two pdfs are generated:
# nn[a-z].pdf for the ctable picture
# and snn[a-z].pdf for the source code verbatim.
# The number of digits (nn) is set with DIGS
# The prefix (s) for source verbatims and (empty) for result files is set by PRE
# Windows users should replace NULL with perhaps "c:/temp/null"
DIGS = 2
ALL = Dir["[0-9]"*DIGS+"[a-z]"].sort
PRE = ['s','']
# clean up directory
# all = false: keep pdf's
# all = true: remove pdf's, too
def clean(all=false)
ALL.map{|x| PRE.map{|y| y+x }}.flatten.each do |f|
exts = %w{aux tex log chk fls out}
exts << 'pdf' if all
exts.each do |e|
fe = "#{f}.#{e}"
File.delete(fe) if File.exist?(fe)
end
end
exit(0)
end
@quiet = false
def handle_options
ARGV.options do |opt|
opt.banner = "Create example images\n"
opt.banner << "No arguments: create them all\n"
opt.banner << "Example: ./#{MYNAME} 03? # creates 03a.pdf, 03b.pdf, s03a.pdf, and s03b.pdf"
opt.separator ""
opt.on('-h','--help','print this help and exit') do puts opt.help; exit end
opt.on("-c","--clean","Clean up, but keep pdf files") do clean end
opt.on("-C","--Clean","Clean up, including pdf files") do clean(true) end
opt.on("-q","--quiet","Be silent") do @quiet = true end
opt.parse!
end
end
init(nil,:handle_options)
set = ARGV.empty? ? ALL : ARGV
tex = DATA.readlines("\n\n") # tex[0] -> source verbatim, tex[1] -> result
set.each do |j|
puts j unless @quiet
0.upto(1) do |i|
f = "#{PRE[i]}#{j}"
open(f+'.tex','w') do |o| o.print ERB.new(tex[i]).result(binding) end
sys("pdflatex --interaction=nonstopmode #{f}")
sys("pdfcrop #{f}.pdf #{f}.pdf")
end
end
# $Id: doit,v 1.9 2012/08/17 18:03:20 wybo Exp $
__END__
\documentclass{article}
\usepackage[a4paper,margin=20mm,noheadfoot]{geometry}
\pagestyle{empty}
\begin{document}\ttfamily
\fontsize{10}{12 pt}\selectfont
\begin{verbatim}<%= open(j).readlines.delete_if {|x| x =~ /\$Id|remove for source/ }.join %>\end{verbatim}
\end{document}
\documentclass[twoside]{article}
<% if j =~ /[k-z]$/ %>
\usepackage[papersize={65mm,40mm},showframe,margin=1mm,noheadfoot]{geometry}
<% end %>
\usepackage{ctable}
\usepackage{txfonts}
\pagestyle{empty}
\parindent0pt
\begin{document}
<%= open(j).readlines.delete_if {|x| x =~ /\$Id/ }.join %>
\end{document}
|