tioga 1.14 → 1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|