summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/otherformats/texsis/base/TXSfigs.doc
blob: 06d77bc35d90542c596b41c77d85817e6c0f2dd7 (plain)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
%% file: TXSfigs.doc - Figures and Tables - TeXsis version 2.18
%% @(#) $Id: TXSfigs.doc,v 18.2 2000/05/17 00:19:46 myers Exp $
%======================================================================*
% (C) Copyright 1989, 1992,1993,1994, 1997 by Eric Myers and Frank E. Paige
% This file is a part of TeXsis.  Distribution and/or modifications
% are allowed under the terms of the LaTeX Project Public License (LPPL).
% See the file COPYING or ftp://ftp.texsis.org/texsis/LPPL
%======================================================================*
\ifx\undefined\meta \texsis\input TXSdocM.doc\input Manual.aux\draft\fi 

% Select the Penguin shown at the end of the section 
% (the one in the middle is always the Feynman diagram).

%\def\penguin{penguin2}  % to use Larry Ewing's Linux Penguin
\def\penguin{penguin}  % to use the Feynman diagram.



\section{Figures and Tables              \label{sect.figures}}

Technical papers often include tables and/or figures.  Regardless of how
the contents of the figures or tables are created, these have a lot in
common in the way they are generally treated. \TeXsis\  makes use of
\TeX's \idx{floating insertion} capabilities (see Chapter~15 of
\TeXbook) to insert figures and tables on the current page or on a
following page.  It is also possible to have figures or tables saved and
printed at the end of the document.  Captions are easily added either
above or below the figure or table.  Both kinds of objects are
automatically assigned numbers, which are associated with internal
labels so that they may be referred to in the text without having to
know their order.  It is possible to create a list of the figures and
tables which appear in a document, much like creating a table of
contents.  Figures themselves
are generally created outside of \TeX, either by hand
or by computer graphics programs, while tables can be created using
\TeX\  commands.  The most complicated tables have vertical and
horizontal lines (called ``rules'') to guide the reader's eye and to
make the table more readable.  \TeXsis\  has some very easy to use
commands for making ruled tables.

Before discussing \TeXsis's figure and table making macros in detail we
should mention that \TeXsis\  also adds a new insertion class to those of
Plain \TeX.  In Plain \TeX\  saying \cs{topinsert}, \cs{midinsert} or
\cs{pageinsert} begins a \idx{floating insertion} (ended by
\cs{endinsert}) which will appear somewhere on the current page or a
following page.  Material entered with a \cs{topinsert} appears at the
top of the current page, if there is room for it, or at the top of the
next page where there is room.  A \cs{midinsert} attempts to insert the
text into the current page right where it is invoked, but if the
insertion won't fit it becomes a \cs{topinsert}. Saying \cs{pageinsert}
creates an insertion which takes up a whole page by itself.
%
In \TeXsis\  you can also say \cs{bottominsert} to make a \idx{floating
insertion} that will appear at the bottom of the current page, if it
will fit, or at the bottom of the next page where it will fit.
There is also \cs{heavyinsert}, which like \cs{midinsert} tries first to
insert the material into the current page right where it is called, but
in this case becomes a \cs{bottominsert} if the material wont' fit.


%==================================================*
\subsection{Figures                     \label{sect.figs}}

\TeX\  is designed for technical typesetting, but does not include a
graphics standard, so to include a figure or drawing in a document
it is necessary to
leave blank space and to either glue the drawing in later or to arrange
for the figure material to be inserted by some mechanism outside of
\TeX\  when the page is actually printed (e.g., using the \cs{special}
command or the \cs{epsfbox} command described later).

      Imagine that you wish to insert into the text a drawing of a
