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
|
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<title> Zastaw ciekawych makroinstrukcji </title>
<LINK REL="stylesheet" TYPE="text/css" HREF="mycss.css">
<meta http-equiv="Content-language" content="pl">
<meta name="Author" content="W³odzimierz Macewicz">
<meta name="Keywords" content="tex, latex, makroinstrukcje, pakiety makroinstrukcji, Wirtualna Akademia">
</head>
<body bgcolor=#a0f0a0>
<h2><a name=calc>calc</a></h2>
Pakiet zawiera makroinstrukcje rozszerzaj±ce zakres dzia³añ
na rejestrach. Mamy do dyspozycji nastêpuj±ce polecenia:<br>
<table border=1>
<tr><th>
Polecenie </th><th> opis</th></tr>
<tr><td>
<code>\newcounter{<i>rejestr</i> }</code> </td><td> definicja nowego
rejestru; jest on inicjowany warto¶ci± 0</td></tr>
<tr><td>
<code>\newcounter{<i>rejestr</i> }[<i>inny rejestr</i> ]</code> </td><td>
definicja nowego rejestru;
jest on inicjowany warto¶ci± 0
i staje siê zale¿ny od rejestru
<i>inny rejestr</i>. Wykonanie
polecenia
<code>\stepcounter{<i>inny rejestr</i> }</code> lub
<code>\refstepcounter{<i>inny rejestr</i> }</code>
powoduje
wyzerowanie rejestru <i>rejestr</i> </td></tr>
<tr><td>
<code>\setcounter{<i>rejestr</i> }{<i>warto¶æ</i> }</code> </td><td> ustawienie warto¶ci
rejestru</td></tr>
<tr><td>
<code>\addtocounter{<i>rejestr</i> }{<i>warto¶æ</i> }</code> </td><td>
dodanie do rejestru <i>rejestr</i> warto¶ci</td></tr>
<tr><td>
<code>\stepcounter{<i>rejestr</i> }</code> </td><td> incrementacja rejestru
<i>rejestr</i> </td></tr>
<tr><td>
<code>\refstepcounter{<i>rejestr</i> }</code> </td><td> incrementacja rejestru
<i>rejestr</i>;
je¿eli oznaczymy etykiet± miejsce (<code>label</code>), to
warto¶ci± polecenia <code>\ref</code> bêdzie aktualna
warto¶æ rejestru</td></tr>
</table>
Napis reprezentuj±cy warto¶æ rejestru mo¿emy uzyskaæ wywo³uj±c
polecenie<br>
<code>\the</code><i>rejestr</i><br>
(zamiast okre¶lenia <i>rejestr</i>
nale¿y u¿yæ nazwy w³a¶ciwego rejestru).
Definiuj±c warto¶æ rejestru (parametr <i>warto¶æ</i> ) mo¿emy u¿ywaæ liczb
ca³kowitych, warto¶ci innych rejestrów (mo¿liwych do uzyskania
poleceniem <code>\value{<i>rejestr</i> }</code>, lub <code>\the<i>rejestr</i> </code>)
oraz operatorów <code>-</code>, <code>+</code>, <code>*</code>, <code>/</code>. Dzia³ania wykonywane
s± w kolejno¶ci zgodnej z przyjêtymi zwyczajami. Mo¿emy u¿ywaæ
notacji nawiasowej (<code>()</code>) do wymuszenia kolejno¶ci wykonania dzia³añ.
<p>
<b>Przyk³ad</b>
<pre>
\newcounter{x}
\newcounter{y}
\setcounter{x}{2}
\setcounter{y}{3}
\setcounter{y}{(\value{x} + 5) * \value{y}}
Warto¶ci± rejestru y jest \they.
</pre>
Powy¿sza sekwencja daje nastêpuj±cy efekt:<br clear=all>
<img src=calc1.gif>
<p>Oprócz dzia³añ na liczbach mamy mo¿liwo¶æ dokonywania dzia³añ
na d³ugo¶ciach. D³ugo¶æ mo¿e byæ podawana w jednostkach przyjêtych
w TeX-u:<br>
<table border=1>
<tr><th>
Polecenie </th><th> opis</th></tr>
<tr><td>
sp </td><td> jednostka w której TeX prowadzi obliczenia
(65536 sp = 1 pt) </td></tr>
<tr><td>
pt </td><td> punkt typograficzny (1/72.27 in = 0.351 mm </td></tr>
<tr><td>
bp </td><td> du¿y punkt (72 bp = 1 in); u¿ywany w postscripcie) </td></tr>
<tr><td>
dd </td><td> didot (1/72 cala francuskiego, = 0.376 mm) </td></tr>
<tr><td>
mm </td><td> milimetr (= 1.845 pt) </td></tr>
<tr><td>
pc </td><td> pica (=12 pt = 4.218 mm) </td></tr>
<tr><td>
cc </td><td> cicero (= 12 dd = 4.531 mm) </td></tr>
<tr><td>
cm </td><td> centymetr (=10 mm = 2.371 pc) </td></tr>
<tr><td>
in </td><td> cal (= 2.54 mm = 72.27 pt = 6.022 pc) </td></tr>
<tr><td>
ex </td><td> miara wzglêdna; wynika z wysoko¶ci litery <code>x</code> w
aktualnie u¿ywanym foncie) </td></tr>
<tr><td>
em </td><td> miara wzglêdna; wynika z szeroko¶ci litery <code>m</code> w
aktualnie u¿ywanym foncie) </td></tr>
<tr><td>
mu </td><td> jednostka u¿ywana we wzorach matematycznych
(18 mu = 1 em) </td></tr>
</table>
<table border=1>
<tr><th>
Polecenie </th><th> opis</th></tr>
<tr><td>
<code>\newlength{\<i>nazwa</i> }</code> </td><td> definicja nowego rejestru
d³ugo¶ci</td></tr>
<tr><td>
<code>\setlength{\<i>nazwa</i> }{<i>d³ugo¶æ</i> }</code> </td><td> ustawienie warto¶ci</td></tr>
<tr><td>
<code>\addtolength{\<i>nazwa</i> }{<i>d³ugo¶æ</i> }</code> </td><td> dodanie
do aktualnej warto¶ci rejestru</td></tr>
<tr><td>
<code>\settowidth{\<i>nazwa</i> }{<i>tekst</i> }</code> </td><td> ustawienie
warto¶ci rejestru <i>nazwa</i> na
warto¶æ równ± naturalnej szeroko¶ci
tekstu <i>tekst</i> </td></tr>
<tr><td>
<code>\settoheight{\<i>nazwa</i> }{<i>tekst</i> }</code> </td><td> ustawienie
warto¶ci rejestru <i>nazwa</i> na
warto¶æ równ± naturalnej wysoko¶ci
tekstu <i>tekst</i> </td></tr>
</table>
<p>Parametr <i>d³ugo¶æ</i> mo¿e byæ zdefiniowany za pomoc±
wyra¿enia arytmetycznego. Proszê pamiêtaæ o sensie fizycznym wykonywanych
operacji (maj± sens nastêpuj±ce operacje:<br>
d³ugo¶æ = d³ugo¶æ + d³ugo¶æ, <br>
d³ugo¶æ = d³ugo¶æ * liczba, <br>
liczba = <code>\ratio{d³ugo¶æ}{d³ugo¶æ}</code>,<br>
d³ugo¶æ = d³ugo¶æ / liczba). <br>
Operatorem
dzielenia d³ugo¶ci przez d³ugo¶æ jest makroinstrukcja<br>
<code>\ratio{<i>d³ugo¶æ</i> }{<i>d³ugo¶æ</i> }</code><br>
a warto¶æ rzeczywist± mo¿emy uzyskaæ u¿ywaj±c makroinstrukcji<br>
<code>\real{<i>liczba rzeczywista</i> }</code><br>
której parametrem jest tekst bêd±cy liczb± rzeczywist± (zapis
z kropk± dziesiêtn±).
Do dzielenia d³ugo¶ci przez liczbê mo¿emy u¿ywaæ znaku <code>/</code>.
Nale¿y pamiêtaæ ¿e definicja wyra¿enia powinna zaczynaæ siê od
elementu bêd±cego d³ugo¶ci±, a w wyniku kolejnych obliczeñ warto¶ciami
po¶rednimi musz± byæ d³ugo¶ci. Napis reprezentuj±cy warto¶æ rejestru
mo¿emy uzyskaæ poleceniem
<code>\the\<i>rejestr</i> </code><sup><a href=#fnc1>1</a></sup>
<p>
<b>Przyklad:</b><br>
<pre>
\newlength{\x}
\newlength{\y}
\setlength{\y}{5cm}
\settowidth{\x}{ala ma kota}
\setlength{\y}{3cm * \ratio{\y}{\x}}
Rejestr y ma warto¶æ: \the\y
</pre>
Powy¿sza sekwencja daje nastêpuj±cy efekt:<br clear=all>
<img src=calc2.gif>
<p>Pakiet jest dostêpny pod adresem:<br>
<a href=ftp://ftp.gust.org.pl/TeX/macros/latex/requiredtools/calc.dtx>
ftp://ftp.gust.org.pl/TeX/macros/latex/contrib/required/tools/calc.dtx</a><p>
<hr align=left width=20%>
<sup><a name=fnc1>1</a></sup>
Proszê zwróciæ uwagê ¿e parametr okre¶laj±cy nazwê rejestru d³ugo¶ci
zaczyna siê znakiem <code>\</code>
<hr>
<a href=../../texologia.html><img src="../../gify/lew-7vs.gif" hspace=10 border=0 align=left></a>
<a href=mailto:W.Macewicz@ia.pw.edu.pl><img src="../../gify/mail.gif" hspace=10 align=left></a>
<a href=http://www.ia.pw.edu.pl/~wujek/index.html>W³odzimierz Macewicz</a><br clear=all>
<hr>
<!--#config timefmt="%y-%m-%d" -->
Ostatnie zmiany: 12.09.2004.
</body>
</html>
|