tioga 1.14 → 1.15
Sign up to get free protection for your applications and to get access to all the features.
- data/Tioga_README +14 -7
- data/ext/Dobjects/Dvector/dvector.c +148 -1
- data/ext/Dobjects/Dvector/dvector_intern.h +4 -0
- data/ext/Tioga/FigureMaker/generic.c +1 -1
- data/lib/Tioga/FigMkr.rb +1 -1
- data/lib/Tioga/TexPreamble.rb +372 -0
- data/tests/Icon_Test.pdf +0 -0
- data/tests/tc_Dvector.rb +36 -0
- data/tests/vg.log +1453 -0
- metadata +25 -38
data/Tioga_README
CHANGED
@@ -22,13 +22,8 @@ This is the README for the Tioga kernel, version 1.14, June 10, 2011.
|
|
22
22
|
|
23
23
|
<< What's new >>
|
24
24
|
|
25
|
-
Tioga 1.
|
26
|
-
|
27
|
-
too !).
|
28
|
-
|
29
|
-
It also brings in the possibility to customize the number of major
|
30
|
-
ticks after which log plots don't show minor ticks, via the
|
31
|
-
log_minor_ticks_limit accessor.
|
25
|
+
Tioga 1.15 brings in some new iterators in Dvector and some minor
|
26
|
+
bug fixes (in particular for gem builds).
|
32
27
|
|
33
28
|
<< Quick Installation of Tioga >>
|
34
29
|
|
@@ -172,6 +167,17 @@ Bill Paxton
|
|
172
167
|
|
173
168
|
Here are the old release messages:
|
174
169
|
|
170
|
+
Tioga 1.14 fixes all known problems of Tioga with Ruby 1.9.1 and
|
171
|
+
higher (to the point that it runs with ctioga2, and the samples run
|
172
|
+
too !).
|
173
|
+
|
174
|
+
It also brings in the possibility to customize the number of major
|
175
|
+
ticks after which log plots don't show minor ticks, via the
|
176
|
+
log_minor_ticks_limit accessor.
|
177
|
+
|
178
|
+
--------------------------------------------------
|
179
|
+
|
180
|
+
|
175
181
|
Tioga 1.13 brings in a fix for a well-hidden memory leak that was
|
176
182
|
unlikely to hit you unless you were allocating a huge number of
|
177
183
|
vectors.
|
@@ -180,6 +186,7 @@ vectors.
|
|
180
186
|
FigureMaker's internal state (color conversion functions and
|
181
187
|
contouring algorithms) were made available as module functions too.
|
182
188
|
|
189
|
+
--------------------------------------------------
|
183
190
|
|
184
191
|
Tioga 1.12 has seen quite a lot of action. The first and major
|
185
192
|
change is the switch from a custom rewrite of mkmf.rb for
|
@@ -1199,6 +1199,40 @@ PRIVATE
|
|
1199
1199
|
return ary;
|
1200
1200
|
}
|
1201
1201
|
|
1202
|
+
PRIVATE
|
1203
|
+
/*
|
1204
|
+
* call-seq:
|
1205
|
+
* dvector.each3(other1, other2) {|x,y, z| block }
|
1206
|
+
*
|
1207
|
+
* Calls <i>block</i> once for each element in _dvector_, passing that
|
1208
|
+
* element as a parameter along with the corresponding element from the _other1_ and _other2_ vectors.
|
1209
|
+
* The three vectors must be the same length.
|
1210
|
+
*
|
1211
|
+
* a = Dvector[ 1, 0, -1 ]
|
1212
|
+
* b = Dvector[ 3, 4, 5 ]
|
1213
|
+
* c = Dvector[ 6, 9, 2 ]
|
1214
|
+
* a.each3(b, c) {|x,y,z| print "(", x ",", y, ", ", z, ") " }
|
1215
|
+
*
|
1216
|
+
* produces:
|
1217
|
+
*
|
1218
|
+
* (1,3,6) (0,4,9) (-1,5,2)
|
1219
|
+
*/ VALUE dvector_each3(VALUE ary, VALUE ary2, VALUE ary3) {
|
1220
|
+
Dvector *d = Get_Dvector(ary);
|
1221
|
+
Dvector *d2 = Get_Dvector(ary2);
|
1222
|
+
Dvector *d3 = Get_Dvector(ary3);
|
1223
|
+
long i;
|
1224
|
+
if (d->len != d2->len) {
|
1225
|
+
rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for each3", d->len, d2->len);
|
1226
|
+
}
|
1227
|
+
if (d->len != d3->len) {
|
1228
|
+
rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for each3", d->len, d3->len);
|
1229
|
+
}
|
1230
|
+
for (i=0; i < d->len; i++) {
|
1231
|
+
rb_yield_values(3, rb_float_new(d->ptr[i]), rb_float_new(d2->ptr[i]), rb_float_new(d3->ptr[i]));
|
1232
|
+
}
|
1233
|
+
return ary;
|
1234
|
+
}
|
1235
|
+
|
1202
1236
|
PRIVATE
|
1203
1237
|
/*
|
1204
1238
|
* call-seq:
|
@@ -1267,6 +1301,40 @@ PRIVATE
|
|
1267
1301
|
return ary;
|
1268
1302
|
}
|
1269
1303
|
|
1304
|
+
PRIVATE
|
1305
|
+
/*
|
1306
|
+
* call-seq:
|
1307
|
+
* dvector.each3_with_index(other1, other2) {|x,y,z,i| block }
|
1308
|
+
*
|
1309
|
+
* Calls <i>block</i> once for each element in _dvector_, passing that
|
1310
|
+
* element as a parameter along with the corresponding element from the _other1_ and _other2_ vectors and the index.
|
1311
|
+
* The three vectors must be the same length.
|
1312
|
+
*
|
1313
|
+
* a = Dvector[ 1, 0, -1 ]
|
1314
|
+
* b = Dvector[ 3, 4, 5 ]
|
1315
|
+
* c = Dvector[ 6, 9, 2 ]
|
1316
|
+
* a.each3(b, c) {|x,y,z,i| print "(", x ",", y, ", ", z, ",", i, ") " }
|
1317
|
+
*
|
1318
|
+
* produces:
|
1319
|
+
*
|
1320
|
+
* (1,3,6,0) (0,4,9,1) (-1,5,2,2)
|
1321
|
+
*/ VALUE dvector_each3_with_index(VALUE ary, VALUE ary2, VALUE ary3) {
|
1322
|
+
Dvector *d = Get_Dvector(ary);
|
1323
|
+
Dvector *d2 = Get_Dvector(ary2);
|
1324
|
+
Dvector *d3 = Get_Dvector(ary3);
|
1325
|
+
long i;
|
1326
|
+
if (d->len != d2->len) {
|
1327
|
+
rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for each3", d->len, d2->len);
|
1328
|
+
}
|
1329
|
+
if (d->len != d3->len) {
|
1330
|
+
rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for each3", d->len, d3->len);
|
1331
|
+
}
|
1332
|
+
for (i=0; i < d->len; i++) {
|
1333
|
+
rb_yield_values(4, rb_float_new(d->ptr[i]), rb_float_new(d2->ptr[i]), rb_float_new(d3->ptr[i]), LONG2NUM(i));
|
1334
|
+
}
|
1335
|
+
return ary;
|
1336
|
+
}
|
1337
|
+
|
1270
1338
|
PRIVATE
|
1271
1339
|
/*
|
1272
1340
|
* call-seq:
|
@@ -1324,6 +1392,42 @@ PRIVATE
|
|
1324
1392
|
return ary;
|
1325
1393
|
}
|
1326
1394
|
|
1395
|
+
PRIVATE
|
1396
|
+
/*
|
1397
|
+
* call-seq:
|
1398
|
+
* dvector.reverse_each3(other1, other2) {|x,y,z| block }
|
1399
|
+
*
|
1400
|
+
* Same as <code>Dvector#each3</code>, but traverses vectors in reverse
|
1401
|
+
* order. The vectors must have the same size.
|
1402
|
+
*
|
1403
|
+
* a = Dvector[ 1, 0, -1 ]
|
1404
|
+
* b = Dvector[ 3, 4, 5 ]
|
1405
|
+
* c = Dvector[ 6, 9, 2 ]
|
1406
|
+
* a.reverse_each3(b, c) {|x,y,z| print "(", x ",", y, ", ", z, ") " }
|
1407
|
+
*
|
1408
|
+
* produces:
|
1409
|
+
*
|
1410
|
+
* (-1,5,2) (0,4,9) (1,3,6)
|
1411
|
+
*/ VALUE dvector_reverse_each3(VALUE ary, VALUE ary2, VALUE ary3) {
|
1412
|
+
Dvector *d = Get_Dvector(ary);
|
1413
|
+
Dvector *d2 = Get_Dvector(ary2);
|
1414
|
+
Dvector *d3 = Get_Dvector(ary3);
|
1415
|
+
long len = d->len;
|
1416
|
+
if (len != d2->len) {
|
1417
|
+
rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for reverse_each3", len, d2->len);
|
1418
|
+
}
|
1419
|
+
if (len != d3->len) {
|
1420
|
+
rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for reverse_each3", len, d3->len);
|
1421
|
+
}
|
1422
|
+
while (len--) {
|
1423
|
+
rb_yield_values(3, rb_float_new(d->ptr[len]), rb_float_new(d2->ptr[len]), rb_float_new(d3->ptr[len]));
|
1424
|
+
if (d->len < len) {
|
1425
|
+
len = d->len;
|
1426
|
+
}
|
1427
|
+
}
|
1428
|
+
return ary;
|
1429
|
+
}
|
1430
|
+
|
1327
1431
|
PRIVATE
|
1328
1432
|
/*
|
1329
1433
|
* call-seq:
|
@@ -1408,6 +1512,45 @@ PRIVATE
|
|
1408
1512
|
return ary;
|
1409
1513
|
}
|
1410
1514
|
|
1515
|
+
PRIVATE
|
1516
|
+
/*
|
1517
|
+
* call-seq:
|
1518
|
+
* dvector.reverse_each3_with_index {|x,y,z,index| block } -> dvector
|
1519
|
+
*
|
1520
|
+
* Same as <code>Dvector#each3_with_index</code>, but traverses the vectors in reverse
|
1521
|
+
* order.
|
1522
|
+
*
|
1523
|
+
* a = Dvector[ 1, 0, -1 ]
|
1524
|
+
* b = Dvector[ 3, 4, 5 ]
|
1525
|
+
* c = Dvector[ 6, 9, 2 ]
|
1526
|
+
* a.reverse_each3_with_index(b,c) {|x,y,i| print "(", x ",", y, "," i, ") " }
|
1527
|
+
* a.each3(b, c) {|x,y,z,i| print "(", x ",", y, ", ", z, ",", i, ") " }
|
1528
|
+
*
|
1529
|
+
* produces:
|
1530
|
+
*
|
1531
|
+
* (-1,5,2,2) (0,4,9,1) (1,3,6,0)
|
1532
|
+
*/ VALUE dvector_reverse_each3_with_index(VALUE ary, VALUE ary2, VALUE ary3) {
|
1533
|
+
Dvector *d = Get_Dvector(ary);
|
1534
|
+
Dvector *d2 = Get_Dvector(ary2);
|
1535
|
+
Dvector *d3 = Get_Dvector(ary3);
|
1536
|
+
long len = d->len;
|
1537
|
+
if (len != d2->len) {
|
1538
|
+
rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for reverse_each3_with_index",
|
1539
|
+
len, d3->len);
|
1540
|
+
}
|
1541
|
+
if (len != d3->len) {
|
1542
|
+
rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for reverse_each3_with_index",
|
1543
|
+
len, d3->len);
|
1544
|
+
}
|
1545
|
+
while (len--) {
|
1546
|
+
rb_yield_values(4, rb_float_new(d->ptr[len]), rb_float_new(d2->ptr[len]), rb_float_new(d3->ptr[len]), LONG2NUM(len));
|
1547
|
+
if (d->len < len) {
|
1548
|
+
len = d->len;
|
1549
|
+
}
|
1550
|
+
}
|
1551
|
+
return ary;
|
1552
|
+
}
|
1553
|
+
|
1411
1554
|
PRIVATE
|
1412
1555
|
/*
|
1413
1556
|
* call-seq:
|
@@ -3025,7 +3168,7 @@ PRIVATE
|
|
3025
3168
|
*
|
3026
3169
|
* Returns square root of the dot product of the vector with itself.
|
3027
3170
|
*
|
3028
|
-
* a = Dvector[ 3,
|
3171
|
+
* a = Dvector[ 3, 4 ]
|
3029
3172
|
* a.vector_length -> 5.0
|
3030
3173
|
*/
|
3031
3174
|
VALUE dvector_vector_length(VALUE ary) {
|
@@ -6080,6 +6223,10 @@ void Init_Dvector() {
|
|
6080
6223
|
rb_define_method(cDvector, "each2_with_index", dvector_each2_with_index, 1);
|
6081
6224
|
rb_define_method(cDvector, "reverse_each2", dvector_reverse_each2, 1);
|
6082
6225
|
rb_define_method(cDvector, "reverse_each2_with_index", dvector_reverse_each2_with_index, 1);
|
6226
|
+
rb_define_method(cDvector, "each3", dvector_each3, 2);
|
6227
|
+
rb_define_method(cDvector, "each3_with_index", dvector_each3_with_index, 2);
|
6228
|
+
rb_define_method(cDvector, "reverse_each3", dvector_reverse_each3, 2);
|
6229
|
+
rb_define_method(cDvector, "reverse_each3_with_index", dvector_reverse_each3_with_index, 2);
|
6083
6230
|
|
6084
6231
|
rb_define_method(cDvector, "collect2", dvector_collect2, 1);
|
6085
6232
|
rb_define_method(cDvector, "collect2!", dvector_collect2_bang, 1);
|
@@ -87,6 +87,10 @@ PRIVATE VALUE dvector_reverse_each2(VALUE ary, VALUE ary2);
|
|
87
87
|
PRIVATE VALUE dvector_reverse_each_index(VALUE ary);
|
88
88
|
PRIVATE VALUE dvector_reverse_each_with_index(VALUE ary);
|
89
89
|
PRIVATE VALUE dvector_reverse_each2_with_index(VALUE ary, VALUE ary2);
|
90
|
+
PRIVATE VALUE dvector_each3(VALUE ary, VALUE ary2, VALUE ary3);
|
91
|
+
PRIVATE VALUE dvector_each3_with_index(VALUE ary, VALUE ary2, VALUE ary3);
|
92
|
+
PRIVATE VALUE dvector_reverse_each3(VALUE ary, VALUE ary2, VALUE ary3);
|
93
|
+
PRIVATE VALUE dvector_reverse_each3_with_index(VALUE ary, VALUE ary2, VALUE ary3);
|
90
94
|
PRIVATE VALUE dvector_length(VALUE ary);
|
91
95
|
PRIVATE VALUE dvector_empty_p(VALUE ary);
|
92
96
|
PRIVATE VALUE dvector_dup(VALUE ary);
|
@@ -115,7 +115,7 @@ OBJ_PTR COLOR_PREAMBLE(OBJ_PTR fmkr, int *ierr) { return rb_const_get(CLASS_OF(f
|
|
115
115
|
|
116
116
|
void GIVE_WARNING(const char *fmt, const char *str) { rb_warn(fmt,str); }
|
117
117
|
|
118
|
-
void RAISE_ERROR(char *str, int *ierr) { *ierr = -1; rb_raise(rb_eArgError,str); }
|
118
|
+
void RAISE_ERROR(char *str, int *ierr) { *ierr = -1; rb_raise(rb_eArgError,"%s", str); }
|
119
119
|
|
120
120
|
#define err_buff_len 256
|
121
121
|
void RAISE_ERROR_s(char *fmt, char *s, int *ierr) {
|
data/lib/Tioga/FigMkr.rb
CHANGED
@@ -38,7 +38,7 @@ class FigureMaker
|
|
38
38
|
|
39
39
|
# This URL will contain tioga-(...) when it is exported from the
|
40
40
|
# SVN repository. This is where we'll look for version information.
|
41
|
-
SVN_URL = '$HeadURL
|
41
|
+
SVN_URL = '$HeadURL$'
|
42
42
|
|
43
43
|
TIOGA_VERSION = if SVN_URL =~ /tags\/tioga\/Tioga%20([^\/]+)/
|
44
44
|
$1
|
@@ -0,0 +1,372 @@
|
|
1
|
+
# This file is automatically generated from Tioga/tioga.sty.in
|
2
|
+
# using the Tioga/mk_tioga_sty.rb script.
|
3
|
+
#
|
4
|
+
# Please do not modify this file directly as all changes would
|
5
|
+
# be lost !!
|
6
|
+
|
7
|
+
module Tioga
|
8
|
+
class FigureMaker
|
9
|
+
TEX_PREAMBLE = <<'End_of_preamble'
|
10
|
+
\makeatletter
|
11
|
+
% Here are some command to ease the use of pictures produced by Tioga
|
12
|
+
% within a LaTeX document.
|
13
|
+
|
14
|
+
|
15
|
+
% \tiogafigurefullpage[minwhitespace]{figurename}
|
16
|
+
%
|
17
|
+
% \tiogafigurefullpage shows a version of the picture scaled to fit the
|
18
|
+
% paper size minus the minwhitespace. The minwhitespace is the sum of
|
19
|
+
% the margins on both sides, top and bottom or left and right.
|
20
|
+
% The minwhitespace defaults to 2 inches.
|
21
|
+
%
|
22
|
+
\newcommand{\tiogafigurefullpage}[2][2in]{
|
23
|
+
\tiogafigurescaledtofit{#2}{\paperwidth - (#1)}{\paperheight - (#1)}}
|
24
|
+
|
25
|
+
|
26
|
+
% \tiogafigurescaledtofit{figurename}{maxwidth}{maxheight}
|
27
|
+
%
|
28
|
+
% \tiogafigurescaledtofit shows a version of the picture scaled to fit the
|
29
|
+
% given width and height while preserving the aspect ratio.
|
30
|
+
% The 1st arg is the base name for the pdf and txt files.
|
31
|
+
% The 2nd arg determines the maximum figure width.
|
32
|
+
% The 3rd arg determines the maximum figure height.
|
33
|
+
\newcommand{\tiogafigurescaledtofit}[3]{
|
34
|
+
\setkeys{Gin}{keepaspectratio=true}
|
35
|
+
\resizebox{#2}{#3}{\tiogafigureshow{#1}}}
|
36
|
+
|
37
|
+
|
38
|
+
% \tiogafigurescaled{figurename}{scalefactor}
|
39
|
+
%
|
40
|
+
% \tiogafigurescaled shows a scaled version of the picture
|
41
|
+
% The 1st arg is the base name for the pdf and txt files.
|
42
|
+
% The 2nd arg determines the scale.
|
43
|
+
\newcommand{\tiogafigurescaled}[2]{
|
44
|
+
\scalebox{#2}{\tiogafigureshow{#1}}}
|
45
|
+
|
46
|
+
|
47
|
+
% \tiogafigurescaledxy{figurename}{xscalefactor}{yscalefactor}
|
48
|
+
%
|
49
|
+
% \tiogafigurescaledxy shows a scaled version of the picture where you
|
50
|
+
% can use different scaling factors in the horizontal and vertical directions.
|
51
|
+
% The 1st arg is the base name for the pdf and txt files.
|
52
|
+
% The 2nd arg determines the horizontal scale.
|
53
|
+
% The 3rd arg determines the vertical scale.
|
54
|
+
\newcommand{\tiogafigurescaledxy}[3]{
|
55
|
+
\scalebox{#2}[#3]{\tiogafigureshow{#1}}}
|
56
|
+
|
57
|
+
|
58
|
+
% \tiogafiguresized{figurename}{figurewidth}{figureheight}
|
59
|
+
%
|
60
|
+
% \tiogafiguresized shows a scaled version of the picture, where you
|
61
|
+
% can specify the actual size you want. If either length is
|
62
|
+
% given as !, the one scale factor is used in both directions.
|
63
|
+
% The 1st arg is the base name for the pdf and txt files.
|
64
|
+
% The 2nd arg determines the figure width.
|
65
|
+
% The 3rd arg determines the figure height.
|
66
|
+
\newcommand{\tiogafiguresized}[3]{
|
67
|
+
\resizebox{#2}{#3}{\tiogafigureshow{#1}}}
|
68
|
+
|
69
|
+
|
70
|
+
% \tiogaprefix can be used to set a path for the figure pdf and txt files.
|
71
|
+
%
|
72
|
+
\newcommand{\tiogaprefix}{}
|
73
|
+
% The prefix is initialized to an empty string.
|
74
|
+
% To change it, use \renewcommand as in the following example:
|
75
|
+
% \renewcommand{\tiogaprefix}{plot_out/}
|
76
|
+
|
77
|
+
|
78
|
+
% \tiogafigurecentered{figurename}{targetwidth}{targetheight}
|
79
|
+
%
|
80
|
+
% \tiogafigurecentered displays an unscaled figure centered within
|
81
|
+
% a box of targetwidth *targetheight.
|
82
|
+
\newcommand{\tiogafigurecentered}[3]{
|
83
|
+
\vbox to #3{%
|
84
|
+
\vspace*{\fill}%
|
85
|
+
\hbox to #2{\hfill%
|
86
|
+
\tiogafigureshow{#1}%
|
87
|
+
\hspace*{\fill}}%
|
88
|
+
\vspace*{\fill}%
|
89
|
+
}}
|
90
|
+
|
91
|
+
% \tiogafigurecentereddebug{figurename}{targetwidth}{targetheight}
|
92
|
+
%
|
93
|
+
% \tiogafigurecentereddebug has the same effect as \tiogafigurecentered
|
94
|
+
% except that the figure is included in a \fbox, which makes it easier
|
95
|
+
% to track problems.
|
96
|
+
\newcommand{\tiogafigurecentereddebug}[3]{
|
97
|
+
\vbox to #3{%
|
98
|
+
\vspace*{\fill}%
|
99
|
+
\hbox to #2{\hfill%
|
100
|
+
\fbox{\tiogafigureshow{#1}}
|
101
|
+
\hspace*{\fill}}%
|
102
|
+
\vspace*{\fill}%
|
103
|
+
}}
|
104
|
+
|
105
|
+
|
106
|
+
% \tiogafigureshow{figurename}
|
107
|
+
%
|
108
|
+
% \tiogafigureshow shows the figure and the accompanying text.
|
109
|
+
% Inside a box, it first creates a picture that includes the pdf
|
110
|
+
% file with the graphics for the figure, then it includes the text.
|
111
|
+
% The \tiogaprefix is added at the start of the file names for both.
|
112
|
+
\newcommand{\tiogafigureshow}[1]{%
|
113
|
+
\mbox{\begin{picture}(0,0)(0,0)%
|
114
|
+
\put(0,0){\includegraphics{\tiogaprefix#1_figure.pdf}}%
|
115
|
+
\end{picture}%
|
116
|
+
\input{\tiogaprefix#1_figure.txt}}}
|
117
|
+
|
118
|
+
% Commands for text properties:
|
119
|
+
% Font size (two parameters)
|
120
|
+
% {sz}{line_sp}, 1st is size of font in points,
|
121
|
+
% 2nd is line spacing (not used by Tioga)
|
122
|
+
\newcommand\tiog@fontsize{{10.0}{10pt}}
|
123
|
+
\newcommand\settiogafontsize[2][10pt]{\renewcommand\tiog@fontsize{{#2}{#1}}}
|
124
|
+
|
125
|
+
% Font family
|
126
|
+
% \rmdefault, \sfdefault, \ttdefault -- roman, sans serif, typewriter
|
127
|
+
\newcommand\tiog@fontfamily{\rmdefault}
|
128
|
+
\newcommand\settiogafontfamily[1]{\renewcommand\tiog@fontfamily{#1}}
|
129
|
+
|
130
|
+
% Font series
|
131
|
+
% \mddefault, \bfdefault -- medium, bold
|
132
|
+
\newcommand\tiog@fontseries{\mddefault}
|
133
|
+
\newcommand\settiogafontseries[1]{\renewcommand\tiog@fontseries{#1}}
|
134
|
+
|
135
|
+
% Font shape
|
136
|
+
% \updefault, \itdefault, \sldefault, \scdefault -- upright, italic, slant, small caps
|
137
|
+
\newcommand\tiog@fontshape{\updefault}
|
138
|
+
\newcommand\settiogafontshape[1]{\renewcommand\tiog@fontshape{#1}}
|
139
|
+
|
140
|
+
% \SetTiogaFontInfo is called from within the figure.txt file with the TeX
|
141
|
+
% for the text of the figure. Do not modify this function directly, it
|
142
|
+
% is way better to use the previous settiogafont* commands.
|
143
|
+
\newcommand\SetTiogaFontInfo{%
|
144
|
+
\expandafter\fontsize\tiog@fontsize%
|
145
|
+
\fontfamily{\tiog@fontfamily}%
|
146
|
+
\fontseries{\tiog@fontseries}%
|
147
|
+
\fontshape{\tiog@fontshape}%
|
148
|
+
}
|
149
|
+
|
150
|
+
% This command is used inside the _figure.txt files. You can use it directly
|
151
|
+
% as well, if you really want to make sure you get the same fonts. But I
|
152
|
+
% personnaly doubt it would really come in useful ;-)...
|
153
|
+
\newcommand\tiogasetfont{\reset@font\SetTiogaFontInfo%
|
154
|
+
\selectfont}%
|
155
|
+
|
156
|
+
|
157
|
+
% This commands typesets its second argument while sending to the
|
158
|
+
% standard output successively the width, height and depth of the
|
159
|
+
% box produced.
|
160
|
+
%
|
161
|
+
% These informations are collected when Tioga runs pdflatex.
|
162
|
+
\newlength{\tiogatempdim}
|
163
|
+
\newcommand{\tiogameasure}[2]{%
|
164
|
+
\settowidth{\tiogatempdim}{#2}\typeout{#1[0]=\the\tiogatempdim}%
|
165
|
+
\settoheight{\tiogatempdim}{#2}\typeout{#1[1]=\the\tiogatempdim}%
|
166
|
+
\settodepth{\tiogatempdim}{#2}\typeout{#1[2]=\the\tiogatempdim}%
|
167
|
+
{#2}}
|
168
|
+
|
169
|
+
\makeatother
|
170
|
+
End_of_preamble
|
171
|
+
COLOR_PREAMBLE = <<'End_of_preamble'
|
172
|
+
% Color constants, generated from ColorConstants.rb
|
173
|
+
\definecolor{PaleTurquoise}{rgb}{0.688,0.932,0.932}
|
174
|
+
\definecolor{GreenYellow}{rgb}{0.680,1.000,0.185}
|
175
|
+
\definecolor{SpringGreen}{rgb}{0.000,1.000,0.498}
|
176
|
+
\definecolor{LightTurquoise}{rgb}{0.200,1.000,0.800}
|
177
|
+
\definecolor{DarkGrey}{rgb}{0.664,0.664,0.664}
|
178
|
+
\definecolor{DarkSlateGray}{rgb}{0.185,0.310,0.310}
|
179
|
+
\definecolor{RedBrown}{rgb}{0.800,0.400,0.200}
|
180
|
+
\definecolor{LightBrightGreen}{rgb}{0.000,0.800,0.200}
|
181
|
+
\definecolor{BlueViolet}{rgb}{0.540,0.170,0.888}
|
182
|
+
\definecolor{MediumOrchid}{rgb}{0.730,0.332,0.828}
|
183
|
+
\definecolor{Navy}{rgb}{0.000,0.000,0.500}
|
184
|
+
\definecolor{Gainsboro}{rgb}{0.864,0.864,0.864}
|
185
|
+
\definecolor{Sienna}{rgb}{0.628,0.320,0.176}
|
186
|
+
\definecolor{LightRose}{rgb}{1.000,0.600,0.800}
|
187
|
+
\definecolor{Cornsilk}{rgb}{1.000,0.972,0.864}
|
188
|
+
\definecolor{Peru}{rgb}{0.804,0.520,0.248}
|
189
|
+
\definecolor{Indigo}{rgb}{0.294,0.000,0.510}
|
190
|
+
\definecolor{Aquamarine}{rgb}{0.498,1.000,0.830}
|
191
|
+
\definecolor{Tomato}{rgb}{1.000,0.390,0.280}
|
192
|
+
\definecolor{LimeGreen}{rgb}{0.196,0.804,0.196}
|
193
|
+
\definecolor{DarkOrange}{rgb}{1.000,0.550,0.000}
|
194
|
+
\definecolor{RoyalPurple}{rgb}{0.400,0.000,0.600}
|
195
|
+
\definecolor{LightGold}{rgb}{0.800,0.800,0.400}
|
196
|
+
\definecolor{Burgundy}{rgb}{0.600,0.000,0.200}
|
197
|
+
\definecolor{MediumTurquoise}{rgb}{0.284,0.820,0.800}
|
198
|
+
\definecolor{DeepPink}{rgb}{1.000,0.080,0.576}
|
199
|
+
\definecolor{GrassGreen}{rgb}{0.200,0.600,0.000}
|
200
|
+
\definecolor{SlateGrey}{rgb}{0.440,0.500,0.565}
|
201
|
+
\definecolor{LightSkyBlue}{rgb}{0.530,0.808,0.980}
|
202
|
+
\definecolor{DarkCyan}{rgb}{0.000,0.545,0.545}
|
203
|
+
\definecolor{OrangeRed}{rgb}{1.000,0.270,0.000}
|
204
|
+
\definecolor{Purple}{rgb}{0.500,0.000,0.500}
|
205
|
+
\definecolor{LavenderBlush}{rgb}{1.000,0.940,0.960}
|
206
|
+
\definecolor{Black}{rgb}{0.000,0.000,0.000}
|
207
|
+
\definecolor{White}{rgb}{1.000,1.000,1.000}
|
208
|
+
\definecolor{MediumAquamarine}{rgb}{0.400,0.804,0.668}
|
209
|
+
\definecolor{DarkRoyalBlue}{rgb}{0.000,0.200,0.800}
|
210
|
+
\definecolor{SalmonRed}{rgb}{1.000,0.400,0.400}
|
211
|
+
\definecolor{LightMustard}{rgb}{1.000,0.800,0.400}
|
212
|
+
\definecolor{Chiffon}{rgb}{0.980,0.980,0.824}
|
213
|
+
\definecolor{MistyRose}{rgb}{1.000,0.894,0.884}
|
214
|
+
\definecolor{FireBrick}{rgb}{0.698,0.132,0.132}
|
215
|
+
\definecolor{SteelBlue}{rgb}{0.275,0.510,0.705}
|
216
|
+
\definecolor{LightYellow}{rgb}{1.000,1.000,0.880}
|
217
|
+
\definecolor{DarkKhaki}{rgb}{0.740,0.716,0.420}
|
218
|
+
\definecolor{PaleVioletRed}{rgb}{0.860,0.440,0.576}
|
219
|
+
\definecolor{Grey}{rgb}{0.500,0.500,0.500}
|
220
|
+
\definecolor{LightCoral}{rgb}{0.940,0.500,0.500}
|
221
|
+
\definecolor{BrickRed}{rgb}{0.645,0.000,0.129}
|
222
|
+
\definecolor{MediumPurple}{rgb}{0.576,0.440,0.860}
|
223
|
+
\definecolor{DarkSlateGrey}{rgb}{0.185,0.310,0.310}
|
224
|
+
\definecolor{RedOrange}{rgb}{0.800,0.200,0.000}
|
225
|
+
\definecolor{Silver}{rgb}{0.752,0.752,0.752}
|
226
|
+
\definecolor{LightSalmon}{rgb}{1.000,0.628,0.480}
|
227
|
+
\definecolor{Crimson}{rgb}{0.800,0.000,0.200}
|
228
|
+
\definecolor{OldLace}{rgb}{0.992,0.960,0.900}
|
229
|
+
\definecolor{GhostWhite}{rgb}{0.972,0.972,1.000}
|
230
|
+
\definecolor{Avocado}{rgb}{0.600,0.600,0.000}
|
231
|
+
\definecolor{Turquoise}{rgb}{0.250,0.880,0.815}
|
232
|
+
\definecolor{Linen}{rgb}{0.980,0.940,0.900}
|
233
|
+
\definecolor{DarkOrchid}{rgb}{0.600,0.196,0.800}
|
234
|
+
\definecolor{Pink}{rgb}{1.000,0.752,0.796}
|
235
|
+
\definecolor{Ivory}{rgb}{1.000,1.000,0.940}
|
236
|
+
\definecolor{BurlyWood}{rgb}{0.870,0.720,0.530}
|
237
|
+
\definecolor{MediumVioletRed}{rgb}{0.780,0.084,0.520}
|
238
|
+
\definecolor{DeepSkyBlue}{rgb}{0.000,0.750,1.000}
|
239
|
+
\definecolor{SaddleBrown}{rgb}{0.545,0.270,0.075}
|
240
|
+
\definecolor{LightGrassGreen}{rgb}{0.400,1.000,0.400}
|
241
|
+
\definecolor{LightSlateGray}{rgb}{0.468,0.532,0.600}
|
242
|
+
\definecolor{DarkGoldenrod}{rgb}{0.720,0.525,0.044}
|
243
|
+
\definecolor{Orchid}{rgb}{0.855,0.440,0.840}
|
244
|
+
\definecolor{Gray}{rgb}{0.500,0.500,0.500}
|
245
|
+
\definecolor{Smoke}{rgb}{0.950,0.950,0.950}
|
246
|
+
\definecolor{WhiteSmoke}{rgb}{0.970,0.970,0.970}
|
247
|
+
\definecolor{MediumBlue}{rgb}{0.000,0.000,0.804}
|
248
|
+
\definecolor{DarkSalmon}{rgb}{0.912,0.590,0.480}
|
249
|
+
\definecolor{PurpleBlue}{rgb}{0.400,0.200,0.800}
|
250
|
+
\definecolor{LawnGreen}{rgb}{0.488,0.990,0.000}
|
251
|
+
\definecolor{BlanchedAlmond}{rgb}{1.000,0.920,0.804}
|
252
|
+
\definecolor{Chocolate}{rgb}{0.824,0.410,0.116}
|
253
|
+
\definecolor{Moccasin}{rgb}{1.000,0.894,0.710}
|
254
|
+
\definecolor{FloralWhite}{rgb}{1.000,0.980,0.940}
|
255
|
+
\definecolor{SandyBrown}{rgb}{0.956,0.644,0.376}
|
256
|
+
\definecolor{LightOliveGreen}{rgb}{0.600,0.800,0.600}
|
257
|
+
\definecolor{DarkLavender}{rgb}{0.400,0.200,0.600}
|
258
|
+
\definecolor{PapayaWhip}{rgb}{1.000,0.936,0.835}
|
259
|
+
\definecolor{Honeydew}{rgb}{0.940,1.000,0.940}
|
260
|
+
\definecolor{AliceBlue}{rgb}{0.940,0.972,1.000}
|
261
|
+
\definecolor{Tan}{rgb}{0.824,0.705,0.550}
|
262
|
+
\definecolor{LightYellowGreen}{rgb}{0.800,0.800,0.200}
|
263
|
+
\definecolor{MediumSeaGreen}{rgb}{0.235,0.700,0.444}
|
264
|
+
\definecolor{DarkSmoke}{rgb}{0.920,0.920,0.920}
|
265
|
+
\definecolor{Rose}{rgb}{1.000,0.400,0.600}
|
266
|
+
\definecolor{LightCrimson}{rgb}{0.864,0.080,0.235}
|
267
|
+
\definecolor{BrightBlue}{rgb}{0.000,0.400,1.000}
|
268
|
+
\definecolor{Olive}{rgb}{0.500,0.500,0.000}
|
269
|
+
\definecolor{Gold}{rgb}{1.000,0.844,0.000}
|
270
|
+
\definecolor{SkyBlue}{rgb}{0.530,0.808,0.920}
|
271
|
+
\definecolor{LightSandyBrown}{rgb}{1.000,0.800,0.600}
|
272
|
+
\definecolor{Cyan}{rgb}{0.000,1.000,1.000}
|
273
|
+
\definecolor{DarkPeriwinkle}{rgb}{0.400,0.400,1.000}
|
274
|
+
\definecolor{Plum}{rgb}{0.868,0.628,0.868}
|
275
|
+
\definecolor{Khaki}{rgb}{0.940,0.900,0.550}
|
276
|
+
\definecolor{Azure}{rgb}{0.940,1.000,1.000}
|
277
|
+
\definecolor{Violet}{rgb}{0.932,0.510,0.932}
|
278
|
+
\definecolor{Magenta}{rgb}{1.000,0.000,1.000}
|
279
|
+
\definecolor{DimGray}{rgb}{0.410,0.410,0.410}
|
280
|
+
\definecolor{LightChartreuse}{rgb}{0.800,1.000,0.400}
|
281
|
+
\definecolor{LightGray}{rgb}{0.828,0.828,0.828}
|
282
|
+
\definecolor{CadetBlue}{rgb}{0.372,0.620,0.628}
|
283
|
+
\definecolor{YellowGreen}{rgb}{0.800,0.800,0.000}
|
284
|
+
\definecolor{DarkGray}{rgb}{0.664,0.664,0.664}
|
285
|
+
\definecolor{LightSlateGrey}{rgb}{0.468,0.532,0.600}
|
286
|
+
\definecolor{PaleGoldenrod}{rgb}{0.932,0.910,0.668}
|
287
|
+
\definecolor{GrayBlue}{rgb}{0.000,0.400,0.600}
|
288
|
+
\definecolor{Snow}{rgb}{1.000,0.980,0.980}
|
289
|
+
\definecolor{DarkSeaGreen}{rgb}{0.560,0.736,0.560}
|
290
|
+
\definecolor{Blue}{rgb}{0.000,0.000,1.000}
|
291
|
+
\definecolor{LemonChiffon}{rgb}{1.000,0.980,0.804}
|
292
|
+
\definecolor{MediumGreen}{rgb}{0.000,0.600,0.000}
|
293
|
+
\definecolor{PurpleGray}{rgb}{0.600,0.600,0.800}
|
294
|
+
\definecolor{Yellow}{rgb}{1.000,1.000,0.000}
|
295
|
+
\definecolor{Coral}{rgb}{1.000,0.498,0.312}
|
296
|
+
\definecolor{LightOrchid}{rgb}{0.600,0.400,0.800}
|
297
|
+
\definecolor{ForestGreen}{rgb}{0.132,0.545,0.132}
|
298
|
+
\definecolor{MustardSeed}{rgb}{0.800,0.600,0.000}
|
299
|
+
\definecolor{SeaGreen}{rgb}{0.180,0.545,0.340}
|
300
|
+
\definecolor{DarkMagenta}{rgb}{0.545,0.000,0.545}
|
301
|
+
\definecolor{AntiqueWhite}{rgb}{0.980,0.920,0.844}
|
302
|
+
\definecolor{HotPink}{rgb}{1.000,0.410,0.705}
|
303
|
+
\definecolor{Lilac}{rgb}{0.800,0.600,1.000}
|
304
|
+
\definecolor{PeachPuff}{rgb}{1.000,0.855,0.725}
|
305
|
+
\definecolor{Teal}{rgb}{0.000,0.500,0.500}
|
306
|
+
\definecolor{DarkTurquoise}{rgb}{0.000,0.808,0.820}
|
307
|
+
\definecolor{BrightPink}{rgb}{1.000,0.400,0.800}
|
308
|
+
\definecolor{LightCyan}{rgb}{0.880,1.000,1.000}
|
309
|
+
\definecolor{MediumSlateBlue}{rgb}{0.484,0.408,0.932}
|
310
|
+
\definecolor{RosyBrown}{rgb}{0.736,0.560,0.560}
|
311
|
+
\definecolor{GoldenBrown}{rgb}{0.600,0.400,0.000}
|
312
|
+
\definecolor{DarkBlue}{rgb}{0.000,0.000,0.545}
|
313
|
+
\definecolor{LightSeaGreen}{rgb}{0.125,0.698,0.668}
|
314
|
+
\definecolor{OliveDrab}{rgb}{0.420,0.556,0.136}
|
315
|
+
\definecolor{SlateBlue}{rgb}{0.415,0.352,0.804}
|
316
|
+
\definecolor{DarkPurpleBlue}{rgb}{0.400,0.000,0.800}
|
317
|
+
\definecolor{Beige}{rgb}{0.960,0.960,0.864}
|
318
|
+
\definecolor{Lavender}{rgb}{0.900,0.900,0.980}
|
319
|
+
\definecolor{Maroon}{rgb}{0.500,0.000,0.000}
|
320
|
+
\definecolor{PowderBlue}{rgb}{0.690,0.880,0.900}
|
321
|
+
\definecolor{WarmGray}{rgb}{0.678,0.660,0.562}
|
322
|
+
\definecolor{DimGrey}{rgb}{0.410,0.410,0.410}
|
323
|
+
\definecolor{Cement}{rgb}{0.800,0.800,0.600}
|
324
|
+
\definecolor{LightGreen}{rgb}{0.565,0.932,0.565}
|
325
|
+
\definecolor{MidnightBlue}{rgb}{0.098,0.098,0.440}
|
326
|
+
\definecolor{Saffron}{rgb}{1.000,0.800,0.000}
|
327
|
+
\definecolor{Green}{rgb}{0.000,0.500,0.000}
|
328
|
+
\definecolor{DarkGreen}{rgb}{0.000,0.392,0.000}
|
329
|
+
\definecolor{LightSteelBlue}{rgb}{0.690,0.770,0.870}
|
330
|
+
\definecolor{PaleGreen}{rgb}{0.596,0.985,0.596}
|
331
|
+
\definecolor{SoftYellow}{rgb}{1.000,1.000,0.400}
|
332
|
+
\definecolor{LightBlue}{rgb}{0.680,0.848,0.900}
|
333
|
+
\definecolor{DarkSlateBlue}{rgb}{0.284,0.240,0.545}
|
334
|
+
\definecolor{BlueGreen}{rgb}{0.000,0.600,0.400}
|
335
|
+
\definecolor{MediumOrange}{rgb}{1.000,0.400,0.000}
|
336
|
+
\definecolor{Red}{rgb}{1.000,0.000,0.000}
|
337
|
+
\definecolor{Fuchsia}{rgb}{1.000,0.000,1.000}
|
338
|
+
\definecolor{CornflowerBlue}{rgb}{0.392,0.585,0.930}
|
339
|
+
\definecolor{LightPlum}{rgb}{0.800,0.600,0.800}
|
340
|
+
\definecolor{NavajoWhite}{rgb}{1.000,0.870,0.680}
|
341
|
+
\definecolor{Seashell}{rgb}{1.000,0.960,0.932}
|
342
|
+
\definecolor{Aqua}{rgb}{0.000,1.000,1.000}
|
343
|
+
\definecolor{IndianRed}{rgb}{0.804,0.360,0.360}
|
344
|
+
\definecolor{DarkOliveGreen}{rgb}{0.332,0.420,0.185}
|
345
|
+
\definecolor{Lime}{rgb}{0.000,1.000,0.000}
|
346
|
+
\definecolor{Periwinkle}{rgb}{0.600,0.000,1.000}
|
347
|
+
\definecolor{Thistle}{rgb}{0.848,0.750,0.848}
|
348
|
+
\definecolor{Brown}{rgb}{0.648,0.165,0.165}
|
349
|
+
\definecolor{LightDullGreen}{rgb}{0.400,1.000,0.600}
|
350
|
+
\definecolor{DarkViolet}{rgb}{0.580,0.000,0.828}
|
351
|
+
\definecolor{MediumSpringGreen}{rgb}{0.000,0.980,0.604}
|
352
|
+
\definecolor{RoyalBlue}{rgb}{0.255,0.410,0.884}
|
353
|
+
\definecolor{LightSienna}{rgb}{0.800,0.400,0.000}
|
354
|
+
\definecolor{Goldenrod}{rgb}{0.855,0.648,0.125}
|
355
|
+
\definecolor{DarkChocolate}{rgb}{0.400,0.200,0.000}
|
356
|
+
\definecolor{Orange}{rgb}{1.000,0.648,0.000}
|
357
|
+
\definecolor{SlateGray}{rgb}{0.440,0.500,0.565}
|
358
|
+
\definecolor{Bisque}{rgb}{1.000,0.894,0.770}
|
359
|
+
\definecolor{LavenderBlue}{rgb}{0.400,0.200,1.000}
|
360
|
+
\definecolor{DarkRed}{rgb}{0.545,0.000,0.000}
|
361
|
+
\definecolor{Mauve}{rgb}{0.800,0.200,0.400}
|
362
|
+
\definecolor{Pumpkin}{rgb}{1.000,0.600,0.200}
|
363
|
+
\definecolor{Wheat}{rgb}{0.960,0.870,0.700}
|
364
|
+
\definecolor{Chartreuse}{rgb}{0.498,1.000,0.000}
|
365
|
+
\definecolor{LightGrey}{rgb}{0.828,0.828,0.828}
|
366
|
+
\definecolor{DodgerBlue}{rgb}{0.116,0.565,1.000}
|
367
|
+
\definecolor{MintCream}{rgb}{0.960,1.000,0.980}
|
368
|
+
\definecolor{Salmon}{rgb}{0.980,0.500,0.448}
|
369
|
+
|
370
|
+
End_of_preamble
|
371
|
+
end
|
372
|
+
end
|