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.