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 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767
|
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Content-language" content="pl">
<meta name="Author" content="Wodzimierz Macewicz">
<meta name="Keywords" content="tex, Wirtualna Akademia">
<title>Uywanie TeX-a w systemie UNIX</title>
</head>
<body>
<h1>Uywanie TeX-a w systemie UNIX (AUCTeX)</h1>
<p>
<em>Adam Dawidziuk</em>
</p>
<p>
TeX, jak wiadomo, nie jest zaopatrzony w standardowy interfejs
uytkownika, co daje du swobod wyboru metod przygotowywania
dokumentw rdowych. O ile format plikw wejciowych i sposb ich
przetwarzania przez TeX-a pozostaje z zaoenia niezmienny, to
narzdzia wspomagajce wprowadzanie treci dokumentw we waciwym
formacie s nieustannie rozwijane. W artykule jest opisany jeden
z moliwych sposobw uywania TeX-a w systemie UNIX, ze szczeglnym
uwzgldnieniem pakietu AUC TeX.
</p>
<h2>Przetwarzanie danych</h2>
<p>
Brak narzuconego i okienkowego interfejsu uytkownika powoduje, e TeX
bywa postrzegany jako program przestarzay i trudny. Przecitny
uytkownik komputera zwykle nie jest w stanie zrozumie sposobu dziaania
TeX-a, a jeszcze trudniej dostrzec mu korzyci, jakie mona osign
przygotowujc dokumenty w ten wanie sposb. Pierwsz
i najpowaniejsz barier pojciow jest fakt, e TeX nie jest systemem
kompletnym, ale wymaga korzystania z wielu dodatkowych narzdzi
wspomagajcych prac. Wprawdzie mao kto wprowadza tre dokumentu
z klawiatury w chwili, gdy TeX pokae na ekranie dwie gwiazdki, ale
na pomys stworzenia sobie wygodnego i efektywnego rodowiska pracy te
niestety wpada nieliczne grono uytkownikw.
</p>
<p>
Dziaanie TeX-a mona sprowadzi do przetwarzania
plikw. TeX czyta dokument rdowy, zwykle z pliku o nazwie
z przyrostkiem <code>.tex</code>, i tworzy obraz kolejnych stron
dokumentu w pliku o nazwie koczcej si napisem
<code>.dvi</code>. Zadaniem uytkownika jest przygotowanie
plikw wejciowych i uruchomienie cigu przetworze, ktre doprowadz
do podanego wyniku. Zarwno przygotowanie danych, jak i ich
przetwarzanie mona zorganizowa w zasadzie w dowolny sposb. Istniej
dwie istotnie rne metody tworzenia plikw z danymi wejciowymi:
generowanie i wpisywanie.
</p>
<p>
Generowanie danych wejciowych do TeX-a to zagadnienie bardzo rozlege
i majce wiele praktycznych zastosowa. Sam proces przygotowania danych,
ich obrbka i metody generowania mog by bardzo rne. Wszystko zaley
od celu przetwarzania i postawionych wymaga. TeX jest doskonaym
narzdziem do formatowania wydrukw z baz danych (np. sowniki,
sprawozdania) pozwalajcym na uzyskanie wysokiej jakoci typograficznej przy
cakowitej automatyzacji procesu skadania tekstu. Czsto uytkownik (autor
tekstu) nie ma bezporedniego kontaktu z TeX-em i nie musi zna
specyficznego dla TeX-a systemu oznacze tekstu. Jednak jest to temat znacznie
wykraczajcy poza ramy tego artykuu.
</p>
<p>
Wikszo uytkownikw zadowala si zwyczajnym wpisywaniem tekstu.
W takim wypadku najwaniejszy jest ergonomiczny i dobrze opanowany
edytor tekstw. Zwykle kady ma swj ulubiony edytor, w ktrym wszystko
mu wychodzi najatwiej. I prawdopodobnie to bdzie ten edytor, ktrego
naley uy tworzc pliki rdowe do przetwarzania TeX-em. Jeli jednak
zamierzamy pisa duo, to nie powinnimy eksperymentowa z edytorami zbyt
prostymi. Czas powicony na poznanie inteligentnego, konfigurowalnego edytora
zwrci si ju po kilku dniach pisania. Z edytorw dostpnych
w systemie UNIX doskonay jest <code>vim</code>. Mona go ,,nauczy''
wielu poytecznych skrtw, a jego ostatnie wersje potrafi rozpoznawa
skadni i zwiksza czytelno plikw rdowych przez stosowanie
kolorw. Lepszy jest tylko <code>emacs</code> (tak twierdz uytkownicy
Emacsa). Niestety, zarwno <code>vim</code> jak i Emacs
u niektrych wywouj reakcje alergiczne, a na to rady nie ma.
</p>
<p>
Zwolennicy okienek MS nie powinni czu si pokrzywdzeni
(a przynajmniej nie z powodu braku edytora). Z rzeczy dobrych godny
polecenia jest WinEdit, ktry moe bardzo duo i skadni pliku
TeX-owego zna na tyle dobrze, e wyrnia kolorami odpowiednie
fragmenty. Jest atwo konfigurowalny w zakresie wystarczajcym do
efektywnej pracy.
Midzy innymi umoliwia powizanie z polami menu
dowolnych skryptw np. przetwarzajcych pliki rdowe. Daje si
uywa bez zbyt czstego sigania do myszy.
Jedn z jego gwnych
zalet jest sprawdzanie na bieco skadni wprowadzanych sw -- te
ktrych brak w sowniku s wyrniane.
Do podstawowych wad naley
konieczno konfigurowania waciwie wszystkiego od pocztku oraz to,
e, w przeciwiestwie do vima i Emacsa nie jest to program
bezpatny. Cena jest jednak umiarkowana.
</p>
<p>
Przewidujc trway zwizek z TeX-em warto
usprawni przetwarzanie
pliku rdowego do postaci
wynikowej. Nie ma wielkiego problemu, jeli przetwarzaniu podlega
jeden plik, a formatem wyjciowym jest dvi. Ju
jednak konwersja pliku dvi do PostScriptu oznacza
konieczno uruchomienia dodatkowego programu.
Jeli jeszcze dooymy do tego
tworzone podczas pisania rysunki (w szczeglnoci rysunki
generowane, np. MetaPost-em) to liczba programw, ktre trzeba
uruchomi w cile okrelonym porzdku, zniechca do robienia tego
rcznie. atwo si pomyli.
Dobrym pomysem jest napisanie skryptu,
ktry wykonuje wszystkie operacje.
Przetwarzanie za kadym
razem wszystkich plikw rdowych nie zawsze jest konieczne,
a znacznie wydua czas oczekiwania na wynik. W takiej sytuacji
najwygodniej uy programu <code>make</code>.
</p>
<p>
Dowiadczony uytkownik TeX-a zwykle ma wasny zestaw programw, ktre czyni
ycie atwiejszym. Czsto w skad tego zestawu wchodzi dodatkowo jaki
edytor strumieniowy np. sed, czy czciej awk lub perl (najbardziej
wszechstronny). W przypadku umieszczania w dokumentach ilustracji
lub zdj naley uwzgldni specjalizowane programy do przetwarzania obrazkw
itd. Podstawow zalet TeX jest atwo zintegrowania go z dowolnym
uywanym systemem.
</p>
<p>
Kady moe wic uywa TeX dokadnie tak, jak lubi i tak jak mu
wygodnie. Trudno jest w jednym krtkim tekcie omwi wszystkie typowe
przypadki. Ogranicz si do przykadu szczeglnego -- systemu
UNIX. Przyczyn tego wyboru mgbym wymieni wiele. Przede wszystkim
cay UNIX zbudowany jest z programw wykonujcych dobrze okrelone
funkcje, takich ,,klockw'', z ktrych mona zbudowa dowolnie
skomplikowane systemy przetwarzania informacji. Nie posiadajcy interfejsu
uytkownika, przetwarzajcy pliki w inne pliki i konfigurowalny TeX
atwo daje si dopasowa do potrzeb uytkownika UNIXa. Oczywicie
istnieje mnstwo rnych i dobrych sposobw pracy z TeX-em. Zarwno
podany przykad edytora (Emacs z AUC TeX-em), jak i techniki
przetwarzania dokumentw nosz wyrane pitno moich osobistych
preferencji.
</p>
<h2>AUC TeX</h2>
<p>
AUC TeX to dostpne w edytorze <code>emacs</code>
zintegrowane rodowisko do tworzenia i przetwarzania dokumentw
TeX-owych i LaTeX-owych. Moliwoci AUC TeX-a s ogromne, na
szczcie nie trzeba wiedzie wszystkiego, aby z niego
korzysta. AUC TeX-a mona oswaja ,,krok po kroku'', podobnie jak
i samego Emacsa.
</p>
<h3>Emacs</h3>
<p>
Edytor <code>emacs</code> ma dug histori w systemie UNIX.
W duej czci zosta napisany w jzyku <code>Lisp</code>
(dokadniej w dialekcie Emacs Lisp). Jest to jzyk funkcyjny sucy
przede wszystkim do porozumiewania si z Emacsem. Lisp bywa chtnie
stosowany w tworzeniu tzw. ,,systemw sztucznej inteligencji''. Nie dziwi
wic naprawd nieprzecitna inteligencja edytora Emacs jeli uwiadomimy sobie,
e jest to najwikszy z popularnych programw napisanych w Lispie.
A moliwoci i umiejtnoci Emacsa s chyba niezgbione (strzye,
piewa, taczy, gotuje, krawaty wie...).
</p>
<p>
Edytor ten bywa niezbyt lubiany przez pocztkujcych
uytkownikw ze wzgldu na sposb wydawania polece i niezbyt
zrozumia terminologi stosowan w dokumentacji
i komunikatach.
Koncepcja porozumiewania si z edytorem jest
rzeczywicie mocno egzotyczna, ale wbrew pozorom ma gboki
sens.
Kluczem do sukcesu jest znalezienie klawisza
<code>Meta</code> na klawiaturze. Wcinicie tego klawisza ze
znakiem <code>x</code> (oznaczane jako <code>Meta-x</code>
lub <code>M-x</code>) rozpoczyna wprowadzanie polece.
W klawiaturze komputera PC zwykle klawiszem <code>Meta</code> jest
<code>Alt</code>. Jeli jednak <code>Alt</code> zosta
przedefiniowany (np. w celu wprowadzania polskich znakw) to
<code>M-x</code> mona wprowadzi sekwencyjnie wciskajc
najpierw klawisz <code>Esc</code>, a potem
<code>x</code>. Tego typu problemy nie istniej z klawiszem
<code>Ctrl</code>. Podstawowymi chwytami s
<code>Ctrl-x</code> i <code>Ctrl-c</code>, opisywane
czsto jako <code>C-x</code> i <code>C-c</code>.
</p>
<p>
Mocn stron Emacsa jest dokumentacja (<code>C-h</code>). Funkcje przypisane
klawiszom zmieniaj si w zalenoci od trybu pracy (<em>mode</em>), co
zawsze mona sprawdzi wpisujc <code>C-h m</code>. Wiedzc, e Emacs moe
otwiera wiele plikw jednoczenie, ale kady w innym buforze
(<em>buffer</em>), e w rodowisku okienkowym moe otwiera wiele okien
zwanych ramkami (<em>frames</em>) i e kada ramka moe by podzielona na
wiele ,,okien'' (<em>window</em>) mona
bez problemu zrozumie jzyk dokumentacji.
</p>
<p>
Istnieje wiele odmian Emacsa. Na potrzeby tego artykuu zaoymy sobie, e
dysponujemy zainstalowan, wspczesn wersj XEmacsa. Zaoenie to jest
uzasadnione, poniewa norm s ju komputery, na ktrych dziaajce okienka
graficzne nie powoduj zatrzymania systemu. A XEmacs dobrze wyglda
w okienkach. Poza tym w XEmacsie AUC TeX jest domylnie
zainstalowany, co pozwala skrci ten tekst o rozdzia powicony
instalacji. Dodatkowo nie bd rozwija problemu konfiguracji, ktr
w XEmacsie mona wykona za pomoc myszy. Wszystkie ustawienia AUC TeX-a
wykonuje si wybierajc mysz z menu <code>Options Customize Emacs Wp
Tex AUC Tex</code>, a potem ju wedug uznania. W to samo miejsce
mona trafi wciskajc <code>M-x customize</code>, tyle e po drodze jest
wicej objanie i atwiej si zagubi.
</p>
<p>
Jeli kto nie dysponuje XEmacsem lub nie lubi myszy, to bdzie musia wpisywa
odpowiednie zaklcia do pliku <code>.emacs</code>, ktry znajduje si
w katalogu domowym uytkownika. Pomocne moe by odszukanie pliku
<code>tex.el</code> i <code>tex-site.el</code>, ktre le gdzie
z innymi plikami Emacsa (ale w rnych katalogach -- przyda si
program <code>find</code>). Mona w nich podejrze, jak s zadawane
wartoci pocztkowe list i zmiennych i je zmodyfikowa. Nie naley
przy tym zmienia pliku <code>tex.el</code> (ani jego skompilowanej wersji
<code>tex.elc</code>) lecz kopiowa co trzeba do pliku <code>.emacs</code>.
Jeli zmiana ma dotyczy wszystkich uytkownikw naley odpowiedni fragment
pliku <code>tex.el</code> skopiowa do pliku <code>tex-site.el</code>
i tam pozamienia wszystko to, co wymaga zmiany.
</p>
<p>
I jeszcze jedna uwaga dla pocztkujcych: w Emacsie mona zapisa plik
z bufora na dysk wciskajc <code>C-x C-s</code>, a prac
z Emacsem zakoczy sekwencj <code>C-x C-c</code>. Emacs nie jest
jednak maym programem, wic szanujc swj czas lepiej nie otwiera go
i nie zamyka bez wyranej potrzeby, zwaszcza, e raz otwarty mocno nie
przeszkadza.
</p>
<p>
Do efektywnego wykorzystania Emacsa na potrzeby jzyka polskiego jest potrzebna
polska klawiatura (kady robi to jak lubi, jedna z klasycznych metod
w systemie XWindow sprowadza si do wykorzystania <code>xmodmap</code>)
oraz polski sownik do programu <code>ispell</code>. Zagadnienia te s
dokadnie omwione w tekstach powiconych polskim ,,ogonkom''.
</p>
<h3>Uruchomienie AUC TeX-a</h3>
<p>
Po uruchomieniu edytora Emacs utworzenie nowego pliku jest moliwe po
wciniciu <code>C-x C-f</code> i podaniu nazwy. Podajc nazw pliku
z przyrostkiem <code>.tex</code> zmusimy edytor do wejcia w tryb
<code>LaTeX-mode</code>. Informacja o tym powinna pojawi si
w wierszu trybu pracy (<em>Mode Line</em>) w dolnej czci okna
jako napis <code>LaTeX</code>. Mona te wymusi wejcie w tryb
<code>LaTeX</code> wywoujc polecenie <code>LaTeX-mode</code> (<code>M-x
LaTeX-mode</code>). Do rozwijania nazw mona uy znaku klawisza tabulacji
(<code>Tab</code>).
</p>
<p>
Jeli powysze dziaania nie prowadz do uruchomienia
AUC TeX-a, to albo nie jest on zainstalowany, albo w pliku
<code>.emacs</code> brakuje wiersza
</p>
<pre>
(require 'tex-site)
</pre>
<p>
Brak zainstalowanego
AUC TeX-a moe prowadzi do pomyek poniewa Emacs wchodzi w takiej
sytuacji w duo prostszy tryb wspomagania LaTeX-a, a wszystko dziaa
inaczej (w szczeglnoci ,,klawiszologia'' jest inna).
</p>
<h3>Sowa kluczowe LaTeX-a</h3>
<p>
Przy tworzeniu pliku LaTeX-owego pewne oznaczenia tekstu pojawiaj si czciej
ni inne. Na szczegln uwag zasuguj mechanizmy AUC TeX-a uatwiajce
wpisywanie tych wanie czsto wystpujcych sw kluczowych. Najczciej
wprowadza si do tekstu oznaczenia rodowisk i ich nazwy, ,,zwyke'' polecenia
TeX-owe, rdtytuy oraz polecenia zmiany kroju pisma.
</p>
<p>
Najwaniejsz konstrukcj LaTeX-a s rodowiska, czyli pary
<code>\begin{*}</code> <code>\end{*}</code>. Do wprowadzania rodowisk suy
polecenie <code>LaTeX-enviroment</code> domylnie przypisane do sekwencji
<code>C-c C-e</code>. Po wydaniu tego polecenia AUC TeX pyta
o nazw rodowiska i ewentualne dodatkowe dane. Przy pomocy
klawisza <code>Tab</code> lub spacji mona rozwija czciowo wpisane nazwy.
AUC TeX zna mnstwo standardowych rodowisk, poza tym potrafi uczy si
nowych analizujc wczane pakiety i nagwek pliku.
</p>
<p>
Otwarte rodowisko mona zamkn poleceniem
<code>LaTeX-close-enviroment</code> (<code>C-c ]</code>).
Zdecydowanie jednak najbezpieczniejsze jest wprowadzanie
kompletnych rodowisk przy uyciu <code>C-c C-e</code>.
</p>
<p>
Poza rodowiskami w pliku LaTeX-owym czsto pojawiaj si
tradycyjne polecenia TeX-a, czyli sowa rozpoczynajce si znakiem
<code>\</code>. Zapamitanie wszystkich polece jest trudne,
a przy ich wprowadzaniu atwo o bd. Dlatego naley korzysta
z polecenia <code>LaTeX-complete-symbol</code>. Jeli pisane sowo
rozpoczyna si znakiem <code>\</code> to wystarczy wcisn
<code>M-Tab</code> aby je zakoczy, lub uzyska list moliwych
zakocze.
</p>
<p>
Inny sposb wpisywania makr TeX-owych polega na wykorzystaniu
polecenia <code>TeX-insert-macro</code> (<code>C-c C-m</code>).
Aby uy jeszcze innej metody naley np. w pliku
<code>.emacs</code> ustawi rn od <code>nil</code>
warto zmiennej <code>TeX-electric-escape</code>
</p>
<pre>
(setq TeX-electric-escape t)
</pre>
<p>
Wie to znak
<code>\</code> z funkcj
<code>TeX-electric-macro</code>, co umoliwia uruchamianie
mechanizmu rozwijania makr przez wpisanie tego znaku. Jest to metoda
najszybsza.
</p>
<p>
AUC TeX domylnie wstawia par pustych nawiasw <code>{}</code> po
wpisaniu makra, co zabezpiecza przed ,,znikniciem'' spacj znajdujc si za
tym makrem. Jeli nawiasy nie s mile widziane naley zmiennej
<code>TeX-insert-braces</code> przypisa warto <code>nil</code>.
</p>
<p>
Inaczej oznacza si elementy listy <code>\item</code>. Suy do tego polecenie
<code>LaTeX-insert-item</code> (<code>M-Return</code>), ktrego dziaanie
zaley od kontekstu.
</p>
<p>
Kolejnym czsto wystpujcym elementem tekstu s rdtytuy, oznaczane sowami
kluczowymi <code>\chapter</code>, <code>\section</code> itd. Mona uatwi
sobie ycie korzystajc z polecenia <code>LaTeX-section</code> (<code>C-c
C-s</code>). Wywoanie tego polecenia spowoduje wstawienie oznaczenia
rdtytuu, przy czym domylnie AUC TeX zapyta o tytu
i etykiet zwizan z tym rdtytuem (argument polecenia
<code>\label</code>). Domylny poziom rdtytuu mona zmieni wpisujc
rcznie waciwe sowo kluczowe (z rozwijaniem) lub podajc argument
(<code>C-u</code>) przed wywoaniem polecenia <code>LaTeX-section</code>. Jeli
argument jest ujemny, to poziom zostanie zmieniony w d o jeden.
</p>
<p>
I tak, jeli ostatnio wstawiony by rdtytu na poziomie
<code>\subsection</code> to bdzie to aktualny poziom domylny. Sekwencja
<code>C-c C-s</code> oznacza polecenie wpisania rdtytuu na tym wanie
poziomie. Podanie <code>C-u C-c C-s</code> to wpisanie
<code>\subsubsection</code>, a <code>C-u -1 C-c C-s</code> spowoduje
wstawienie <code>\section</code>. Przedrostki nazw w etykietach
<code>\label</code> s kontrolowane zmienn <code>LaTeX-section-label</code>.
Jeli wartoci tej zmiennej jest <code>nil</code>, to odnoniki nie bd
wstawiane.
</p>
<p>
AUC TeX udostpnia rwnie silny mechanizm zmiany kroju pisma. Jego
podstaw jest polecenie <code>TeX-font</code> (skrt <code>C-c C-f</code>), po
ktrym podaje si argument okrelajcy podan zmian kroju pisma. I tak
<code>C-e</code> powoduje wpisanie <code>\emph{}</code>, <code>C-i</code> --
<code>\textit{}</code>, <code>C-t</code> -- <code>\texttt{}</code> itd,
wcznie z usuwaniem ustawienia kroju pisma <code>C-d</code>. Lista moliwoci
jest wypisywana po podaniu spacji jako argumentu:
</p>
<pre>
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
</pre>
<p>
Jeli polecenie <code>TeX-font</code> jest poprzedzone argumentem
(<code>C-u</code>), to zostanie zmieniony krj pisma w miejscu,
w ktrym znajduje si kursor. Przykadowo jeeli kursor jest umieszczony
na tekcie bdcym argumentem polecenia <code>\textit{}</code>, to sekwencja
<code>C-u C-c C-f C-e</code> zmieni polecenie <code>\textit</code> na
<code>\emph</code>.
</p>
<h3>Inne elementy tekstu</h3>
<p>
W treci dokumentu pojawiaj si nie tylko sowa kluczowe, ale take znaki
specjalne: cudzysw, znak dolara <code>$</code>, nawiasy klamrowe
<code>{}</code> oraz znak komentarza <code>%</code>.
</p>
<p>
W TeX-u nie uywamy znakw <code>"</code> na oznaczenie cudzysowu.
W tekstach pisanych po angielsku uywamy znaku <code>``</code> jako
cudzysowu otwierajcego i znaku <code>''</code> jako cudzysowu
zamykajcego. Jeli uytkownik wpisuje <code>"</code> to AUC TeX zadba,
aby w tekcie pojawio si to co trzeba. W przypadku jzyka
polskiego (i spolszczonego LaTeX-a) cudzysw otwierajcy oznacza si
w tekcie dwoma przecinkami <code>,,</code>. Aby polecenie
<code>TeX-insert-quote</code> wywoywane klawiszem <code>"</code> zadziaao
prawidowo naley zmiennej <code>TeX-open-quote</code> przypisa warto
<code>,,</code> (czyli dwa przecinki).
</p>
<p>
Znaki dolara <code>$</code> w pliku TeX-owym obejmuj
tekst wzoru matematycznego, a w podwjne dolary <code>$$</code>
jest ujty wzr wyeksponowany w osi strony. W celu lepszej kontroli
otwierania i zamykania wzorw wprowadzenie znaku dolara powoduje
wywoanie polecenia <code>TeX-insert-dollar</code>. Polecenie to, oprcz
wprowadzenie do pliku znaku <code>$</code> sprawdza stan
sparowania tych znakw. Dziki temu dokadnie wiadomo, gdzie si
zaczyna i gdzie koczy rodowisko matematyczne, a przy okazji nie da
si wzoru rozpocztego dwoma dolarami zamkn tylko jednym.
</p>
<p>
Polecenie <code>TeX-insert-braces</code> pozwala
wprowadza nawiasy klamrowe parami. Skrt klawiaturowy jest
intuicyjny: <code>C-c {</code>.
</p>
<p>
Przy wprowadzaniu i usuwaniu znaku komentarza na pocztku wierszy
przydaje si polecenie <code>TeX-comment-regin</code> (<code>C-c ;</code>).
Umoliwia ono wstawienie znaku komentarza na pocztku kadego wiersza
zaznaczonego fragmentu tekstu (<em>region</em>) czyli obszaru od punktu
oznaczonego przez <code>C-</code>spacja do biecej pozycji kursora (lub
zaznaczonego mysz). Podobnie dziaa polecenie
<code>TeX-comment-paragraph</code> (<code>C-c %</code>) dla akapitu. Aby
usun znak komentarza wpisujemy <code>C-u - C-c ;</code> lub <code>C-u -
C-c %</code>.
</p>
<p>
<h3>Matematyka</h3>
<p>
W przypadku wprowadzania duej liczby wzorw matematycznych warto mie pod rk
mechanizm przyspieszajcy wpisywanie sw takich jak <code>\upsilon</code> czy
<code>\rightarrow</code>. Mechanizm taki uruchamia si (i wycza)
w AUC TeX-u poleceniem <code>LaTeX-math-mode</code> (<code>C-c ~</code>).
W trybie matematycznym po wprowadzeniu znaku
,,<code>`</code>'' klawiatura zmienia znaczenie i zamiast zwykych znakw
pojedynczym klawiszem mona wprowadza symbole matematyczne. I tak
(w trybie matematycznym) sekwencja klawiszy <code>`d</code> spowoduje
wpisanie <code>\delta</code>, <code>`G</code> -- <code>\Gamma</code>,
a <code>`cN</code> -- <code>{\cal N}</code>.
</p>
<p>
Poyteczne bywa podanie argumentu (<code>C-u</code>) przed
symbolem matematycznym. Sekwencja klawiszy <code>C-u `e</code>
spowoduje wpisanie do bufora <code>$\epsilon$</code> -- co
znacznie przypiesza wstawianie pojedynczych symboli w bloku
tekstu.
</p>
<p>
Bez moliwoci definiowania wasnych skrtw przydatno trybu matematycznego
byaby znacznie ograniczona. Mona to robi modyfikujc na prywatne potrzeby
list <code>LaTeX-math-list</code>. Nie sprawi te problemu zamiana klawisza
<code>`</code> na jaki porczniejszy (jeli kto musi) -- naley zmieni
warto zmiennej <code>LaTeX-math-abberv-prefix</code>.
</p>
<h3>Wasne definicje</h3>
<p>
Powrmy do rozwijania sw kluczowych. Czsto si zdarza, e definiujemy
wasne makra. AUC TeX doskonale nas rozumie. Jeli wpiszemy definicj
LaTeX-ow (<code>\renewcommand</code>) to AUC TeX j rozpozna i si
jej ,,nauczy'' -- bdzie ona dostpna poprzez mechanizm rozwijania pocztkw
wyrazw. Moliwe jest rwnie rozpoznawanie definicji TeX-a wprowadzanych jako
<code>\def</code>.
</p>
<p>
AUC TeX rozpoznaje makrodefinicje zapisane w pliku podczas
parsowania dokumentu po wydaniu polecenia
<code>TeX-normal-mode</code> (<code>C-c C-n</code>).
Jeli wic wpiszemy w pliku now definicj, naley wcisn <code>C-c C-n</code>
i nie musimy jej dokadnie pamita. Informacje
o makrodefinicjach zapisywane s w pliku
<code>./auto/nazwa.el</code>.
</p>
<p>
Mona wymusi parsowanie dokumentu natychmiast po jego wczytaniu
oraz umieszczanie informacji o nim w katalogu
auto przy kadym zapisie na dysk np. przez
wpisanie do pliku <code>.emacs</code> nastpujcych
wierszy:
</p>
<pre>
; parsowanie przy wczytywaniu:
(setq TeX-parse-self t)
; parsowanie przy zapisie:
(setq TeX-auto-save t)
</pre>
<p>
Zmian pliku <code>./auto/nazwa.el</code> powoduje rwnie
wstawienie do tekstu dokumentu nazwy etykiety
<code>\label</code>. Wstawiajc odnonik do tej etykiety
(<code>\ref</code>, <code>\pageref</code>) mona etykiet
wybra z listy etykiet pokazywanej przez mechanizm rozwijania
(<code>Tab</code>). I to jest naprawd cenna waciwo.
</p>
<p>
Sposb parsowania dokumentu mona
konfigurowa (po
szczegy odsyam do dokumentacji). Na przykad jeeli mamy saby
komputer i chcemy, aby rozpoznawane byy tylko etykiety musimy zadba
o nastpujce ustawienia (znw plik <code>.emacs</code>):
</p>
<pre>
(setq-default
TeX-auto-regexp-list
'LaTeX-auto-label-regexp-list)
</pre>
<h3>Przetwarzanie z wntrza AUC TeX-a</h3>
<p>
Na uwag zasuguje moliwo uruchamiania TeX-a i ogldania plikw .dvi
bez koniecznoci opuszczania Emacsa. Suy do tego polecenie przypisane do
sekwencji <code>C-c C-c</code>, czyli <code>TeX-command-master</code>. Po
wydaniu tego polecenia AUC TeX zapyta jakie dziaania ma podj. Jeli
w pliku byy dokonywane jakie zmiany, to zaproponuje jego przetworzenie
TeX-em. Po przetworzeniu i kolejnym wciniciu <code>C-c C-c</code>
bdzie chcia uruchomi przegldark <code>.dvi</code>. Jeeli nie wystpi
adne bdy w przetwarzaniu, to w okienku obok obejrzymy wynik
skadu.
</p>
<p>
Standardowe polecenia przetwarzania pliku rdowego mona atwo rozszerzy
o nasze ulubione: <code>mex</code>, <code>platex</code> czy
<code>pdftex</code>. Najatwiej przez menu XEmacsa. W razie potrzeby
mona skopiowa odpowiedni fragment z pliku <code>tex.el</code> (czy
wrcz <code>tex.elc</code>). Prawdopodobnie warto zmienion list
<code>TeX-command-list</code> wstawi do pliku <code>tex-site.el</code> --
niech si ciesz wszyscy uytkownicy.
</p>
<p>
Naprawd niezwykle uyteczna (i trudna do zaimplementowania poza
edytorem) jest moliwo przetworzenia tylko fragmentu pliku rdowego.
W przypadku skadania skomplikowanego dokumentu mona TeX-owa tylko
fragment nad ktrym pracujemy, co zaoszczdza mnstwo czasu. Suy do tego
polecenie <code>TeX-command-region</code> przypisane do sekwencji <code>C-c
C-r</code>. Wszystko dziaa tak samo jak w przypadku
<code>TeX-command-master</code>, z jednym wyjtkiem -- AUC TeX
buduje z nagwka i zaznaczonego fragmentu tekstu nowy plik, ktry
przetwarza TeX-em. Kolejne <code>C-c C-r</code> umoliwia obejrzenie waciwego
pliku <code>.dvi</code>. Trzeba si tylko pilnowa, eby nie definiowa
adnych makr globalnych poza nagwkiem. W plikach LaTeX-owych kocem
nagwka jest wiersz zawierajcy napis <code>\begin{document}</code>. W plikach
TeX-owych jest to natomiast <code>%**end of header</code>. Znacznik koca
nagwka mona zdefiniowa jako wyraenie regularne okrelajc warto zmiennej
<code>TeX-header-end</code>.
</p>
<p>
W przypadku wystpienia bdw w czasie przetwarzania mona oglda je
kolejno przy pomocy polecenia <code>TeX-next-error</code> (|C-c `|).
AUC TeX opatruje bdy TeX-a dodatkowym komentarzem, co moe pomc
pocztkujcym uytkownikom.
</p>
<h3>I wicej...</h3>
<p>
Zatrzymajmy si jeszcze nad tym, co widzimy na ekranie. Emacs
(w szczeglnoci XEmacs) potrafi inteligentnie zaznacza odpowiednie
fragmenty tekstu kolorami. Konfigurowanie kolorw w XEmacsie jest
proste (mysz w sekcji <em>faces</em> -- dlatego
warto uywa XEmacsa). Jeli kolorowanie nie wczyo si z wasnej
woli mona je wymusi poleceniem <code>font-lock-mode</code>.
</p>
<p>
Nawet bez kolorowania tre dokumentu mona wprowadzi
w niezwykle czytelnej formie dziki zaawansowanym poleceniom
formatowania tekstu.
W wolnej chwili warto wyprbowa polecenia:
</p>
<p>
<code>LaTeX-fill-paragraph</code> (<code>C-c C-q C-p</code> lub <code>M-q</code>),
<code>LaTeX-fill-enviroment</code> (<code>C-c C-q C-e</code>),
<code>LaTeX-fill-section</code> (<code>C-c C-q C-s</code>) oraz
<code>LaTeX-fill-region</code> (<code>C-c C-q C-r</code> lub <code>M-g</code>).
</p>
<p>
Ograniczona objto artykuu nie pozwala omwi wszystkich moliwoci
AUC TeX-a. Nie zmieciy si tematy obszerne, takie jak konfigurowanie
dziaania AUC TeX-a i liczne szczegowe, np. praca
z dokumentami hierarchicznymi. Wszystko mona doczyta
w dokumentacji. Czytajc trzeba pamita, e AUC TeX jest czci
edytora Emacs i przez cay czas mona korzysta ze wszystkiego, co Emacs
oferuje. Przykadem jest niezaleny (ale wspierany przez AUC TeX-a) tryb
,,ukrywania'' fragmentw tekstu, wczany/wyczany poleceniem
<code>outline-minor-mode</code>. Pojawiajce si dodatkowe pozycje menu
(i polecenia) pozwalaj wywietli zamiast rozdziau, podrozdziau itd.
tylko fragment pierwszego wiersza z tytuem (bez zmiany tekstu). Moliwe
jest np. pisanie czwartego rozdziau trzy wiersze od koca nagwka, albo
poruszanie si po tekcie tak, jakby skada si on tylko ze rdtytuw.
</p>
<h2>Przetwarzanie zewntrzne</h2>
<p>
W caej zabawie z Emacsem najmilsze jest to, e wcale nie trzeba
go uywa. Tekst mona przygotowa korzystajc z jakiegokolwiek
edytora (np. ...Emacsa), a pliki rdowe przetwarza
zewntrznie. Przypumy, e kolega podesa nam 46 felietonw, ktre
napisa w ostatnim roku. Wszystkie, to kompletne pliki LaTeX-owe.
W takiej sytuacji TeX-owanie z wntrza edytora zajmie zbyt duo
czasu. Najszybsz metod bdzie umieszczenie wszystkich plikw
w jednym katalogu i napisanie w terminalu mniej wicej czego
takiego:
</p>
<pre>
~$ for i in *.tex; do latex $i; done
</pre>
<p>
Nie zawsze jednak jest tak prosto. Czsto
otrzymanie wyniku kocowego wymaga
wielu przetworze. Wpisywanie cigu tych samych polece po kadej
modyfikacji pliku bywa mczce. Dlatego mdrzy
ludzie
stworzyli program <code>make</code>
(lub <code>gnumake</code>). Wszystkie polecenia wystarczy
wpisa raz
ale do pliku
<code>Makefile</code> w biecym katalogu. W najprostszym
przypadku plik ten bdzie wyglda tak:
</p>
<pre>
all: referat.ps
%.dvi: %.tex
latex $<
%.ps: %.dvi
dvips $<
%.pdf: %.tex
pdflatex $<
</pre>
<p>
Z zawartoci pliku wynika, e pracujemy nad referatem (tworzymy
plik <code>referat.tex</code>) i e uywamy przegldarki
plikw PS.
Teraz cae TeX-owanie sprowadza si do uruchomienia
w terminalu programu <code>make</code>. Program ten domylnie
wykona pierwsz regu z pliku Makefile
(<code>all: referat.ps</code> -- zamiast nazwy
<code>all</code> mona wstawi dowolne sowo,
np. <code>PsiaBuda</code>) i dowie si, e jestemy
zainteresowani plikiem <code>.ps</code>. Z trzeciej reguy
program wywnioskuje, e pliki <code>.ps</code> robi si z plikw
<code>.dvi</code> poleceniem <code>dvips</code>. Nie ma
jednak pliku <code>.dvi</code>, ale o tym jak go zrobi mwi
druga regua. A plik referat.tex jest na
dysku.
</p>
<p>
Ostatnia regua zostanie wykorzystana gdy
wykonamy polecenia <code>make pdf</code> -- wtedy
zostanie utworzony plik <code>referat.pdf</code>.
</p>
<p>
Najwaniejsz cech programu make jest to, e do przetwarzania
dochodzi tylko wtedy, gdy program rdowy by modyfikowany po
ostatnim przetworzeniu (plik wynikowy jest starszy od pliku
rdowego). Dziki temu mona w terminalu napisa takie (lub
podobne) zaklcie:
</p>
<pre>
~$ while [ TRUE ]; do make;
sleep 5; done
</pre>
<p>
Tak potraktowany interpretator polece co 5 sekund bdzie
uruchamia program make, ktry przetworzy plik rdowy tylko wtedy,
gdy ten ostatni zosta zapisany na dysk po ostatnim przetworzeniu.
Teraz wystarczy tylko mysz wskaza przegldark, eby zobaczy, co
,,naskadalimy'' do tej pory (przegldarka powinna reagowa na
modyfikacj przegldanego pliku). Ta technika jest wraliwa na
zapisywanie pliku z bdem. Oczywicie, jeli mamy
dobry edytor, to wpisanie zego sowa kluczowego,
czy nie domknicie rodowiska lub nawiasu nie jest proste.
</p>
<p>
Co si jednak stanie, gdy popenimy bd, na ktrym TeX
si zatrzyma? Po pierwsze moemy przeczyta uwanie o co chodzi i w
edytorze przeskoczy do waciwego wiersza, a TeX-owi powiedzie
np. <code>x</code>. Jeeli jednak ustawimy zmienn
rodowiska:
</p>
<pre>
TEXEDIT='emacsclient +%d %s'
</pre>
<p>
lub w przypadku XEmacsa:
</p>
<pre>
TEXEDIT='enu +%d %s'
</pre>
<p>
i jeeli uywamy Emacsa w ktrym powiemy
<code>M-x server-start</code>
(<code>gnuserv-start</code>), to moemy odpowiedzie TeX-owi
<code>e</code> (od <em>edit</em>). Wtedy
Emacs wczyta plik z bdem i kursorem wskae wiersz, co do ktrego
TeX ma wtpliwoci. Po zakoczeniu poprawek naley zapisa plik
(<code>C-x C-s</code>) i powiedzie klientowi, e ju po
wszystkim (<code>C-x #</code>). Dla jasnoci: serwer to Emacs, a
klient to TeX...
</p>
<p>
Korzystanie z emacsowego klienta i serwera pomaga w wielu
trudnych sytuacjach. Wyobramy sobie ksik majc 42 rozdziay,
kady zapisany w oddzielnym pliku. Jeli w kilkunastu plikach zamiast
<code>\ala</code> omykowo wpisalimy <code>\ola</code>,
z tym e czasem <code>\ola</code> jest dobrze i ma zosta, to
zanosi si na dusze poprawianie. A mona z poziomu interpretatora
polece shell napisa:
</p>
<pre>
~$ gnuclient `grep -l \\ola *.tex`
</pre>
<p>
Potem wystarczy wciskanie klawisza <code>C-s</code>
i czasem <code>C-x e</code> (pierwszy raz oczywicie rwnie
<code>C-x (</code> i <code>C-x )</code>). Jeeli jednak
kto ma tendencje do zapominania o takich szczegach jak
<code>-l</code>, to niech lepiej prbuje si uczy krok po
kroku... Na razie. Po jakim czasie moe okaza si potrzebny
dodatkowy wiersz w pliku <code>.emacs</code>:
</p>
<pre>
(gnuserv-start)
</pre>
<p>
Bardzo niechtnie uywam moliwoci przetwarzania pliku
TeX-owego z wntrza edytora.
Nawet piszc niewielki dokument warto (moim zdaniem) korzysta
z programu make. Ju kilka razy zapomniaem
uruchomi <code>dvips</code>-a (mam drukark PS), w efekcie drukujc nieaktualn
wersj dokumentu. Dlatego mi wystarcza, gdy wewntrz edytora mona
wykona tylko jedno polecenie -- make.
</p>
<h2>Podsumowanie</h2>
<p>
Wspczesne narzdzia umoliwiaj wygodne i bezbolesne
korzystanie z dobrodziejstw oferowanych przez TeX-a.
We wspczesnym sprzcie karta graficzna i monitor pozwalaj na prac
w systemie okienkowym (np. XWindow);
mona take na bieco oglda
w ssiednim oknie gotowy dokument. W przypadku korzystania z XEmacsa
(lub podobnego edytora) pracowa z LaTeX-em mog nawet ci
uytkownicy, ktrzy nie zdejmuj rki z myszy.
</p>
<p>
Mam nadziej, e udao mi si pokaza, jak due moliwoci stoj
przed kim, kto chce wygodnie i efektywnie uywa TeX-a. Opisaem
tylko najprostsze warianty konfiguracji rodowiska pracy. Istnieje
wiele sposobw i sposobikw, o ktrych nie wspomniaem i jak sdz,
jeszcze wicej takich, o ktrych nigdy nie syszaem. Wszystkim ycz
miego TeX-owania.
</p>
<hr>
<p>
<A href="mailto:A.Dawidziuk@GUST.org.pl"> Adam Dawidziuk </A>
<P><i> Tekst jest przedrukiem z Biuletynu GUST, nr 11/1998,
s. 58--64.</i><BR>(c) Polska Grupa Uytkownikw Systemu TeX
<BR><i>Ostatnia modyfikacja 15.01.2000</i>
</P>
</body>
</html>
|