Valid HTML 4.01 Transitional! stat4u

Jakub Narębski - Porady komputerowe

Emacs  AUCTeX i RefTeX  (La)TeX-owe linki  Porady komputerowe
Strona domowa

Emacs i LaTeX

TUTAJ jest mój plik .emacs gdyby ktoś chciał go obejrzeć. Aby z niego skorzystać należy zapisać go do swojego katalogu głównego lub zmodyfikować na jego podstawie własny plik .emacs. Jest w nim m.in. obsługa polskich literek oraz włączenie AUC TeX-a, pakietu Emacsa do wspomagania pisania w LaTeX-u. AUC TeX jest w pełni konfigurowalny z poziomu Emacsa: wystarczy wybrać Help/Customize i w nim Wp/Tex/AUC TeX. W ten sposób można np. ustawić by AUC TeX nie zamieniał cudzysłowów " na `` i ''.

Polecam także przejrzenie mojego pliku .emacs, aby zobaczyć, jakie udostępnia on możliwości (tex-magic-space, auto-fill-mode, ...). Jest dosyć dobrze wyposażony w komentarze. Może być on używany zarówno do Emacsa jak i do XEmacsa (aczkolwiek jeszcze parę rzeczy trzeba poprawić. Pytania proszę kierować na jnareb@fuw.edu.pl. Warto także zajrzeć na Dotfiles.com, gdzie można znaleźć różne pliki konfiguracyjne - nie tylko do Emacsa. Uwaga: włączenie tex-magic-space (domyślnie włączone, przełączanie pod C-c SPC) powoduje że nie działa abbrev-mode. Powinno to zostać kiedyś naprawione...

Zdefiniowane w moim .emacs polecenia tex-hard-spaces i tex-magic-space można znaleźć także (w nowszej wersji) w pliku sierotki.el.

Jeśli komuś spodobał się font jakiego używa mój Emacs (fixed, semicondensed) i kolorki w nim, to proszę zajrzeć do mojego pliku .Xdefaults. Są tam dwie linijki: jedna dotycząca Emacsa, druga XEmacsa. Font semicondensed jest węższy i, moim skromnym zdaniem, ładniejszy. Listę wszystkich fontów pl można uzyskać wykonując komendę xlsfonts | grep "iso8859-2" (najlepiej zapisując wynik do pliku). Emacs do wersji 20.x obsługuje wyłacznie fonty o stałej szerokości znaku, t.j. takie które mają spacing (spc w xfontsel) c albo m (czwarta pozycja od końca w nazwie fontu). Do wyboru fontu może też służyć program xfontsel.
Plik .Xdefaults należy zapisać do własnego katalogu głównego, pod tą właśnie nazwą. O ile oczywiście nie ma się własnego pliku .Xdefaults, w którym to przypadku należy go tylko w razie potrzeby zmodyfikować.

Powrót na górę strony


Krótki opis możliwości Emacsowych pakietów AUCTeX i RefTeX.

AUCTeX

Oto kilka najważniejszych komend AUCTeX-a (zachęcam do zajrzenia do dokumentacji AUC TeX-a, znajdującej się na stronie domowej AUC TeX-a). Ponieważ AUCTeX nie jest zainstalowany, więc nie ma dostępu do informacji za pomocą info auctex, przynajmniej z poziomu linii komend i Emacsa. Pod XEmacsem ten pakiet jest zainstalowany domyślnie, zatem można oglądać dokumentację do tego pakietu w tym programie.

TeX-auto-generate-global (M-x TeX-auto-generate-global)
Umożliwia dopełnianie nazw komend (pytając jeśli potrzeba o ich parametry) we wszystkich standardowych stylach (i pakietach) używanych w dokumencie. Obecnie w auctex/styles znajdują się:
TeX-normal-mode (C-c C-n)
Usuwa wszelką informację o danym buforze i powoduje ponowne zaaplikowanie "style hooks". Pierwsza komenda jaką należy wykonać po wpisaniu pakietów z których będzie się korzystało. Powoduje że komendy AUCTeX-a rozpoznają nazwy komendy i otoczeń z podanych w preambule pakietów. Np. w LaTeX-environment, gdy w preambule znajduje się komenda \usepackage{amsmath}, po wykonaniu TeX-normal-mode, pojawiają się otoczenia AMSMath-owe, jak align czy alignat, łącznie z pytaniem o ew. dodatkowe parametry (jak w alignat) oraz o etykietę. Kłopoty mogą pojawiać się przy pakietach włączanych pośrednio (t.j. przez inne pakiety). Patrz też poprzednia komenda.
LaTeX-environment (C-c C-e)
Wstawia otoczenie tzn. parę \begin{} - \end{}. Nazwę otoczenia można wprowadzać korzystając z TAB-completion, tzn. dopełniając jego nazwę po wpisaniu jej fragmentu za pomocą klawisza TAB. Obsługuje większość (ale niestety nie wszystkie) standardowych otoczeń, domagając się dodatkowych parametrów kiedy potrzebne (np. przy figure czy picture), a w przypadku gdy ma to sens pytając się o znacznik (label).)
LaTeX-close-environment (C-c ]): ] - nawias kwadratowy zamykający
Zamyka najbardziej wewnętrzne otoczenie, wstawiając odpowiednie `\end{}'. Bardzo przydatne, chociaż lepiej jest wstawiać otoczenia w całości, używając C-c C-e.
TeX-insert-macro (C-c C-m)
Wstawia komendę (makro) TeX-owe, pytając się o jego nazwę oraz (jeśli jest to potrzebne) o jego argumenty. Aby użyć innej metody należy, np. w pliku .emacs, ustawić różną od nil wartość zmiennej TeX-electric-escape (w pliku .emacs za pomocą (setq TeX-electric-escape t). Umożliwia to uruchamianie mechanizmu rozwijania makr po wpisaniu znaku '\'.
LaTeX-section (C-c C-s)
Wstawia jedno z poleceń podziału na części: `\chapter{}', `\section{}'... Domyślnym poziomem jest poziom używany ostatnio. C-u C-c C-s powoduje zmianę o poziom w dół. AUCTeX pyta się o nazwę rozdziału (sekcji) i o jej etykietę. Jeśli RefTeX (patrz niżej jest połączony (plugged-in) z AUCTeX-em to etykieta będzie wyprowadzona z nazwy części (sekcji). Można ustalić (za pomocą Customize) do którego poziomu AUCTeX ma wstawiać etykiety.
TeX-font (C-c C-f C-r, C-c C-f C-e, C-c C-f C-b,...)
Wstawia komendę zmieniającą font na odpowiedni (roman, emphasized, bold, ...), używając odpowiedniej komendy zależnie od trybu (np. w trybie matematycznym bold to \mathbf{}, podczas gdy normalnie \textbf{}). Uwaga: AUCTeX rozpoznaje tryb matematyczny, ale nie wtedy gdy używamy własnych komend do wejścia do trybu matematycznego (np. definiując \beq jako \begin{equation}). Lista możliwości dostępna jest pod (np. C-c C-f C-q) (q jak query), a także dostępna jest z menu pod LaTeX/Insert Font.
LaTeX-math-mode (C-c ~)
Włącza tryb matematyczny (na wolniejszych komputerach może to chwilę potrwać), umożliwiający wprowadzanie w skrótowy sposób większości znaczków matematycznych. Np. litery greckie można wprowadzać wpisując ` i odpowiednią literkę, np. ` a wpisuje \alpha. W menu pojawia się Math, gdzie można zajrzeć po dalsze przykłady. Można dodawać własne skróty (przy tym należy pamiętać, że klawisz T wpisuje się jako ?T; to co wpisuje Customize u mnie nie działało, więc należy przekopiować to, co Customize dodał do .emacs jako (setq nazwa_zmiennej wartość), zamieniając numerek na ?[znak]). Uwaga: na wolniejszych komputerach/komputerach z mniejszą ilością pamięci załadowanie tego trybu po raz pierwszy może trochę potrwać (nawet kilkanaście sekund).
TeX-[un]comment-region (C-c :, C-c ;)
Wstawia/usuwa symbole % z zaznaczonego (np. za pomocą myszki) fragmentu, czyniąc zeń komentarz/przywracając go jako normalny tekst.
TeX-command-master (C-c C-c)
Uruchamia komendę na bieżącym dokumencie LaTeX-owym. Dostępne są wszystkie komendy z menu Command, m.in. LaTeX (latechuje bieżący dokument), View (uruchamia przeglądarkę plików DVI z podgladem wersji skompilowanej dokumentu) i File (domyślnie przekształca odpowiedni plik DVI do PostScriptu za pomocą programu dvips). Proponowana jest komenda LaTeX, jeśli w pliku coś się zmieniło lub potrzebny jest jeszcze jeden przebieg (odnośniki), oraz View jeśli plik został już skompilowany. W razie problemów z kompilacją można użyć LaTeX Interactive.
TeX-next-error (C-c `)
Przechodzi do następnego błędu w pliku LaTeX-owym (przy kompilacji z wnętrza Emacsa). C-u C-c ` zaczyna od początku błędów. Uwaga: przy dokumentach składających się z wielu plików potrzebne jest odpowiednie ustawienie zmiennej TeX-master.

Istnieje także możliwość kompilowania pliku z wnętrza Emacsa, w tym także wyłącznie zaznaczonych fragmentów (AUCTeX automatycznie dołącza preambułę i końcówkę) - patrz menu Command. Niestety, dołącza on na początek pliku swoje własne komentarze, powodując że nie działa mechanizm TCX używania polskich literek za pomocą odpowiedniego wpisu w pierwszej linijce. Można to zmienić za pomocą zmiany komend wywoływanych przez odpowiednie polecenia AUCTeX-a (powinien pojawić się wkrótce opis zmian których trzeba dokonać w tex-site.el). Mechanizm używający \usepackage[latin2]{inputenc} działa w porządku.

W którymś z numerów Unix&Linux z roku 1999 jest ładny artykuł o AUCTeX-u, z którego zresztą częściowo korzystałem przy pisaniu tej strony. O AUCTeX-u można poczytać także w biuletynie GUSTu nr 11, w artykule Adama Dawidziuka. Dostępny jest on jako PostScript: 09AUCTEX.ps.gz.

Powrót na górę strony


RefTeX

Poniżej kilka najczęściej używanych komend RefTeX-a (zachęcam do zajrzenia do pliów info nt. RefTeX-a, np. za pomocą komendy info reftex). Tutaj dostępna jest dokumentacja do RefTeX-a, znajdująca się na stronie domowej RefTeX-a. Warto na początek zajrzeć do krótkiego wprowadzenia do RefTeX-a (RefTeX in a Nutshell).

Spis treści `C-c ='
Powoduje utworzenie spisu treści w bieżącym dokumencie w osobnej części okna. Umożliwia szybkie poruszanie się po dokumencie. Pod ? jest krótki opis komend.
Wstawianie odnośników (references) `C-c )': ) - nawias okrągły zamykający
Pyta się o rodzaj obiektu (część, równanie, rysunek, tabela,...), a następnie umożliwia poruszanie się po zdefiniowanych etykietach, z pokazywaniem otoczenia, możliwością podejrzenia miejsca zdefiniowania etykiety i podobnymi przydatnymi rzeczami. Wybranie etykiety powoduje wtawienie odpowiedniego \ref{LABEL} do pliku (w przypadku równań \eqref{LABEL}, które samo dba o odpowiednie nawiasy; o ile się to ustawi - patrz niżej).

RefTeX umożliwia także współpracę z bazami literatury (BibTeX) przy wstawianiu cytowań. Możliwe jest także podążanie za etykietami, by podejrzeć miejsce gdzie zostały zdefiniowane. Uwaga: włączenie RefTeX-a do AUCTeX-a powoduje automatycznie używanie RefTeX-a do wstawiania etykiet. Standardowo RefTeX wstawia proste etykiety numeryczne dla równań, bez pytania o potwierdzenie etykiety. Aby Emacs pytał się o etykiety równań należy za pomocą customize (M-x customize albo z menu Help/Customize/Browse Customization Groups) w grupie Wp/TeX/RefTeX przejść do 'Reftex Label Support' i w podgrupie 'Reftex Making and Inserting Labels', w opcji 'Reftex Insert Label Flags' dopisać do 'Prompt for label string' dopisać e lub ustawić na always. Aby RefTeX używał \eqref{eq:ref} zamiast \ref{eq:ref}przy wstawianiu odnośników do równań trzeba w podgrupie 'Reftex Defining Label Environments' wybrać opcję 'Reftex Default Label Alist Entries', wybrać '[Show]' i zaznaczyć 'AMSTeX: amsmath with eqref macro'. Oczywiście należy zapamiętać i zapisać zmiany. Jeśli definiujesz jakieś makra czy otoczenia (np. za pomocą komendy \newtheorem), które chcesz etykietować, i chcesz np. by miały domyślny jakiś prefix (np. def: dla definicji, tw: czy thm: dla twierdzeń) to zmian należy dokonywać tamże.

Wkrótce powinny pojawić się na tej stronie AUCTeX-owe pakiety do LaTeX-owych pakietów: feynmf oraz mojego własnego pakietu renorm.

Powrót na górę strony


Kilka stron związanych z TeX-em:

Powrót na górę strony


Kilka porad komputerowych

Jeśli chcesz skorzystać z konsoli, to możesz się na nią przełączyć przez Alt-Ctrl-Fn, zaś do X-ow wrócić z powrotem przez Alt-F7 (lub Alt-F3 na teomku). Dodatkowe X-y można odpalić za pomocą xinit /usr/bin/startkde -- :1 & (aby odpalić KDE). Być może zamiast xinit można użyć startx (bez /usr/bin/startkde). Nowa sesja X-Window będzie dostępna pod Alt-F8. Wyjść z X-Window można miedzy innymi za pomocą Ctrl-Alt-Backspace.

Polskie literki na konsoli powinny być dostępne za pomocą komendy consolechars -f iso02.f16 a później consolechars -m iso02, zaś polska klawiatura za pomocą loadkeys pl lub loadkeys pl02.kmap.


Aby zabezpieczyć się przed przypadkowym skasowaniem pliku warto w .tcshrc (lub w .cshrc, lub .bashrc) wpisać:

alias cp 'cp -i'
alias rm 'rm -i'
alias mv 'mv -i'

Ładny znak gotowości (prompt), zawierający numer polecenia w "historii" (można polecenia wywoływać za pomocą ![numer], identyfikator użytkownika i bieżący katalog (home oznaczany jest jako ~) można uzyskać wpisując w tym pliku:

set prompt="%h:%n@%m %~> "
lub, jeśli nie chcemy by wpisywał pełną nazwę katalogu, a tylko jej końcową część, zaś ominięty fragment zaznaczał za pomocą ..., to zamiast tego należy wpisać (cyfrę 3 można oczywiście zastąpić inną)
set ellipsis
set prompt="%h:%n@%m %c03> "

Wpisanie set autolist=ambiguous spowoduje, że dwukrotne TAB spowoduje wyświetlenie wszystkich plików pasujących do wpisanej do tej pory części nazwy.

Jeśli używasz basha, to oczywiście zmiany należy wprowadzać do .bashrc lub .bash_profile. Zamiast zmiennej prompt należy ustawić (np. za pomocą komendy declare -x) zmienną PS1. Nie ma [chyba] niestety możliwości skracania ścieżki do kilku (np. trzech) ostatnich katalogów.


Inne informacje można znaleźć na stronie linków komputerowych Marka Więckowskiego.

Powrót na górę strony



-- 
Jakub Narębski  mailto:jnareb@fuw.edu.pl
(doktorant IFT)

Ostatnie zmiany: 4 lipca 2010 r.