Emacs jako zaawansowany edytor systemu LaTeX
Instalacja
MiKTeX
Zainstaluj MiKTeX lub pobierz kompletną dystrybucję proTeXt dla systemu Windows (~955 MB). Po rozpakowaniu zawartości archiwum przejdź do katalogu ..\ProTeXt\MiKTeX\setup i uruchom znajdujący się tam instalator.
Upewnij się, że zmienna systemowa Path zawiera wpis podobny do tego: [code]C:\Program Files\MiKTeX 2.8\miktex\bin;[/code]
Ghostscript + Ghostview
Zainstaluj Ghostscript i Ghostview ze strony ghost.
Emacs
* Pobierz najnowszą wersję edytora Emacs dla systemu Windows. Aktualna wersja to emacs-23.2-bin-i386.zip (~43 MB).
* Rozpakuj archiwum w wybranej lokalizacji, np. na dysku D:.
* Aby uruchomić Emacsa przejdź do katalogu ..\emacs-23.2\bin, np. D:\emacs-23.2\bin i uruchom plik runemacs.exe. Warto utworzyć na pulpicie skrót do tego pliku.
AUCTeX
* Ze strony AUCTeX pobierz najnowszą wersję rozszerzenia Emacsa przeznaczoną do formatowania dokumentów LaTeX-a. * Prekompilowany pakiet AUCTeX dystrybuowany jest w postaci pliku zip, który należy rozpakować w katalogu site-lisp Emacsa, np. D:\emacs-23.2\site-lisp\auctex.
Konfiguracja
Konfiguracja Emacsa sprowadza się głównie do dodania stosownych wpisów do pliku init.el, który znajduje się (w systemie Windows Vista/7) w katalogu C:\Users\USER\AppData\Roaming\.emacs.d\, gdzie USER oznacza nazwę użytkownika. Jeśli taki plik/katalog nie istnieje to należy go utworzyć.
Konfiguracja Emacsa zależy w dużej mierze od preferencji użytkownika. Wpisy, które już teraz warto dodać to:
(set-keyboard-coding-system 'cp1250) (prefer-coding-system 'windows-1250) (setq-default indent-tabs-mode nil) (setq default-tab-width 4)
Odpowiadają one za ustawienie odpowiedniego kodowania dla systemu Windows i szerokość tabulacji.
Można już korzystać z Emacsa jako zaawansowanego edytora systemu LaTeX. Z podstawową obsługą Emacsa można zapoznać się na stronie emacstour oraz w wikipedii.
Uwaga:
C - oznacza klawisz Ctrl, M - oznacza klawisz Alt (Meta), RET - oznacza ENTER (RETURN).
Korzystanie z AUCTeX
Plik tex kompilujemy przy pomocy kombinacji klawiszy C-c C-c RET. Ponowne użycie kombinacji C-c C-c RET uruchamia przeglądarkę Yap (podgląd dvi). Inne polecenia uzyskujemy poprzez C-c C-c TAB.
Do zaawansowanej obsługi podglądu dvi poprzez Yap brakuje jeszcze jednej funkcji - Inverse DVI Search. Opcja ta umożliwia przejście kursora w odpowiednie miejsce kodu pliku tex po dwukrotnym kliknięciu na podgląd w przeglądarce Yap.
W tym celu wciskamy kombinację M-x i wpisujemy server-start lub (jeśli chcemy aby serwer startował przy każdym uruchominiu Emacsa) dodajemy do pliku init.el:
(start-server)
Następnie uruchamiamy przeglądarkę Yap, wybieramy View > Options... > Inverse DVI Search, klikamy New i wpisujemy odpowiednio:
Name: Emacs Specify the program you want to use to edit TeX sources files: D:\emacs-23.2\bin\emacsclientw.exe Specify the program arguments: +%l "%f"
Otwieramy dowolony plik tex, kompilujemy C-c C-c RET, uruchamiamy podgląd C-c C-c RET, klikamy podwójnie w dowolnym miejscu poglądu i...
The source file could not be opened because the page contains no source links.
Niestety. Powód jest następujący: kombinacja C-c C-c RET uruchamia polecenie latex.exe example.tex. Jeśli zależy nam na opcji Inverse DVI View przechodzimy do wiersza poleceń przy pomocy kombinacji M-! (Alt+Shift+1) i wpisujemy latex --src example.tex, gdzie example to nazwa pliku tex.
Działa!
Jest jeszcze tylko jeden mały problem... gdy otwieramy plik DVI znajdujący się na dysku i klikamy podwójnie w wybrane miejsce to oczekujemy, że zostanie uruchomiony Emacs z kursorem ustawionym w odpowiedniej linii kodu. Niestety otrzymujemy komunikat o błędzie.
Rozwiązanie problemu
* Dodaj do zmiennej Path ścieżkę do katalogu bin Emacsa, np. D:\emacs-23.2\bin; * Dodaj nową zmienną użytkownika ALTERNATE_EDITOR o wartości runemacs (korzystając z Panelu Sterowania lub wpisując w cmd: set ALTERNATE_EDITOR runemacs)
(lub podaj ścieżkę do pliku runemacs.exe w przypadku gdy do zmiennej Path nie została dodana ścieżka do katalogu bin)
Teraz już wszystko działa poprawnie!
Konfiguracja AUCTeX
Aby wygodnie korzystać z Emacsa jako zaawansowanego edytora systemu LaTeX warto dodać do pliku init.el następujące wpisy:
(load "auctex.el" nil t t) (require 'tex-mik) (setq TeX-auto-save t) (setq TeX-parse-self t) (setq-default TeX-master nil) (add-hook 'LaTeX-mode-hook 'auto-fill-mode) (add-hook 'LaTeX-mode-hook 'flyspell-mode) (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) (add-hook 'LaTeX-mode-hook 'turn-on-reftex) (setq reftex-plug-into-AUCTeX t)
Instalacja i konfiguracja YASnippet
Jak dotąd otrzymaliśmy edytor, który niewiele się różni możliwościami od popularnych edytorów LaTeX-a. Oczywiście jest to edytor dużo bardziej wszechstronny, o dużym stopniu konfigurowalności. Można więc rozszerzyć jego funkcjonalność o dodatkowe opcje. Jedną z interesujących są snippety YAS. YASnippet jest systemem szablonów do Emacsa, które umożliwiają automatyczne rozwinięcie wybranego skrótu. Jak działa YASnippet można przekonać się oglądając demo.
Ze strony YASnippet pobierz plik yasnippet-x.y.z.tar.bz2 (gdzie x.y.z oznacza wersję pakietu) i rozpakuj w katalogu ~\.emacs.d\plugins. Katalog plugins najprawdopodobniej nie istnieje w podanej lokalizacji, więc należy go utworzyć. W omawianym przykładzie ścieżka jest następująca: C:\Users\USER\AppData\Roaming\.emacs.d\plugins\yasnippet-0.6.1c.
Następnie dodaj do pliku init.el następujące wpisy:
(add-to-list 'load-path "~/.emacs.d/plugins/yasnippet-x.y.z") (require 'yasnippet) ;; not yasnippet-bundle (yas/initialize) (yas/load-directory "~/.emacs.d/plugins/yasnippet-x.y.z/snippets")
uwzględniając odpowiedni numer wersji pakietu. W danym przykładzie jest to:
(add-to-list 'load-path "~/.emacs.d/plugins/yasnippet-0.6.1c") (require 'yasnippet) ;; not yasnippet-bundle (yas/initialize) (yas/load-directory "~/.emacs.d/plugins/yasnippet-0.6.1c/snippets")
Po ponownym uruchomieniu Emacsa mamy możliwość korzystania z domyślnych snippetów dla wybranych języków oraz definiowania własnych. Jest to bardzo efektywne rozwiązanie.
Konfiguracja wyglądu i instalacja tematu graficznego
Domyślnie Emacs po uruchomieniu wyświetla niskiej jakości grafikę (logo) i posiada typowy temat graficzny z białym tłem, które przy dłuższej pracy z tekstem bywa męczący dla oczu.
Jakość wyświetlanej grafiki można poprawić dodając do Emacsa obsługę plików PNG. Emacs potrafi również wyświetlać inne formaty graficzne (JPG, TIFF, GIF), obsługiwać archiwa i wiele więcej. Lista dodatkowych bibliotek do ich obsługi znajduje się na stronie GnuWinPackages. Wybierz LibPng i pobierz Binary Zip oraz dependencies zip file. Po rozpakowaniu skopiuj pliki zlib1.dll oraz libpng12.dll do katalogu bin Emacsa, np. D:\emacs-23.2\bin. Po ponownym uruchomieniu jakość grafiki znacząco się poprawia.
Aby zmienić temat graficzny pobierz paczkę color-theme-x.y.z.zip i rozpakuj ją w katalogu ~\.emacs.d\plugins, a następnie dodaj do pliku init.el wpisy:
(add-to-list 'load-path "~/.emacs.d/plugins/color-theme-6.6.0") (require 'color-theme) (setq color-theme-is-global t) (color-theme-initialize)
Tematy graficzne można zmieniać stosując kombinację klawiszy M-x i wpisując color-theme-TAB, gdzie TAB oznacza klawisz tabulacji. Można również dodać odpowiedni wpis do pliku init.el, aby wykorzystać temat przy kolejnym uruchomieniu edytora, np.
(color-theme-comidia)
Jednym z ciekawszych tematów graficznych dla Emacsa jest tango. Aby zastosować ten temat plik color-theme-tango.el skopiuj do katalogu ~\.emacs.d\plugins\color-theme-x.y.z\themes i dodaj/zmodyfikuj wpis w pliku init.el:
(color-theme-tango)
W omawianym przypadku plik color-theme-tango.el skopiowano do katalogu C:\Users\USER\AppData\Roaming\.emacs.d\plugins\color-theme-6.6.0\themes.
Podsumowanie
Przykładowy plik init.el:
(tool-bar-mode -1) (scroll-bar-mode -1) (setq-default truncate-lines t) (setq line-number-mode t) (setq column-number-mode t) ;; http:/www.emacswiki.org/cgi-bin/wiki.pl?ColorTheme (add-to-list 'load-path "~/.emacs.d/plugins/color-theme-6.6.0") (require 'color-theme) (setq color-theme-is-global t) (color-theme-initialize) ;; This is my favorite color theme. (color-theme-tango) (set-keyboard-coding-system 'cp1250) (prefer-coding-system 'windows-1250) ;(setq ispell-program-name "aspell") ;(setq ispell-dictionary "polish") (setq-default indent-tabs-mode nil) (setq default-tab-width 4) (set-face-attribute 'default nil :font "Consolas-11") (add-to-list 'load-path "~/.emacs.d/plugins/yasnippet-0.6.1c") (require 'yasnippet) ;; not yasnippet-bundle (yas/initialize) (yas/load-directory "~/.emacs.d/plugins/yasnippet-0.6.1c/snippets") ;; Start server for Yap Inverse DVI Search. (server-start) (load "auctex.el" nil t t) (require 'tex-mik) (setq TeX-auto-save t) (setq TeX-parse-self t) (setq-default TeX-master nil) (add-hook 'LaTeX-mode-hook 'auto-fill-mode) (add-hook 'LaTeX-mode-hook 'flyspell-mode) (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) (add-hook 'LaTeX-mode-hook 'turn-on-reftex) (setq reftex-plug-into-AUCTeX t) (setq TeX-save-query nil)
Symbol ; oznacza, że dana linia jest traktowana jako komentarz, tzn. nie jest uwzględniana przez Emacsa.