``\idx{penguin} diagram,'' which is about 6~cm tall.  You could create
the space for this figure at the top of a page, along with a caption,
with the following commands:\index{figures}%
\TeXexample
|smalltt\figure{Penguin}
\hrule
\vskip 2cm
\line{\hss (glue your penguin here) \hfil}
\vskip 2cm
\hrule
\Caption
Sample figure showing how easy it is to insert
numbered figures with captions in \TeXsis.
\endCaption
\endfigure
|endTeXexample
\noindent
This produces \Fig{Penguin} (we put the \cs{hrule}'s in just to show
off the empty space).  ``Penguin'' is the 
label for the figure, so to refer to the figure in the text we typed
\CS{Fig}|{Penguin}|, which produced ``\Fig{Penguin}.'' The caption can be
placed either before or after the figure: if it is to be at the top then
\CS{Caption} must be the first token after |\figure|.  As shown, the
caption text must be terminated with \CS{endCaption}.  When the caption is
printed it will automatically start with the figure number in bold type,
followed by the caption text. The caption is indented on both sides if
it is more than one line long and centered otherwise.

      \CS{caption}\arg{text} is equivalent to \CS{Caption}\meta{text}
\CS{endCaption} and may be more convenient for short captions.
It should be avoided for very long captions to keep from overflowing \TeX's
internal memory.

\figure{Penguin}
\hrule
\vskip 2cm
\line{\hss (glue your \idx{penguin} here) \hfil}
\vskip 2cm
\hrule
\Caption
Sample figure showing how easy it is to insert 
numbered figures with captions in \TeXsis.
\endCaption
\infiglist{Sample figure showing how easy it is
to insert numbered figures with captions in \TeXsis.}
\endfigure

  There are commands to create figures for each of the \idx{insertion
classes} of Plain \TeX  (that is,  \cs{midinsert}, \cs{topinsert} and
\cs{pageinsert}) along with the new insertion class
added by \TeXsis\  (\cs{bottominsert}) .
In addition, there are special commands for creating wide or full page
figures while in double column mode (which is described later in
Section~\use{sect.dcol}):
\index{figures!placement}%
\singlelinetrue
\description{XfullFigureXXXXXX}\clump
%
\itm{\CS{figure}\arg{label\/}}
Inserts a figure at the top of the current page, if there is enough room for
it, or at the top of the next available page.
%
\itm{\CS{midfigure}\arg{label\/}}
Inserts a figure at the current position, if there is enough room for it, or at
the top of the next page if there is not.
%
\itm{\CS{fullfigure}\arg{label\/}}
Inserts a figure on a separate page. The body of the figure should
normally contain a \cs{vfill} to allow the figure to stretch to fill the
whole page.
%
\itm{\CS{bottomfigure}\arg{label\/}}
Inserts the figure at the bottom of the current page, if there is room
for it, or on the bottom of the next page where there is room.
%
\itm{\CS{heavyfigure}\arg{label\/}}
Inserts a figure at the current position, if there is room for it on the
page, or at the bottom of the page following if there is not.  This is
therefore like \CS{midfigure}, except that if the figure can't be fit on
the page it ends up on the bottom of a following page, not the top.
%
\itm{\cs{widetopfigure}\arg{label\/}}
Inserts a figure at the top of a page across both columns in
double column format. Equivalent to \CS{figure} in single column
format.  \cs{widefigure} is a synonym. 
%
\itm{\cs{widefullfigure}\arg{label\/}}
Inserts a full page figure across both columns in double column
format.  Equivalent to \CS{fullfigure} in single column format.
%
\itm{\CS{endfigure}}
Ends any of the figure insertions described above.
%
\enddescription
\noindent
In all cases \meta{label\/} is an internal label which is assigned to
the figure number. The figure number will include the chapter and
section numbers in the format ``$cc.ss.nn$'' if \cs{showchaptIDtrue} and
\cs{showsectIDtrue} have been selected.
\index{figures!placement}%

      The body of the figure can include any vertical mode
commands, as in the example above.   When you are simply leaving
space for a figure to be glued in later a convenient way to specify the
amount of space to leave is to \cs{vskip} by some amount proportional to
the width of the current column or page.  The dimension \cs{colwidth} is
the width of the page (the \cs{hsize}) in single column mode and the width
of the current column in double column mode.  So for example, if you
have a figure which was half again as tall as it is wide you could say
\index{figures!size}%
\example
\cs{vskip} |1.5|\cs{colwidth}
\endexample
Another way to standardize the space reserved for figures is to define
your own dimension, such as |\myfigsize|, to use in the \cs{vskip}
above.  For example,
\TeXexample
\newdim\myfigsize
\myfigsize= 1.5\colwidth
|endTeXexample
\noindent
and then |\vskip\myfigsize|.  This has the same effect as the previous
example, but |\myfigsize| can be changed to any valid dimension.
\index{figures!size}%


