Ten artykuł powstał w 2003 roku, jednak do dzisiaj jest aktualny i obsługa wzorów w OpenOffice, i jego młodszym bracie – LibreOffice, wciąż odbywa się podobnie.
Częścią niektórych prac, zwłaszcza prac naukowych, są różnorakie wzory i formuły. Stosują je w swoich opracowaniach matematycy, fizycy, inżynierowie i zapewne nie tylko oni. W przypadku dokumentów mocno obłożonych wzorami, do pracy zostanie zagoniony niechybnie (La)TeX, czyli profesjonalny system składu dokumentów ukierunkowany na elementy stosowane w naukowych opracowaniach matematycznych. Jednak dla osób lubiących programy WYSIWYG (What You See Is What You Get), autorzy Writera przygotowali dość ciekawy system budowy formuł.
Filozofia tworzenia wzorów odbiega tutaj od znanej użytkownikom Worda, gdzie wzory wprowadza się wybierając ikonki z palety. Writer oferuje technologię bliższą wspominanym rozwiązaniom wokołoTeXowym, bowiem wzór zapisuje się ciągiem poleceń tekstowych.
Po wstawieniu do dokumentu wzoru, użytkownik otrzymuje do dyspozycji pole tekstowe, w które może wpisywać polecenia opisujące wzór. Polecenia te są przetwarzane i po chwili pojawiają się na ekranie w postaci graficznej, wiadomo więc od razu, jaki efekt przynosi nasza działalność. Na rysunku 1 przedstawiono edytor wzorów podczas pracy nad złożonym układem poleceń.
Wpisywanie poleceń wspomagane jest paletą z przyciskami wstawiającą podstawowe układy poleceń oraz zestawem opcji menu kontekstowego służących temu samemu celowi. Dzięki temu nie trzeba pamiętać wszystkich komend, ale można skorzystać z podpowiedzi.
Paleta podzielona jest na kilka sekcji. Jej pierwsze dwa rzędy służą do przełączania się pomiędzy tymi sekcjami. Mamy tam sekcję operatorów, relacji, operacji na zbiorach, funkcji, atrybutów, formatowań, nawiasów i inne. Po wybraniu jednej z tych sekcji, dolna część palety zmienia zawartość na odpowiednią wybranej grupie. Menu kontekstowe jest jej wiernym odpowiednikiem. Sekcje przedstawione są tam jako pozycje główne, zaś ich zawartość w postaci poleceń podmenu. Menu kontekstowe wywoływane jest prawym klawiszem myszy na obszarze okna z poleceniami.
Zestawu menu ani palety nie należy traktować jednak jako sposobu na „wyklikanie” wzoru, bowiem złożonych formuł nie da się wprowadzić bez samodzielnej ingerencji w polecenia, zwłaszcza w ułożenie nawiasów grupujących. Stąd konieczne jest uważne podejście do tematu i przyjrzenie się zasadom, które przedstawię w dalszej części na przykładach.
Wzory tworzone są poprzez układy poleceń tekstowych. Polecenia mogą mieć różną ilość argumentów oraz różne ich ułożenie. Na przykład nroot{4}{x} oznacza pierwiastek 4 stopnia z x. Jest więc to komenda nroot oraz jej dwa argumenty umieszczone za nią. Zapis x over y oznacza ułamek o liczniku x i mianowniku y. Komenda over ma również dwa argumenty, ale umieszczone nieco inaczej.
Czasami konieczne jest połączenie ciągu elementów w blok (przykładowo w celu umieszczenia złożonego układu w liczniku czy też mianowniku ułamka). Bloki tworzone są przy użyciu nawiasów klamrowych. Jeżeli więc napiszemy x + 1 over y, program umieści w liczniku ułamka tylko cyfrę 1, zaś x będzie stało przed całym ułamkiem. Natomiast zastosowanie nawiasów klamrowych i zapisanie {x + 1} over y sprawi, że do licznika trafi całe x + 1.
Proces tworzenia wzorów najlepiej przedstawić na kilku przykładach. W dalszej części przedstawiam zestaw kroków prezentujących różne aspekty budowania formuł. Najpierw prezentuję jak korzystać ze wspomagania i szablonów dostępnych spod palety graficznej lub menu kontekstowego. Później jednak wprowadzam Czytelnika w zawiłości ręcznej edycji poleceń oraz stosowania nawiasów grupujących.
Zaawansowanym Czytelnikom, którzy chcieliby rozgryźć istotę wzorów, polecam samodzielne przeanalizowanie takiego zapisu: {iint csub{%PI} csup{%PI + %omega} { {sin(x)} over {log_10(e^{x+1})} } dx} * { left [ matrix{a^2_1 # a_2^3 # a_3 ## b_1 # b_2 # b_3} right ] }. Jego skomplikowanie polega na dużej ilości bloków oraz, co najważniejsze, dość złożonej strukturze. Jeżeli układ ten okaże się zrozumiały, oznacza to, iż naprawdę przyswoiliśmy sobie ideę przyświecającą producentom edytora wzorów. W ramach ćwiczeń można spróbować zmienić wymiary macierzy lub indeksy jej elementów. Następnie można usunąć dolną granicę całkowania oraz zamienić ułamkowi licznik z mianownikiem. Mam nadzieję, że próby zakończą się sukcesem oraz że widok takiego skomplikowanego zapisu nie zniechęcił nikogo do poznania wzorów krok po kroku.
Część I. Korzystanie z szablonów
-
Każdy wzór jest osobnym obiektem, jego wstawianie zaczynamy od odszukania w menu Writera polecenia Wstaw a następnie podmenu Obiekt, by w nim ostatecznie uruchomić polecenie Formuła.
-
Naciskamy prawy klawisz myszy na obszarze okna poleceń. Z pojawiającego się menu wybieramy pozycję Formatowania a z niej opcję csub x. W pole z poleceniami wstawiony zostanie szablon: <?> csub{<?>}
-
Klikamy dwukrotnie w większy z kwadratów. W miejsce pierwszego zestawu znaków <?> wpisujemy słowo lim. Trafia ono w górną część wcześniej powstałego elementu.
-
Klikamy dwukrotnie w mniejszy kwadrat i w miejsce drugiego <?> wpisujemy x oraz spację.
-
Na palecie z symbolami graficznymi wybieramy przycisk Inne. Dolna część palety zmienia zawartość i możemy wybrać przycisk przedstawiający strzałkę w prawo. Za wstawionym kodem dopisujemy spację, a następnie klikamy symbol nieskończoność. Ostatecznie otrzymujemy kod: lim csub{x rightarrow infinity}.
-
Ustawiamy się na samym końcu poleceń i na palecie z symbolami wybieramy sekcję Funkcje i z niej polecenie pierwiastek stopnia. Wstawiony zostanie szablon postaci nroot{<?>}{<?>}. Pierwszy z pytajników zastępujemy cyfrą 4.
-
Klikamy dwukrotnie w kwadrat oznaczający wnętrze pierwiastka. Teraz naciskamy przycisk oznaczony symbolem sumy, umieszczony po lewej stronie ekranu. W pojawiającym się oknie odnajdujemy symbol Omega i klikamy go dwa razy. Wstawiony zostaje kod znaku Omega.
-
Za pierwiastkiem dopisujemy znak + (wpisując go z klawiatury) oraz spację. Teraz wchodzimy w sekcję Unarne/binarne operatory (pierwsza na palecie). Przy jej pomocy wstawiamy ułamek. Otrzymujemy kod <?> over <?> .
-
Klikamy w kwadracik oznaczający licznik ułamka i wpisujemy cyfrę 1.
-
Klikamy w kwadracik oznaczający mianownik ułamka i wpisujemy cyfrę 4
-
Nadszedł czas na zakończenie edycji wzoru. Klikamy jeden raz na obszarze kartki poza wzorem. Okna wspomagające wprowadzenie zbioru zniknęły. Sam wzór pojawia się jako osadzony obiekt, którego położeniem można sterować zgodnie z zasadami przemieszczania obiektów w dokumencie.
-
Klikamy dwukrotnie na obszarze wzoru. Program powraca do edycji wzoru i możliwe jest jego modyfikowanie.
Część II. Złożona praca z edytorem poleceń
-
Jeżeli wciąż jesteśmy w edycji jakiegoś wzoru, kończymy ją (patrz pkt.11). Następnie tworzymy nowy wzór poprzez polecenie Formuła z menu Wstaw -> Obiekt.
-
W pole Polecenia wpisujemy X=2*y+sin(x). Po chwili wzór pojawia się w postaci graficznej. Program sam zadba o atrybuty znaków. Inaczej będzie wyglądała zmienna, inaczej cyfry, a inaczej nazwy funkcji, zostaną również ustawione właściwe odstępy.
-
Do już istniejącego wzoru dopisujemy słówko div oznaczające znak dzielenia (ang. division = dzielenie), a następnie wpisujemy cos(x). Należy pamiętać, żeby elementy oddzielać od siebie spacjami.
-
Dzielenie często zapisuje się w postaci kreski ułamkowej. Służy temu polecenie over, które dopisujemy za uprzednio stworzonym wzorem (oddzielając je spacjami od elementów sąsiednich) dodając jeszcze liczbę 12, która trafi do mianownika. Efekt okazał się nieco zaskakujący, bowiem do licznika ułamka przeniosło się jedynie (x).
-
Teraz skorzystamy z nawiasów klamrowych grupujących ciąg poleceń, aby przenieść bardziej złożony fragment do licznika ułamka. Do istniejącego wzoru wpisujemy otwierający nawias klamrowy { przed funkcję sin(x), zaś zamykający } za funkcją cos(x). Okazuje się, że nawiasy grupujące spełniły swoje zadanie.
-
Przemieszczamy się kursorem w miejsce parametru funkcji cosinus i zamiast x wpisujemy tam polecenie %alfa zaś w miejsce parametru funkcji sinus wstawiamy %beta. W efekcie do wzoru trafią symbole odpowiadające tym nazwom.
-
Mnożenie jakie zastosowaliśmy w kroku 2 nie wygląda zbyt estetycznie, zastąpimy więc * poleceniem times (stosując przerwy przed i po tym słowie). Mnożenie zostało wyrażone zapomnianym już nieco w dobie komputerów faktycznym symbolem tej operacji.
-
Jeżeli chcemy aby mnożenie przez 2 dotyczyło całości naszego wzoru, należy postawić nawiasy ( przed zmienną y oraz ) na samym końcu wzoru. Niestety efekt nie jest zadowalający, a nawiasy zbyt małe.
-
Dopisujemy przed wstawionymi przed chwilą nawiasami słówko left (przed otwierającym) oraz right (przed zamykającym). Tym razem wzór wygląda o wiele lepiej. W ostatecznym rozrachunku nasza formułka wygląda więc następująco: X=2 times left( y+{sin(%beta) div cos(%alfa)} over 12 right)
-
Kończymy edycję wzoru. Okna wspomagające wprowadzenie zbioru zniknęły. Sam wzór pojawia się jako osadzony obiekt.
-
Klikamy dwukrotnie na obszarze wzoru. Program powraca do edycji wzoru i możliwe jest jego modyfikowanie.
-
Za wzorem dopisujemy ciąg poleceń +z_1+z_2^3. Okazuje się, że znak podkreślenia powoduje powstanie indeksu dolnego, zaś znak „ptaszka” (^) to indeks górny.