summaryrefslogtreecommitdiff
path: root/macros/latex209/contrib/fillform/fillform.tex
blob: 26da5677ce19b465af9a173aac83fd812e463520 (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
\documentstyle[select]{article}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Copyright (C) 1992 by Zden\v{e}k Wagner. All rights reserved.
%%
%% IMPORTANT NOTICE
%%
%% You are NOT ALLOWED to delete this notice. You are NOT ALLOWED to take
%% money for the distribution or use of this file (or a changed version)
%% except for a nominal charge for copying etc.
%%
%% If you change or add something, you are obliged to comment it in such a
%% way that anyone could restore the original version.
%%
%% Error Reports and suggestions for improvements to:<Wagner@csearn.bitnet>
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\typeout{--- >>>FillForm.TeX<<< --- Copyright (C) 1992 by Z.Wagner}
\typeout{.........................................................}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                         %
% This file is used to fill in forms, questionnaires, etc. with \LaTeX.   %
%                                                                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% At the very beginning of the file, we define the page layout options so %
% that the whole page is available. No headers, footers, side margins and %
% similar stuff are allowed.                                              %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\oddsidemargin -1in
\evensidemargin -1in
\textwidth 21cm
\textheight 31cm
\marginparwidth 0pt
\marginparsep 0pt
\topmargin -1in
\headsep 0pt
\footskip 0pt
\headheight 0pt
\footheight 0pt
\parindent 0pt
\pagestyle{empty}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The following macro is called from SELECT.STY. (Please, try FAIRYSEL.TEX,
% if you want to see an example, how to use SELECT.STY.) The description
% inside this comment is used for beginners who would like to change this
% file to suit their personal needs. TeXperts would understand this simple
% code without my explanations.
%
% You need to do only two things to make this file work for you. First, you
% might like to change \unitlength to some other unit. It is not advisable to
% use large units as 1cm or 1in or even larger because you would be unable to
% control positionning. The second think, which might require modification,
% is the definition of the {picture} environment. The form of the command
% applicable to this file is:
%
%      \begin{picture}(W,H)(0,-Y)
%
% Here, W and H are the available width and height of the paper,
% respectively (expressed in terms of \unitlength). Assuming that the area of
% height T on the top of the paper is not available (due to printer hardware)
% when feeding it manually, then Y = H + T. For STAR LC 24--10, H = 260mm,
% T = 20mm, thence using \unitlength of 1mm we get
%
%      \begin{picture}(210,260)(0,-280)
%
% You may measure the available space used by your printer by printing
% TESTPAGE.TEX, which, I hope, is widely available.
%
% Now you want to commence filling-in your form. You can print only one
% page per file. The name of the fill-in document is transferred between
% \LaTeX passes using the mechanism of SELECT.STY. You have to delete
% FILLFORM.SEL if you want to work with other document. The fill-in document,
% however, remains on the hard disk. If you enter the name of the existing
% document, it is loaded from the disk and doesn't allow interactive input.
% This enables you to prepare and preview several pages of fill-in documents,
% preview them and then print them.
%
% As mentioned above, the input is interactive within the first pass. The
% input is stored in the file of the specified name and then processed. If you
% are not satisfied with what you entered, you may edit the file without the
% necessity of re-typing all entries.
%
% The first question, you are asked, is the request for the name of the
% fill-in document. Please notice that the macrocode adds the `default'
% extension `.frm'. You may specify path (but use `/' as separators, not
% MS--DOS's `\'!) but extension must not appear in your entry. If the file
% exists, it is loaded. If not, interactive questions are asked.
%
% Take the form to be filled in and your ruler. you must supply `Left
% distance', which is the distance of the lower left corner of the input
% field from the left edge of the paper (of course in \unitlength), `Upper
% distance', which is the distance of the lower left corner of the input
% field from the upper edge of the paper, `Width', which is the width of the
% input field, and `Height', which is the height of the input field.
% Afterwards, the file requests the alignment. The text is always aligned
% with the bottom of the input field. As default, it is centered. You can
% enter `l' for left or `r' for right alignment, respectively. Entering the
% text needs some precautions. Your interactive input is written to the file
% and then processed using standard \input command. Therefore, all control
% sequences (those words starting with `\') must be preceded by `\string',
% otherwise \TeX would run out of memory. I this case, you do not need Wizard
% as suggested in the error message. You just need to use \string, e.g.
% \string\today for date. Remember that \TeX eats up all spaces after the
% control sequence. Thence `\string\it John Wilkiesbood' will produce
% `undefined control sequence \itJohn' when the frm-file is processed. To
% prevent such errors, you must enter `\string\it{}John Wilkiesbood'. Anyway,
% once you make such an error, the easiest way to recover is to edit the
% frm-file and re-\LaTeX FILLFORM.TEX.
%
% Type `y' if there are more items to be input or `n' if everything is
% done. Afterwards, the file is closed and then input and processed. Just
% before inputting your file, FILLFORM.SEL asks the question:
%
%   Show frames? (y/n)
%
% If you answer `y', all entries will be framed. Thence you can verify in
% preview that all entries fit inside the space available. When everything is
% O.K., rerun FILLFORM.TEX without frames.
%
% If there is something wrong in your fill-in document, edit the frm-file
% and then rerun FILLFORM.TEX. Your document will automatically be loaded.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\selection{%
\typein[\fillin]{Enter the name of the fill-in document}
\writeline{\string\def\string\y{y}}
\writeline{\string\typein[\string\frames]{Show frames? (y/n)}}
\writeline{\string\ifx \string\y\string\frames
           \string\let\string\formbox=\string\framebox \string\else}
\writeline{\string\let\string\formbox=\string\makebox \string\fi}
\writeline{\string\input{\fillin.frm}}
\openin1 \fillin.frm
\ifeof1
 \typeout{No file \fillin.frm}
 \newwrite\form\relax
 \immediate\openout\form=\fillin.frm\relax
 \immediate\write\form{\string\setlength{\string\unitlength}{1mm}}
 \immediate\write\form{\string\begin{picture}(210,260)(0,-280)}
 \newcount\nextctr  \nextctr=1
 \def\next{y}
 \def\no{n}
 \loop \ifnum \nextctr > 0
   \typein[\x]{Left distance}
   \typein[\y]{Upper distance}
   \typein[\w]{Width}
   \typein[\h]{Height}
   \typein[\pos]{Position}
   \typein[\text]{Text}
   \immediate\write\form{\string\put(\x,-\y)
                        {\string\formbox(\w,\h)[b\pos]{\text}}}
   \typein[\next]{Next item? (y/n)}
   \ifx\no\next \nextctr=0 \fi
 \repeat
 \immediate\write\form{\string\end{picture}}
 \immediate\closeout\form
\else \closein1\relax
\fi
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Now we begin the document, make selection (which calls \selection defined
% above) and finish. There's nothing else to be done.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
\makeselection
\end{document}