Adam Dawidziuk
TeX, jak wiadomo, nie jest zaopatrzony w standardowy interfejs użytkownika, co daje dużą swobodę wyboru metod przygotowywania dokumentów źródłowych. O ile format plików wejściowych i sposób ich przetwarzania przez TeX-a pozostaje z założenia niezmienny, to narzędzia wspomagające wprowadzanie treści dokumentów we właściwym formacie są nieustannie rozwijane. W artykule jest opisany jeden z możliwych sposobów używania TeX-a w systemie UNIX, ze szczególnym uwzględnieniem pakietu AUC TeX.
Brak narzuconego i okienkowego interfejsu użytkownika powoduje, że TeX bywa postrzegany jako program przestarzały i trudny. Przeciętny użytkownik komputera zwykle nie jest w stanie zrozumieć sposobu działania TeX-a, a jeszcze trudniej dostrzec mu korzyści, jakie można osiągnąć przygotowując dokumenty w ten właśnie sposób. Pierwszą i najpoważniejszą barierą pojęciową jest fakt, że TeX nie jest systemem kompletnym, ale wymaga korzystania z wielu dodatkowych narzędzi wspomagających pracę. Wprawdzie mało kto wprowadza treść dokumentu z klawiatury w chwili, gdy TeX pokaże na ekranie dwie gwiazdki, ale na pomysł stworzenia sobie wygodnego i efektywnego środowiska pracy też niestety wpada nieliczne grono użytkowników.
Działanie TeX-a można sprowadzić do przetwarzania
plików. TeX czyta dokument źródłowy, zwykle z pliku o nazwie
z przyrostkiem .tex
, i tworzy obraz kolejnych stron
dokumentu w pliku o nazwie kończącej się napisem
.dvi
. Zadaniem użytkownika jest przygotowanie
plików wejściowych i uruchomienie ciągu przetworzeń, które doprowadzą
do pożądanego wyniku. Zarówno przygotowanie danych, jak i ich
przetwarzanie można zorganizować w zasadzie w dowolny sposób. Istnieją
dwie istotnie różne metody tworzenia plików z danymi wejściowymi:
generowanie i wpisywanie.
Generowanie danych wejściowych do TeX-a to zagadnienie bardzo rozległe i mające wiele praktycznych zastosowań. Sam proces przygotowania danych, ich obróbka i metody generowania mogą być bardzo różne. Wszystko zależy od celu przetwarzania i postawionych wymagań. TeX jest doskonałym narzędziem do formatowania wydruków z baz danych (np. słowniki, sprawozdania) pozwalającym na uzyskanie wysokiej jakości typograficznej przy całkowitej automatyzacji procesu składania tekstu. Często użytkownik (autor tekstu) nie ma bezpośredniego kontaktu z TeX-em i nie musi znać specyficznego dla TeX-a systemu oznaczeń tekstu. Jednak jest to temat znacznie wykraczający poza ramy tego artykułu.
Większość użytkowników zadowala się zwyczajnym wpisywaniem tekstu.
W takim wypadku najważniejszy jest ergonomiczny i dobrze opanowany
edytor tekstów. Zwykle każdy ma swój ulubiony edytor, w którym wszystko
mu wychodzi najłatwiej. I prawdopodobnie to będzie ten edytor, którego
należy użyć tworząc pliki źródłowe do przetwarzania TeX-em. Jeśli jednak
zamierzamy pisać dużo, to nie powinniśmy eksperymentować z edytorami zbyt
prostymi. Czas poświęcony na poznanie inteligentnego, konfigurowalnego edytora
zwróci się już po kilku dniach pisania. Z edytorów dostępnych
w systemie UNIX doskonały jest vim
. Można go ,,nauczyć''
wielu pożytecznych skrótów, a jego ostatnie wersje potrafią rozpoznawać
składnię i zwiększać czytelność plików źródłowych przez stosowanie
kolorów. Lepszy jest tylko emacs
(tak twierdzą użytkownicy
Emacsa). Niestety, zarówno vim
jak i Emacs
u niektórych wywołują reakcje alergiczne, a na to rady nie ma.
Zwolennicy okienek MS nie powinni czuć się pokrzywdzeni (a przynajmniej nie z powodu braku edytora). Z rzeczy dobrych godny polecenia jest WinEdit, który może bardzo dużo i składnię pliku TeX-owego zna na tyle dobrze, że wyróżnia kolorami odpowiednie fragmenty. Jest łatwo konfigurowalny w zakresie wystarczającym do efektywnej pracy. Między innymi umożliwia powiązanie z polami menu dowolnych skryptów np. przetwarzających pliki źródłowe. Daje się używać bez zbyt częstego sięgania do myszy. Jedną z jego głównych zalet jest sprawdzanie na bieżąco składni wprowadzanych słów -- te których brak w słowniku są wyróżniane. Do podstawowych wad należy konieczność konfigurowania właściwie wszystkiego od początku oraz to, że, w przeciwieństwie do vima i Emacsa nie jest to program bezpłatny. Cena jest jednak umiarkowana.
Przewidując trwały związek z TeX-em warto
usprawnić przetwarzanie
pliku źródłowego do postaci
wynikowej. Nie ma wielkiego problemu, jeśli przetwarzaniu podlega
jeden plik, a formatem wyjściowym jest dvi. Już
jednak konwersja pliku dvi do PostScriptu oznacza
konieczność uruchomienia dodatkowego programu.
Jeśli jeszcze dołożymy do tego
tworzone podczas pisania rysunki (w szczególności rysunki
generowane, np. MetaPost-em) to liczba programów, które trzeba
uruchomić w ściśle określonym porządku, zniechęca do robienia tego
ręcznie. Łatwo się pomylić.
Dobrym pomysłem jest napisanie skryptu,
który wykonuje wszystkie operacje.
Przetwarzanie za każdym
razem wszystkich plików źródłowych nie zawsze jest konieczne,
a znacznie wydłuża czas oczekiwania na wynik. W takiej sytuacji
najwygodniej użyć programu make
.
Doświadczony użytkownik TeX-a zwykle ma własny zestaw programów, które czynią życie łatwiejszym. Często w skład tego zestawu wchodzi dodatkowo jakiś edytor strumieniowy np. sed, czy częściej awk lub perl (najbardziej wszechstronny). W przypadku umieszczania w dokumentach ilustracji lub zdjęć należy uwzględnić specjalizowane programy do przetwarzania obrazków itd. Podstawową zaletą TeX jest łatwość zintegrowania go z dowolnym używanym systemem.
Każdy może więc używać TeX dokładnie tak, jak lubi i tak jak mu wygodnie. Trudno jest w jednym krótkim tekście omówić wszystkie typowe przypadki. Ograniczę się do przykładu szczególnego -- systemu UNIX. Przyczyn tego wyboru mógłbym wymienić wiele. Przede wszystkim cały UNIX zbudowany jest z programów wykonujących dobrze określone funkcje, takich ,,klocków'', z których można zbudować dowolnie skomplikowane systemy przetwarzania informacji. Nie posiadający interfejsu użytkownika, przetwarzający pliki w inne pliki i konfigurowalny TeX łatwo daje się dopasować do potrzeb użytkownika UNIXa. Oczywiście istnieje mnóstwo różnych i dobrych sposobów pracy z TeX-em. Zarówno podany przykład edytora (Emacs z AUC TeX-em), jak i techniki przetwarzania dokumentów noszą wyraźne piętno moich osobistych preferencji.
AUC TeX to dostępne w edytorze emacs
zintegrowane środowisko do tworzenia i przetwarzania dokumentów
TeX-owych i LaTeX-owych. Możliwości AUC TeX-a są ogromne, na
szczęście nie trzeba wiedzieć wszystkiego, aby z niego
korzystać. AUC TeX-a można oswajać ,,krok po kroku'', podobnie jak
i samego Emacsa.
Edytor emacs
ma długą historię w systemie UNIX.
W dużej części został napisany w języku Lisp
(dokładniej w dialekcie Emacs Lisp). Jest to język funkcyjny służący
przede wszystkim do porozumiewania się z Emacsem. Lisp bywał chętnie
stosowany w tworzeniu tzw. ,,systemów sztucznej inteligencji''. Nie dziwi
więc naprawdę nieprzeciętna inteligencja edytora Emacs jeśli uświadomimy sobie,
że jest to największy z popularnych programów napisanych w Lispie.
A możliwości i umiejętności Emacsa są chyba niezgłębione (strzyże,
śpiewa, tańczy, gotuje, krawaty wiąże...).
Edytor ten bywa niezbyt lubiany przez początkujących
użytkowników ze względu na sposób wydawania poleceń i niezbyt
zrozumiałą terminologię stosowaną w dokumentacji
i komunikatach.
Koncepcja porozumiewania się z edytorem jest
rzeczywiście mocno egzotyczna, ale wbrew pozorom ma głęboki
sens.
Kluczem do sukcesu jest znalezienie klawisza
Meta
na klawiaturze. Wciśnięcie tego klawisza ze
znakiem x
(oznaczane jako Meta-x
lub M-x
) rozpoczyna wprowadzanie poleceń.
W klawiaturze komputera PC zwykle klawiszem Meta
jest
Alt
. Jeśli jednak Alt
został
przedefiniowany (np. w celu wprowadzania polskich znaków) to
M-x
można wprowadzić sekwencyjnie wciskając
najpierw klawisz Esc
, a potem
x
. Tego typu problemy nie istnieją z klawiszem
Ctrl
. Podstawowymi chwytami są
Ctrl-x
i Ctrl-c
, opisywane
często jako C-x
i C-c
.
Mocną stroną Emacsa jest dokumentacja (C-h
). Funkcje przypisane
klawiszom zmieniają się w zależności od trybu pracy (mode), co
zawsze można sprawdzić wpisując C-h m
. Wiedząc, że Emacs może
otwierać wiele plików jednocześnie, ale każdy w innym buforze
(buffer), że w środowisku okienkowym może otwierać wiele okien
zwanych ramkami (frames) i że każda ramka może być podzielona na
wiele ,,okien'' (window) można
bez problemu zrozumieć język dokumentacji.
Istnieje wiele odmian Emacsa. Na potrzeby tego artykułu założymy sobie, że
dysponujemy zainstalowaną, współczesną wersją XEmacsa. Założenie to jest
uzasadnione, ponieważ normą są już komputery, na których działające okienka
graficzne nie powodują zatrzymania systemu. A XEmacs dobrze wygląda
w okienkach. Poza tym w XEmacsie AUC TeX jest domyślnie
zainstalowany, co pozwala skrócić ten tekst o rozdział poświęcony
instalacji. Dodatkowo nie będę rozwijać problemu konfiguracji, którą
w XEmacsie można wykonać za pomocą myszy. Wszystkie ustawienia AUC TeX-a
wykonuje się wybierając myszą z menu Options Customize Emacs Wp
Tex AUC Tex
, a potem już według uznania. W to samo miejsce
można trafić wciskając M-x customize
, tyle że po drodze jest
więcej objaśnień i łatwiej się zagubić.
Jeśli ktoś nie dysponuje XEmacsem lub nie lubi myszy, to będzie musiał wpisywać
odpowiednie zaklęcia do pliku .emacs
, który znajduje się
w katalogu domowym użytkownika. Pomocne może być odszukanie pliku
tex.el
i tex-site.el
, które leżą gdzieś
z innymi plikami Emacsa (ale w różnych katalogach -- przyda się
program find
). Można w nich podejrzeć, jak są zadawane
wartości początkowe list i zmiennych i je zmodyfikować. Nie należy
przy tym zmieniać pliku tex.el
(ani jego skompilowanej wersji
tex.elc
) lecz kopiować co trzeba do pliku .emacs
.
Jeśli zmiana ma dotyczyć wszystkich użytkowników należy odpowiedni fragment
pliku tex.el
skopiować do pliku tex-site.el
i tam pozamieniać wszystko to, co wymaga zmiany.
I jeszcze jedna uwaga dla początkujących: w Emacsie można zapisać plik
z bufora na dysk wciskając C-x C-s
, a pracę
z Emacsem zakończyć sekwencją C-x C-c
. Emacs nie jest
jednak małym programem, więc szanując swój czas lepiej nie otwierać go
i nie zamykać bez wyraźnej potrzeby, zwłaszcza, że raz otwarty mocno nie
przeszkadza.
Do efektywnego wykorzystania Emacsa na potrzeby języka polskiego jest potrzebna
polska klawiatura (każdy robi to jak lubi, jedna z klasycznych metod
w systemie XWindow sprowadza się do wykorzystania xmodmap
)
oraz polski słownik do programu ispell
. Zagadnienia te są
dokładnie omówione w tekstach poświęconych polskim ,,ogonkom''.
Po uruchomieniu edytora Emacs utworzenie nowego pliku jest możliwe po
wciśnięciu C-x C-f
i podaniu nazwy. Podając nazwę pliku
z przyrostkiem .tex
zmusimy edytor do wejścia w tryb
LaTeX-mode
. Informacja o tym powinna pojawić się
w wierszu trybu pracy (Mode Line) w dolnej części okna
jako napis LaTeX
. Można też wymusić wejście w tryb
LaTeX
wywołując polecenie LaTeX-mode
(M-x
LaTeX-mode
). Do rozwijania nazw można użyć znaku klawisza tabulacji
(Tab
).
Jeśli powyższe działania nie prowadzą do uruchomienia
AUC TeX-a, to albo nie jest on zainstalowany, albo w pliku
.emacs
brakuje wiersza
(require 'tex-site)
Brak zainstalowanego AUC TeX-a może prowadzić do pomyłek ponieważ Emacs wchodzi w takiej sytuacji w dużo prostszy tryb wspomagania LaTeX-a, a wszystko działa inaczej (w szczególności ,,klawiszologia'' jest inna).
Przy tworzeniu pliku LaTeX-owego pewne oznaczenia tekstu pojawiają się częściej niż inne. Na szczególną uwagę zasługują mechanizmy AUC TeX-a ułatwiające wpisywanie tych właśnie często występujących słów kluczowych. Najczęściej wprowadza się do tekstu oznaczenia środowisk i ich nazwy, ,,zwykłe'' polecenia TeX-owe, śródtytuły oraz polecenia zmiany kroju pisma.
Najważniejszą konstrukcją LaTeX-a są środowiska, czyli pary
\begin{*}
\end{*}
. Do wprowadzania środowisk służy
polecenie LaTeX-enviroment
domyślnie przypisane do sekwencji
C-c C-e
. Po wydaniu tego polecenia AUC TeX pyta
o nazwę środowiska i ewentualne dodatkowe dane. Przy pomocy
klawisza Tab
lub spacji można rozwijać częściowo wpisane nazwy.
AUC TeX zna mnóstwo standardowych środowisk, poza tym potrafi uczyć się
nowych analizując włączane pakiety i nagłówek pliku.
Otwarte środowisko można zamknąć poleceniem
LaTeX-close-enviroment
(C-c ]
).
Zdecydowanie jednak najbezpieczniejsze jest wprowadzanie
kompletnych środowisk przy użyciu C-c C-e
.
Poza środowiskami w pliku LaTeX-owym często pojawiają się
tradycyjne polecenia TeX-a, czyli słowa rozpoczynające się znakiem
\
. Zapamiętanie wszystkich poleceń jest trudne,
a przy ich wprowadzaniu łatwo o błąd. Dlatego należy korzystać
z polecenia LaTeX-complete-symbol
. Jeśli pisane słowo
rozpoczyna się znakiem \
to wystarczy wcisnąć
M-Tab
aby je zakończyć, lub uzyskać listę możliwych
zakończeń.
Inny sposób wpisywania makr TeX-owych polega na wykorzystaniu
polecenia TeX-insert-macro
(C-c C-m
).
Aby użyć jeszcze innej metody należy np. w pliku
.emacs
ustawić różną od nil
wartość zmiennej TeX-electric-escape
(setq TeX-electric-escape t)
Wiąże to znak
\
z funkcją
TeX-electric-macro
, co umożliwia uruchamianie
mechanizmu rozwijania makr przez wpisanie tego znaku. Jest to metoda
najszybsza.
AUC TeX domyślnie wstawia parę pustych nawiasów {}
po
wpisaniu makra, co zabezpiecza przed ,,zniknięciem'' spację znajdującą się za
tym makrem. Jeśli nawiasy nie są mile widziane należy zmiennej
TeX-insert-braces
przypisać wartość nil
.
Inaczej oznacza się elementy listy \item
. Służy do tego polecenie
LaTeX-insert-item
(M-Return
), którego działanie
zależy od kontekstu.
Kolejnym często występującym elementem tekstu są śródtytuły, oznaczane słowami
kluczowymi \chapter
, \section
itd. Można ułatwić
sobie życie korzystając z polecenia LaTeX-section
(C-c
C-s
). Wywołanie tego polecenia spowoduje wstawienie oznaczenia
śródtytułu, przy czym domyślnie AUC TeX zapyta o tytuł
i etykietę związaną z tym śródtytułem (argument polecenia
\label
). Domyślny poziom śródtytułu można zmienić wpisując
ręcznie właściwe słowo kluczowe (z rozwijaniem) lub podając argument
(C-u
) przed wywołaniem polecenia LaTeX-section
. Jeśli
argument jest ujemny, to poziom zostanie zmieniony w dół o jeden.
I tak, jeśli ostatnio wstawiony był śródtytuł na poziomie
\subsection
to będzie to aktualny poziom domyślny. Sekwencja
C-c C-s
oznacza polecenie wpisania śródtytułu na tym właśnie
poziomie. Podanie C-u C-c C-s
to wpisanie
\subsubsection
, a C-u -1 C-c C-s
spowoduje
wstawienie \section
. Przedrostki nazw w etykietach
\label
są kontrolowane zmienną LaTeX-section-label
.
Jeśli wartością tej zmiennej jest nil
, to odnośniki nie będą
wstawiane.
AUC TeX udostępnia również silny mechanizm zmiany kroju pisma. Jego
podstawą jest polecenie TeX-font
(skrót C-c C-f
), po
którym podaje się argument określający pożądaną zmianę kroju pisma. I tak
C-e
powoduje wpisanie \emph{}
, C-i
--
\textit{}
, C-t
-- \texttt{}
itd,
włącznie z usuwaniem ustawienia kroju pisma C-d
. Lista możliwości
jest wypisywana po podaniu spacji jako argumentu:
Font list: C-b \textbf{ } C-c \textsc{ } C-e \emph{ } C-f \textsf{ } tab \textit{ } return \textmd{ } C-n \textnormal{ } C-r \textrm{ } C-s \textsl{ } C-t \texttt{ } C-u \textup{ } C-d -- delete font
Jeśli polecenie TeX-font
jest poprzedzone argumentem
(C-u
), to zostanie zmieniony krój pisma w miejscu,
w którym znajduje się kursor. Przykładowo jeżeli kursor jest umieszczony
na tekście będącym argumentem polecenia \textit{}
, to sekwencja
C-u C-c C-f C-e
zmieni polecenie \textit
na
\emph
.
W treści dokumentu pojawiają się nie tylko słowa kluczowe, ale także znaki
specjalne: cudzysłów, znak dolara $
, nawiasy klamrowe
{}
oraz znak komentarza %
.
W TeX-u nie używamy znaków "
na oznaczenie cudzysłowu.
W tekstach pisanych po angielsku używamy znaku ``
jako
cudzysłowu otwierającego i znaku ''
jako cudzysłowu
zamykającego. Jeśli użytkownik wpisuje "
to AUC TeX zadba,
aby w tekście pojawiło się to co trzeba. W przypadku języka
polskiego (i spolszczonego LaTeX-a) cudzysłów otwierający oznacza się
w tekście dwoma przecinkami ,,
. Aby polecenie
TeX-insert-quote
wywoływane klawiszem "
zadziałało
prawidłowo należy zmiennej TeX-open-quote
przypisać wartość
,,
(czyli dwa przecinki).
Znaki dolara $
w pliku TeX-owym obejmują
tekst wzoru matematycznego, a w podwójne dolary $$
jest ujęty wzór wyeksponowany w osi strony. W celu lepszej kontroli
otwierania i zamykania wzorów wprowadzenie znaku dolara powoduje
wywołanie polecenia TeX-insert-dollar
. Polecenie to, oprócz
wprowadzenie do pliku znaku $
sprawdza stan
sparowania tych znaków. Dzięki temu dokładnie wiadomo, gdzie się
zaczyna i gdzie kończy środowisko matematyczne, a przy okazji nie da
się wzoru rozpoczętego dwoma dolarami zamknąć tylko jednym.
Polecenie TeX-insert-braces
pozwala
wprowadzać nawiasy klamrowe parami. Skrót klawiaturowy jest
intuicyjny: C-c {
.
Przy wprowadzaniu i usuwaniu znaku komentarza na początku wierszy
przydaje się polecenie TeX-comment-regin
(C-c ;
).
Umożliwia ono wstawienie znaku komentarza na początku każdego wiersza
zaznaczonego fragmentu tekstu (region) czyli obszaru od punktu
oznaczonego przez C-
spacja do bieżącej pozycji kursora (lub
zaznaczonego myszą). Podobnie działa polecenie
TeX-comment-paragraph
(C-c %
) dla akapitu. Aby
usunąć znak komentarza wpisujemy C-u - C-c ;
lub C-u -
C-c %
.
W przypadku wprowadzania dużej liczby wzorów matematycznych warto mieć pod ręką
mechanizm przyspieszający wpisywanie słów takich jak \upsilon
czy
\rightarrow
. Mechanizm taki uruchamia się (i wyłącza)
w AUC TeX-u poleceniem LaTeX-math-mode
(C-c ~
).
W trybie matematycznym po wprowadzeniu znaku
,,`
'' klawiatura zmienia znaczenie i zamiast zwykłych znaków
pojedynczym klawiszem można wprowadzać symbole matematyczne. I tak
(w trybie matematycznym) sekwencja klawiszy `d
spowoduje
wpisanie \delta
, `G
-- \Gamma
,
a `cN
-- {\cal N}
.
Pożyteczne bywa podanie argumentu (C-u
) przed
symbolem matematycznym. Sekwencja klawiszy C-u `e
spowoduje wpisanie do bufora $\epsilon$
-- co
znacznie przyśpiesza wstawianie pojedynczych symboli w bloku
tekstu.
Bez możliwości definiowania własnych skrótów przydatność trybu matematycznego
byłaby znacznie ograniczona. Można to robić modyfikując na prywatne potrzeby
listę LaTeX-math-list
. Nie sprawi też problemu zamiana klawisza
`
na jakiś poręczniejszy (jeśli ktoś musi) -- należy zmienić
wartość zmiennej LaTeX-math-abberv-prefix
.
Powróćmy do rozwijania słów kluczowych. Często się zdarza, że definiujemy
własne makra. AUC TeX doskonale nas rozumie. Jeśli wpiszemy definicję
LaTeX-ową (\renewcommand
) to AUC TeX ją rozpozna i się
jej ,,nauczy'' -- będzie ona dostępna poprzez mechanizm rozwijania początków
wyrazów. Możliwe jest również rozpoznawanie definicji TeX-a wprowadzanych jako
\def
.
AUC TeX rozpoznaje makrodefinicje zapisane w pliku podczas
parsowania dokumentu po wydaniu polecenia
TeX-normal-mode
(C-c C-n
).
Jeśli więc wpiszemy w pliku nową definicję, należy wcisnąć C-c C-n
i nie musimy jej dokładnie pamiętać. Informacje
o makrodefinicjach zapisywane są w pliku
./auto/nazwa.el
.
Można wymusić parsowanie dokumentu natychmiast po jego wczytaniu
oraz umieszczanie informacji o nim w katalogu
auto przy każdym zapisie na dysk np. przez
wpisanie do pliku .emacs
następujących
wierszy:
; parsowanie przy wczytywaniu: (setq TeX-parse-self t) ; parsowanie przy zapisie: (setq TeX-auto-save t)
Zmianę pliku ./auto/nazwa.el
powoduje również
wstawienie do tekstu dokumentu nazwy etykiety
\label
. Wstawiając odnośnik do tej etykiety
(\ref
, \pageref
) można etykietę
wybrać z listy etykiet pokazywanej przez mechanizm rozwijania
(Tab
). I to jest naprawdę cenna właściwość.
Sposób parsowania dokumentu można
konfigurować (po
szczegóły odsyłam do dokumentacji). Na przykład jeżeli mamy słaby
komputer i chcemy, aby rozpoznawane były tylko etykiety musimy zadbać
o następujące ustawienia (znów plik .emacs
):
(setq-default TeX-auto-regexp-list 'LaTeX-auto-label-regexp-list)
Na uwagę zasługuje możliwość uruchamiania TeX-a i oglądania plików .dvi
bez konieczności opuszczania Emacsa. Służy do tego polecenie przypisane do
sekwencji C-c C-c
, czyli TeX-command-master
. Po
wydaniu tego polecenia AUC TeX zapyta jakie działania ma podjąć. Jeśli
w pliku były dokonywane jakieś zmiany, to zaproponuje jego przetworzenie
TeX-em. Po przetworzeniu i kolejnym wciśnięciu C-c C-c
będzie chciał uruchomić przeglądarkę .dvi
. Jeżeli nie wystąpią
żadne błędy w przetwarzaniu, to w okienku obok obejrzymy wynik
składu.
Standardowe polecenia przetwarzania pliku źródłowego można łatwo rozszerzyć
o nasze ulubione: mex
, platex
czy
pdftex
. Najłatwiej przez menu XEmacsa. W razie potrzeby
można skopiować odpowiedni fragment z pliku tex.el
(czy
wręcz tex.elc
). Prawdopodobnie warto zmienioną listę
TeX-command-list
wstawić do pliku tex-site.el
--
niech się cieszą wszyscy użytkownicy.
Naprawdę niezwykle użyteczna (i trudna do zaimplementowania poza
edytorem) jest możliwość przetworzenia tylko fragmentu pliku źródłowego.
W przypadku składania skomplikowanego dokumentu można TeX-ować tylko
fragment nad którym pracujemy, co zaoszczędza mnóstwo czasu. Służy do tego
polecenie TeX-command-region
przypisane do sekwencji C-c
C-r
. Wszystko działa tak samo jak w przypadku
TeX-command-master
, z jednym wyjątkiem -- AUC TeX
buduje z nagłówka i zaznaczonego fragmentu tekstu nowy plik, który
przetwarza TeX-em. Kolejne C-c C-r
umożliwia obejrzenie właściwego
pliku .dvi
. Trzeba się tylko pilnować, żeby nie definiować
żadnych makr globalnych poza nagłówkiem. W plikach LaTeX-owych końcem
nagłówka jest wiersz zawierający napis \begin{document}
. W plikach
TeX-owych jest to natomiast %**end of header
. Znacznik końca
nagłówka można zdefiniować jako wyrażenie regularne określając wartość zmiennej
TeX-header-end
.
W przypadku wystąpienia błędów w czasie przetwarzania można oglądać je
kolejno przy pomocy polecenia TeX-next-error
(|C-c `|).
AUC TeX opatruje błędy TeX-a dodatkowym komentarzem, co może pomóc
początkującym użytkownikom.
Zatrzymajmy się jeszcze nad tym, co widzimy na ekranie. Emacs
(w szczególności XEmacs) potrafi inteligentnie zaznaczać odpowiednie
fragmenty tekstu kolorami. Konfigurowanie kolorów w XEmacsie jest
proste (myszą w sekcji faces -- dlatego
warto używać XEmacsa). Jeśli kolorowanie nie włączyło się z własnej
woli można je wymusić poleceniem font-lock-mode
.
Nawet bez kolorowania treść dokumentu można wprowadzić w niezwykle czytelnej formie dzięki zaawansowanym poleceniom formatowania tekstu. W wolnej chwili warto wypróbować polecenia:
LaTeX-fill-paragraph
(C-c C-q C-p
lub M-q
),
LaTeX-fill-enviroment
(C-c C-q C-e
),
LaTeX-fill-section
(C-c C-q C-s
) oraz
LaTeX-fill-region
(C-c C-q C-r
lub M-g
).
Ograniczona objętość artykułu nie pozwala omówić wszystkich możliwości
AUC TeX-a. Nie zmieściły się tematy obszerne, takie jak konfigurowanie
działania AUC TeX-a i liczne szczegółowe, np. praca
z dokumentami hierarchicznymi. Wszystko można doczytać
w dokumentacji. Czytając trzeba pamiętać, że AUC TeX jest częścią
edytora Emacs i przez cały czas można korzystać ze wszystkiego, co Emacs
oferuje. Przykładem jest niezależny (ale wspierany przez AUC TeX-a) tryb
,,ukrywania'' fragmentów tekstu, włączany/wyłączany poleceniem
outline-minor-mode
. Pojawiające się dodatkowe pozycje menu
(i polecenia) pozwalają wyświetlić zamiast rozdziału, podrozdziału itd.
tylko fragment pierwszego wiersza z tytułem (bez zmiany tekstu). Możliwe
jest np. pisanie czwartego rozdziału trzy wiersze od końca nagłówka, albo
poruszanie się po tekście tak, jakby składał się on tylko ze śródtytułów.
W całej zabawie z Emacsem najmilsze jest to, że wcale nie trzeba go używać. Tekst można przygotować korzystając z jakiegokolwiek edytora (np. ...Emacsa), a pliki źródłowe przetwarzać zewnętrznie. Przypuśćmy, że kolega podesłał nam 46 felietonów, które napisał w ostatnim roku. Wszystkie, to kompletne pliki LaTeX-owe. W takiej sytuacji TeX-owanie z wnętrza edytora zajmie zbyt dużo czasu. Najszybszą metodą będzie umieszczenie wszystkich plików w jednym katalogu i napisanie w terminalu mniej więcej czegoś takiego:
~$ for i in *.tex; do latex $i; done
Nie zawsze jednak jest tak prosto. Często
otrzymanie wyniku końcowego wymaga
wielu przetworzeń. Wpisywanie ciągu tych samych poleceń po każdej
modyfikacji pliku bywa męczące. Dlatego mądrzy
ludzie
stworzyli program make
(lub gnumake
). Wszystkie polecenia wystarczy
wpisać raz
ale do pliku
Makefile
w bieżącym katalogu. W najprostszym
przypadku plik ten będzie wyglądał tak:
all: referat.ps %.dvi: %.tex latex $< %.ps: %.dvi dvips $< %.pdf: %.tex pdflatex $<
Z zawartości pliku wynika, że pracujemy nad referatem (tworzymy
plik referat.tex
) i że używamy przeglądarki
plików PS.
Teraz całe TeX-owanie sprowadza się do uruchomienia
w terminalu programu make
. Program ten domyślnie
wykona pierwszą regułę z pliku Makefile
(all: referat.ps
-- zamiast nazwy
all
można wstawić dowolne słowo,
np. PsiaBuda
) i dowie się, że jesteśmy
zainteresowani plikiem .ps
. Z trzeciej reguły
program wywnioskuje, że pliki .ps
robi się z plików
.dvi
poleceniem dvips
. Nie ma
jednak pliku .dvi
, ale o tym jak go zrobić mówi
druga reguła. A plik referat.tex jest na
dysku.
Ostatnia reguła zostanie wykorzystana gdy
wykonamy polecenia make pdf
-- wtedy
zostanie utworzony plik referat.pdf
.
Najważniejszą cechą programu make jest to, że do przetwarzania dochodzi tylko wtedy, gdy program źródłowy był modyfikowany po ostatnim przetworzeniu (plik wynikowy jest starszy od pliku źródłowego). Dzięki temu można w terminalu napisać takie (lub podobne) zaklęcie:
~$ while [ TRUE ]; do make; sleep 5; done
Tak potraktowany interpretator poleceń co 5 sekund będzie uruchamiał program make, który przetworzy plik źródłowy tylko wtedy, gdy ten ostatni został zapisany na dysk po ostatnim przetworzeniu. Teraz wystarczy tylko myszą wskazać przeglądarkę, żeby zobaczyć, co ,,naskładaliśmy'' do tej pory (przeglądarka powinna reagować na modyfikację przeglądanego pliku). Ta technika jest wrażliwa na zapisywanie pliku z błędem. Oczywiście, jeśli mamy dobry edytor, to wpisanie złego słowa kluczowego, czy nie domknięcie środowiska lub nawiasu nie jest proste.
Co się jednak stanie, gdy popełnimy błąd, na którym TeX
się zatrzyma? Po pierwsze możemy przeczytać uważnie o co chodzi i w
edytorze przeskoczyć do właściwego wiersza, a TeX-owi powiedzieć
np. x
. Jeżeli jednak ustawimy zmienną
środowiska:
TEXEDIT='emacsclient +%d %s'
lub w przypadku XEmacsa:
TEXEDIT='enu +%d %s'
i jeżeli używamy Emacsa w którym powiemy
M-x server-start
(gnuserv-start
), to możemy odpowiedzieć TeX-owi
e
(od edit). Wtedy
Emacs wczyta plik z błędem i kursorem wskaże wiersz, co do którego
TeX ma wątpliwości. Po zakończeniu poprawek należy zapisać plik
(C-x C-s
) i powiedzieć klientowi, że już po
wszystkim (C-x #
). Dla jasności: serwer to Emacs, a
klient to TeX...
Korzystanie z emacsowego klienta i serwera pomaga w wielu
trudnych sytuacjach. Wyobraźmy sobie książkę mającą 42 rozdziały,
każdy zapisany w oddzielnym pliku. Jeśli w kilkunastu plikach zamiast
\ala
omyłkowo wpisaliśmy \ola
,
z tym że czasem \ola
jest dobrze i ma zostać, to
zanosi się na dłuższe poprawianie. A można z poziomu interpretatora
poleceń shell napisać:
~$ gnuclient `grep -l \\ola *.tex`
Potem wystarczy wciskanie klawisza C-s
i czasem C-x e
(pierwszy raz oczywiście również
C-x (
i C-x )
). Jeżeli jednak
ktoś ma tendencje do zapominania o takich szczegółach jak
-l
, to niech lepiej próbuje się uczyć krok po
kroku... Na razie. Po jakimś czasie może okazać się potrzebny
dodatkowy wiersz w pliku .emacs
:
(gnuserv-start)
Bardzo niechętnie używam możliwości przetwarzania pliku
TeX-owego z wnętrza edytora.
Nawet pisząc niewielki dokument warto (moim zdaniem) korzystać
z programu make. Już kilka razy zapomniałem
uruchomić dvips
-a (mam drukarkę PS), w efekcie drukując nieaktualną
wersję dokumentu. Dlatego mi wystarcza, gdy wewnątrz edytora można
wykonać tylko jedno polecenie -- make.
Współczesne narzędzia umożliwiają wygodne i bezbolesne korzystanie z dobrodziejstw oferowanych przez TeX-a. We współczesnym sprzęcie karta graficzna i monitor pozwalają na pracę w systemie okienkowym (np. XWindow); można także na bieżąco oglądać w sąsiednim oknie gotowy dokument. W przypadku korzystania z XEmacsa (lub podobnego edytora) pracować z LaTeX-em mogą nawet ci użytkownicy, którzy nie zdejmują ręki z myszy.
Mam nadzieję, że udało mi się pokazać, jak duże możliwości stoją przed kimś, kto chce wygodnie i efektywnie używać TeX-a. Opisałem tylko najprostsze warianty konfiguracji środowiska pracy. Istnieje wiele sposobów i sposobików, o których nie wspomniałem i jak sądzę, jeszcze więcej takich, o których nigdy nie słyszałem. Wszystkim życzę miłego TeX-owania.
Tekst jest przedrukiem z Biuletynu GUST, nr 11/1998,
s. 58--64.
(c) Polska Grupa Użytkowników Systemu TeX
Ostatnia modyfikacja 15.01.2000