calc

Pakiet zawiera makroinstrukcje rozszerzające zakres działań na rejestrach. Mamy do dyspozycji następujące polecenia:
Polecenie opis
\newcounter{rejestr } definicja nowego rejestru; jest on inicjowany wartością 0
\newcounter{rejestr }[inny rejestr ] definicja nowego rejestru; jest on inicjowany wartością 0 i staje się zależny od rejestru inny rejestr. Wykonanie polecenia \stepcounter{inny rejestr } lub \refstepcounter{inny rejestr } powoduje wyzerowanie rejestru rejestr 
\setcounter{rejestr }{wartość } ustawienie wartości rejestru
\addtocounter{rejestr }{wartość } dodanie do rejestru rejestr  wartości
\stepcounter{rejestr } incrementacja rejestru rejestr 
\refstepcounter{rejestr } incrementacja rejestru rejestr; jeżeli oznaczymy etykietą miejsce (label), to wartością polecenia \ref będzie aktualna wartość rejestru
Napis reprezentujący wartość rejestru możemy uzyskać wywołując polecenie
\therejestr
(zamiast określenia rejestr  należy użyć nazwy właściwego rejestru). Definiując wartość rejestru (parametr wartość ) możemy używać liczb całkowitych, wartości innych rejestrów (możliwych do uzyskania poleceniem \value{rejestr }, lub \therejestr ) oraz operatorów -, +, *, /. Działania wykonywane są w kolejności zgodnej z przyjętymi zwyczajami. Możemy używać notacji nawiasowej (()) do wymuszenia kolejności wykonania działań.

Przykład

\newcounter{x}
\newcounter{y}
\setcounter{x}{2}
\setcounter{y}{3}
\setcounter{y}{(\value{x} + 5) * \value{y}}

Wartością rejestru y jest \they.
Powyższa sekwencja daje następujący efekt:

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:
Polecenie opis
sp jednostka w której TeX prowadzi obliczenia (65536 sp = 1 pt)
pt punkt typograficzny (1/72.27 in = 0.351 mm
bp duży punkt (72 bp = 1 in); używany w postscripcie)
dd didot (1/72 cala francuskiego, = 0.376 mm)
mm milimetr (= 1.845 pt)
pc pica (=12 pt = 4.218 mm)
cc cicero (= 12 dd = 4.531 mm)
cm centymetr (=10 mm = 2.371 pc)
in cal (= 2.54 mm = 72.27 pt = 6.022 pc)
ex miara względna; wynika z wysokości litery x w aktualnie używanym foncie)
em miara względna; wynika z szerokości litery m w aktualnie używanym foncie)
mu jednostka używana we wzorach matematycznych (18 mu = 1 em)
Polecenie opis
\newlength{\nazwa } definicja nowego rejestru długości
\setlength{\nazwa }{długość } ustawienie wartości
\addtolength{\nazwa }{długość } dodanie do aktualnej wartości rejestru
\settowidth{\nazwa }{tekst } ustawienie wartości rejestru nazwa  na wartość równą naturalnej szerokości tekstu tekst 
\settoheight{\nazwa }{tekst } ustawienie wartości rejestru nazwa  na wartość równą naturalnej wysokości tekstu tekst 

Parametr długość  może być zdefiniowany za pomocą wyrażenia arytmetycznego. Proszę pamiętać o sensie fizycznym wykonywanych operacji (mają sens następujące operacje:
długość = długość + długość,
długość = długość * liczba,
liczba = \ratio{długość}{długość},
długość = długość / liczba).
Operatorem dzielenia długości przez długość jest makroinstrukcja
\ratio{długość }{długość }
a wartość rzeczywistą możemy uzyskać używając makroinstrukcji
\real{liczba rzeczywista }
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 /. 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 \the\rejestr 1

Przyklad:

\newlength{\x}
\newlength{\y}
\setlength{\y}{5cm}
\settowidth{\x}{ala ma kota}
\setlength{\y}{3cm * \ratio{\y}{\x}}
Rejestr y ma wartość: \the\y
Powyższa sekwencja daje następujący efekt:

Pakiet jest dostępny pod adresem:
ftp://ftp.gust.org.pl/TeX/macros/latex/contrib/required/tools/calc.dtx


1 Proszę zwrócić uwagę że parametr określający nazwę rejestru długości zaczyna się znakiem \
Włodzimierz Macewicz
Ostatnie zmiany: 05.05.2014.