%==================================================*
\subsection{Encapsulated PostScript Graphics}

Instead of simply gluing figures into a paper by hand it is possible to
have computer generated graphs and drawings automatically inserted into
a document.  Unfortunately, the method can vary from
computer to computer and printer to printer.  Recall that \TeX\
produces as output a \idx{DVI file}, which contains device independent
instructions for typesetting the document. To actually print the
document the \idx{DVI file} must be translated into instructions for
the specific printer being used by a suitable device driver.  It is at
this stage, when the device driver is converting the \idx{DVI file} to
printer instructions, that graphs and drawings may be inserted.
However, since different printers may require different kinds of
instructions, there are many different device drivers, each having its
own way of including drawings in the document.

In recent years some standardization has become possible, because many
printer manufacturers have chosen \idx{PostScript} as the ``language''
for giving instructions to their printers.  PostScript contains
commands both for drawing and for typesetting text.  Still, there are 
some problems, because there are many different device drivers for
converting \idx{DVI file}s to \idx{PostScript}, and they all treat the
inclusion of figures slightly differently.  Also, while all of these filters
require that the drawings to be included are themselves already in
PostScript, there are several variations of \idx{PostScript}, leading to
further problems of incompatibility.

Until there is some standardization for inserting drawings into \TeX\
documents (and perhaps to encourage it) we recommend using the scheme
which (a) seems to be the easiest to use and the most well thought
out, and (b) is potentially available to the widest group of users.
Our choice is, first, to use a specific variation of PostScript known
as ``Encapsulated'' \idx{PostScript} (EPS). 
\index{Encapsulated PostScript|see{PostScript}} Most newer computer
programs which produce graphics output, including Mathematica, |xfig|,
and |paw|, can produce EPS output files.  To include these in the text
we have chosen to rely on the program |dvips| \index{dvips} by Tomas
Rokicki,\reference{Rokicki} Tomas Rokicki, \booktitle{{\tt dvips}
User's Manual}.
The source code for {\tt dvips} is available from CTAN
in the directory  {\tt dviware/dvips}
\endreference 
\index{Rokicki, Tomas} along with his \TeX\  macros for including EPS
graphics, called |epsf.tex|.  Be warned that there are other programs
called ``dvips,'' but as far as we know only Rokicki's version will
work with |epsf.tex|.  We expect that when including drawings in \TeX\
is standardized, it will be based on Rokicki's scheme or something
close to it.

\bigskip

To include EPS graphics in a document using the |epsf.tex| macros you
must first input the macros. Somewhere early in your manuscript file you
should put: 
\TeXexample
\input epsf.tex
|endTeXexample
You can have the macros report the size of a figure when it is
included by saying:
\TeXexample
\epsfverbosetrue
|endTeXexample
At the point where you want a graph or drawing included 
you simply say:
\example
\CS{epsfbox}|{foo.ps}|
\endexample
This will include the drawing from the file called `|foo.ps|,' which must
already exist in the current directory.  \TeX\  will leave enough room
for the figure (by creating a box of the correct size) and will use a
\cs{special} command to insert instructions into the DVI file telling
the DVI to PS translator to read in the \idx{EPS file} |foo.ps|.

Once the document has been processed by \TeXsis\  and the DVI file has
been produced you will convert it to a PS file with the ``\idx{dvips}''
program.  If your DVI file is called |myfile.dvi| then the command is
simply:
\TeXexample
dvips myfile
|endTeXexample
This will convert |myfile.dvi| to PostScript, 
and depending on how dvips is set up at your installation it will either
put the output in the file |myfile.ps| or it will send it directly to
the default printer (see the man pages for dvips on how to change this
behavior, or try a short example to see how it is set up on your computer).
Note that the EPS files to be included must be in the same directory as
|myfile.dvi| when you run dvips, so that they can be merged into the final
output file (or you can specify the full path filename in the
\CS{epsfbox} command). 

On Unix systems you may not be able to use the |lpr -d|
command if you have included EPS files in the document.  This command
runs the DVI file through dvips (or some other DVI to PS filter) in a
different directory, and the EPS files will therefore not be included
unless you have used a full path name for the file.


If you use the latest version of 
the |xdvi| program to preview DVI files on your workstation
you will find that it automatically includes EPS graphics in the
display, but some other previewing programs (such as |texsun|, or older
versions of |xdvi|) will not.  Even if the previewer does not know how
to deal with the \cs{special} commands in the DVI file, you will
see that \TeX\  has left room for the figure.  Once you have converted
your DVI and \idx{EPS file}s into a PS file you can preview that file
if you have a PostScript previewer, such as GhostScript. Then your
graphs and drawings will appear just as they would if you had printed
the PS file.
 
\bigskip

Sometimes you will find that more room has been left for the figure than
is really needed.  The way \CS{epsfbox} decides how much room to leave is
by reading the first part of the \idx{EPS file} to find a line 
which looks like:
\TeXexample
%%BoundingBox: 67 176 544 616
|endTeXexample 
\noindent
The two pairs of numbers are the coordinates of the lower left and upper
right corners of the figure, respectively.  They are measured in
printer's points (1/72${}{\hbox{nd}}$ of an inch).  If you don't like
the positioning of the figure given by the original bounding box in the
PostScript file you can override it by specifying a new bounding box
like so:
\TeXexample
\epsfbox[0 180 540 700]{file.ps}         
|endTeXexample
\noindent
You may have to experiment with positioning the BoundingBox for the best
effect, and it may help to look at the \idx{PostScript} file to see what the 
default BoundingBox is and adjust things using that coordinate system.

\bigskip

You can also control the size of the included graphic using
\CS{epsfxsize} or \CS{epsfysize} before you call \CS{epsfbox}. The
figure will be enlarged or reduced to fit the dimension you specify.
Saying 
\example
\CS{epsfxsize}|=|\meta{dimen} \CS{epsfbox}|{figure.ps}|
\endexample
will scale the drawing in the file |figure.ps| so that its {\sl width\/}
is \meta{dimen}, with the height scaled accordingly, while saying
\example
\CS{epsfysize}|=|\meta{dimen} \CS{epsfbox}|{graph.ps}|
\endexample
will scale the drawing in the file |graph.ps| so that its {\sl height\/} is
\meta{dimen}, with the width scaled accordingly.  You can only specify
the width or height, but not both at the same time.  Whatever change of
size you specify will only be applied to the \CS{epsfbox} command which
immediately follows.  After that, subsequent included graphics will
revert to their natural sizes unless you also specify a particular size
for them.

The \CS{epsfbox} command creates a box of the proper size, into which
the figure is later drawn.
That is all.
If you want the figure to be centered across the page then you will
have to do so yourself, using \cs{centerline} or something similar.
The advantage of this is that since figures are simply treated as
boxes, you can stack them or arrange them in a row, or do whatever
else you would with boxes.
This gives you much more flexibility to construct complicated figures
from several EPS files.

\figure{Penguin2}
\centerline{\epsfysize=4cm\epsfbox{penguin.eps}}
\Caption
Example of including EPS graphics in a figure.
\endCaption
\endfigure

So now consider the earlier example of including a 4~cm tall 
\idx{penguin} diagram in a figure, but now assuming that the drawing
exists as an EPS graphic in the file |penguin.eps|.
Assume also that we need to override the default bounding box in that
file.
The commands to do this are:
\TeXexample
\figure{Penguin2}
\centerline{\epsfysize=4cm \epsfbox{penguin.eps}}
\Caption
Example of including EPS graphics in a figure.
\endCaption
\endfigure
|endTeXexample
\relax
The results are shown in \Fig{Penguin2}.
The drawing was created with Bill Dimm's {\sl FeynDiagram}
package,\reference{FeynDiagram}
Dimm, Bill,
\booktitle{FeynDiagram Tutorial},
available at \URL{ftp://ftp.hepth.cornell.edu}
\endreference
which is a set of C++ objects which make it fairly easy to create EPS
\idx{Feynman Diagrams} by writing short C++ programs. It was converted
from a |.ps| to a |.eps| file using |ps2epsi|.

%==================================================*
\subsection{Simple Tables               \label{sect.tbls}}

 Simple tables\index{tables!simple} (without ruled lines) are constructed
in \TeX\  with \idx{alignment tabs} or with \cs{halign}.  The reader who
is not familiar with these should look at Chapter~22 in \TeXbook.  In
\TeXsis\  simple tables with table numbers and captions are
treated much the same as figures.  For example, saying
\TeXexample
|smalltt\midtable{table example}
\caption{Charged leptons.}
\centerline{\vbox{\halign{#\  \hfil & #\  \hfil & #\hfil \cr
Name     & Mass     & Lifetime \cr
$e^-$    & .511 MeV & $>2 \times 10^{22}$ yr. \cr
$\mu^-$  & 105 MeV  & $2.197 \times 10^{-6}$ sec. \cr
$\tau^-$ & 1784 MeV & $3.3 \times 10^{-13}$ sec. \cr}}}
\endtable
|endTeXexample
\noindent
produces the following table, in the middle of the page:
\vskip 0pt
\midtable{table example}
\caption{Charged leptons.}
\centerline{\vbox{\halign{#\  \hfil & #\  \hfil & #\hfil \cr
Name     & Mass     & Lifetime \cr
$e^-$    & .511 MeV & $>2 \times 10^{22}$ yr. \cr
$\mu^-$  & 105 MeV  & $2.197 \times 10^{-6}$ sec. \cr
$\tau^-$ & 1784 MeV & $3.3 \times 10^{-13}$ sec. \cr}}}
\intablelist{Charged leptons.}
\endtable
\noindent
Note the use of \cs{centerline} and a \cs{vbox} to center the table. The
reference to this table in the text was produced by typing ``|\Tbl{table
example}|.''  Note also that we used \cs{caption} followed by the text in
brackets as an alternative method of defining the caption; 
However \cs{caption}
should only be used when the caption is short.  Table captions are
traditionally placed above the table, so \cs{Caption} or \cs{caption} should
be the first token after \CS{table}\arg{label\/} and its siblings.

There are a number of different kinds of table insertions, and they
match closely the different kinds of insertions used for figures:
\description{xwidefullTablexx\qquad}\clump
%
\itm{\CS{table}\arg{label\/}}
Inserts a table at the top of next available page.
%
\itm{\CS{midtable}\arg{label\/}}
Inserts a table at the current position if there is room or at
the top of a page if necessary.
%
\itm{\CS{fulltable}\arg{label\/}}
Inserts a table on a separate page. The body of the table
should normally contain a \cs{vfill}.
%
\itm{\CS{bottomtable}\arg{label\/}}
Inserts the table at the bottom of the current page, if there is room
for it, or on the bottom of the next page where there is room.
%
\itm{\CS{heavytable}\arg{label\/}}
Inserts a table at the current position, if there is room for it on the
page, or at the bottom of the page following if there is not.  This is
therefore like \CS{midtable}, except that if the table can't be fit on
the page it ends up on the bottom of a following page, not the top.
%
\itm{\cs{widetoptable}\arg{label\/}}
Inserts a table at the top of a page across both columns in
double column format. Equivalent to \CS{table} in single column
format.
%
\itm{\cs{widefulltable}\arg{label\/}}
Inserts a full page table in double column format. Equivalent to
\CS{fulltable} in single column format.
%
\itm{\CS{endtable}}
Ends any of the tables above.
%
\enddescription
Again, in these macros \meta{label\/} is an internal label which is assigned to
the table number.  The table number will include the chapter and section
numbers in the format ``$cc.ss.nn$'' if |\showchaptIDtrue| and
|\showsectIDtrue| have been selected.  The table can then be referred to
in the text by saying \cs{Tbl}\arg{label\/}.

%==================================================*
% RULED TABLES:

\subsection{Ruled Tables                \label{sect.ruled}}
\input TXSruled.doc

%==================================================*
\subsection{Lists of Figures and Tables}

In large technical documents it is often desirable to have a list of the
figures and/or tables which appear in the document, along with a brief
caption and the number of the page on which the figure or table appears.
This is similar to
a table of contents, but is separate from it.  In \TeXsis\  you can add a
figure or table to a list of figures or tables by using \CS{infiglist}
after \cs{figure} or \CS{intablelist} after \cs{table}, similar to the
way you would use \cs{caption}.  The syntax is \CS{infiglist}\arg{text}.
The text is the text of the (possibly abbreviated) caption which is to
appear in the list of figures.  Remember though, if a table has a
caption it should 
appear above the table body, so the \cs{caption} must still be the first
thing after \cs{table};  the \CS{infiglist} can come later.  
\index{lists!of figures}\index{lists!of tables}%

As an example, consider the ``penguin diagram'' already discussed.
To add an entry for this figure in the list of figures it 
would be entered as follows:
\TeXexample
\figure{Penguin}
\centerline{\epsfbox{/home/fermi/qcd/penguin.eps}}
\caption{Example of including EPS graphics in a figure.}
\infiglist{Example of including a figure in the list of figures.}
\endfigure
|endTeXexample
\relax
The \cs{caption} text is what is put under the figure in the body of the
paper, while the \CS{infiglist} text is what shows up in the list of
figures, and these do not have to be the same.

   To produce the list of figures at the end of the document you say
\CS{ListFigures}, and similarly to produce the list of tables say
\CS{ListTables}.  Even if the list is to appear at the front of the
document, along with the table of contents, you should print it at the
end and move the list to the front afterwards.  This is because until
the document is actually processed \TeX\  does not know on which page the
figure or table appears.

   One word of caution: figures and tables are produced by putting them
in ``floating inserts'', which \TeX\  saves up and prints when there is
room.  The entry into the list of figures or tables is not made until
the item actually makes its way into the output DVI file.  If you ask
for the list of figures or tables before one of these items is output it
will not be in the list, and in fact that entry for the figure or table
list will later end up spewing out on your terminal.  To be sure that
all floating insertions have been output you should say \cs{supereject}
before you print the list of figures or tables.

%==================================================*
\subsection{Listing Figure and Table Captions}

When a manuscript is submitted to some journals, like the Physical
Review, one is supposed to include a separate list of the captions of all
figures and tables.  This is similar to the lists created by
\CS{ListFigures} and \CS{ListTables}, but the page numbers are not
supposed to be included.  It is very easy to use the caption information
stored by \CS{infiglist} and \CS{intablelist} to make just a list of
captions, without including the page numbers.  The command to make a
list of all the figure captions is \CS{ListFigureCaptions}, and
similarly all the table captions can be listed with
\CS{ListTableCaptions}.  Just as with \CS{ListFigures} and
\CS{ListTables} these should appear at the end of the job, so that all
of the caption information will have already been stored.

It should be said that this method of making a list of captions assumes
that you have put the same captions under the figures, with \cs{Caption}
or \cs{caption}, as the caption in the list of figures entered with
\CS{infiglist}.

   It may help to know a little bit more about how the macros
\CS{ListFigures} and \CS{ListFigureCaptions} work.  The \CS{infiglist}
command writes the figure caption information you provide to a file
which has the same name as your manuscript file but with the extension
|.fgl|, meaning ``figure list'' (for tables the file name extension is
|.tbl|).  The page number on which the figure appears is also recorded
in this file.  When the whole document has been processed all of the
figure captions will have been saved in this file, and \CS{ListFigures}
and \CS{ListFigureCaptions} simply read this file back in.  One of them
uses the page numbers to construct a table of contents for the figures,
while the other just prints out the figure captions by themselves.  In
either case, it is important that all the caption information be in the
file when the list is to be made, which is why a \cs{supereject} may be
necessary to flush all floating insertions to the output.

%==================================================*
\subsection{Printing Figures and Tables at the End of a Document}

When working on a paper to be sent for publication it is sometimes
necessary to print all of the figures at the end of the document.  To cause
this to be done you simply have to say
\example
\cs{FiguresLast}
\endexample
at some point before you call \cs{figure} and its relatives, and then put
\example
\cs{PrintFigures}
\endexample 
\index{figures!at end of document}%
\index{tables!at end of document}%
\noindent
at the end of the document.  \cs{FiguresLast} causes \cs{figure} to save the
definition of your figure in an auxiliary file instead of immediately
creating the figure, and \cs{PrintFigures} reads the material back in from
that file.  If you say \cs{PrintFigures} without first saying
\cs{FiguresLast} nothing will happen.  You can return to having the
figures printed where they are defined by saying \cs{FiguresNow}.
In that case \cs{PrintFigures} does nothing; you have to have said
\cs{FiguresLast} for \cs{PrintFigures} to read any stored figures back in.

Tables can also be saved until the end of the document by saying
\cs{TablesLast} and then \cs{PrintTables}.  \cs{TablesNow} is the
opposite of \cs{TablesLast}.   

\pagecheck{4cm}

One important note: Since the figure or table material is copied to the
file in which it is held one line at a time it is important to use
\cs{Caption} and \CS{endCaption} for long captions instead of \cs{caption}.
If you use \cs{caption} \TeX\  will try to read the whole caption at once,
which may result in the error message 
``{\tt TeX capacity exceeded, sorry.}''\index{TeX capacity
exceeded@{\tt TeX capacity exceeded, sorry}} 


%==================================================*
\subsection{Nonstandard Figure and Table Placement}

On rare occasions you may need to have a figure or table from one
section of your document appear in another section of the document.  For 
example, if the introductory section is very short but has a figure,
that figure might end up at the top of the first page when you really
want it to appear at the top of the second page.  You can cause the
figure to come out later by moving it farther back in the manuscript
file, but if it is moved into the next section it will then have the
wrong figure number.
\index{figures!nonstandard placement}%
\index{tables!nonstandard placement}%

The solution to this problem is to have a way to override or modify the
way figure and table numbers are assigned.  Since the first part of the
figure or table number is the chapter or section number you need to change
this by saying
\example
\cs{setSectionID}\arg{something-else} 
\endexample
This changes the section number part of the figure and table numbers to
whatever you put as \meta{something-else}.  It will also effect equation
numbers, so it is best to have this inside of a group, so that the
change goes away at the end of the group.  Next you have to change the
figure or table number.  \TeXsis\  keeps count of tables and figures in
global variables, and increments these counters globally when a new
figure or table is created.  Thus just changing the counter inside a
group won't work, because the counter outside of the group would still
be modified.  To temporarily change the value of such a counter you use
\example
\cs{setcnt}\arg{counter}\arg{value}
\endexample
where \meta{value} is the temporary value to assign to the counter
\meta{counter}.  This should be done inside of a group, and when the
group ends the counter will go back to its previous global value.  You
should only use \cs{setcnt} once within a given group!

An example will make this procedure clear.
Suppose that Figure~\use{Fg.intro.17} is a part of
Section~\use{sect.intro}, but we wanted to show it much later in this
Manual (such as right about now).
It can be created in this section by saying:
\TeXexample
\begingroup       % changes are temporary
\setSectionID{1}  % changes the section ID
\setcnt\fignum{16}% figure counter is 1 less than we want
\midfigure{intro.17}               
\centerline{\epsfysize=4cm\epsfbox{|penguin.eps}}
\caption{A bizarrely placed figure for Section~\use{sect.intro}}
\infiglist{A bizarrely placed figure for Section~\use{sect.intro}}
\endfigure
\endgroup         % everything goes back the way it was
|endTeXexample

\begingroup                     % changes are temporary
\setSectionID{1}                % changes the section ID
\setcnt\fignum{16}              % figure number is 1 less than we want
\midfigure{intro.17}
\centerline{\epsfysize=4cm\epsfbox{\penguin.eps}}
\caption{A bizarrely placed figure for Section~\use{sect.intro}}
\infiglist{A bizarrely placed figure for Section~\use{sect.intro}}
\endfigure
\endgroup                       % everything goes back the way it was

In this case the figure number in the counter \cs{fignum} is set to one
less than the value we want, so that it comes out correctly when
\cs{bottomfigure} increments the count.  You can use \cs{setcnt} to
modify any of \TeXsis's global counters.  The complete list is given in
Section~\use{sect.labels} (where the use of \cs{use} is also described).

% If we are using Larry Ewing's penguin2.eps then we need to
% acknowlege it:

\def\tmp{penguin2}
\ifx\penguin\tmp
   The drawing in \Fig{intro.17}, which is the official \idx{Linux}
   Penguin, was created by \idx{Larry Ewing} of Texas A\&M University
   and turned into a scalable vector based postcript file by \idx{Neal
   Tucker}.
\fi


By the way, you should never move a figure out of a {\sl Chapter},
unless you move it to the end of the document, and the appropriate way
to do that is with \cs{FiguresLast}.

%>>> EOF TXSfigs.doc <<<