My brand new goal in life is to get more proficient with teh Emacs so I can experience the juicy goodness of the elisp that people keep telling me about. So yes, this will be another Emacs post and there will probably be another one before the end of the week. But today I won’t be talking just about emacs – this is also about LaTex.

If my calculations are correct, the combination of Emacs + LaTex should have scared away roughly 60 to 80% of the readers. Those who remain either already use Emacs, use Emacs to code LaTex, or are just sticking around to tell me I should stick with Vim. And no, I’m not abandoning the good old Vim – I will probably still use it till I die. But while vim is probably the best text editor on the planet Emacs is actually a very good general purpose IDE like framework.

For example, I do most of my coding in Kile (KDE Based LaTex IDE) and TeXnicCenter (a windows based IDE). I searched long and hard for a multi platform LaTex IDE that would work for me, and I failed. Instead I found two damn good platform specific ones. Unfortunately, when I switch from the desktop to the laptop I have to switch my LaTex editing environments, key bindings and etc..

Other than that, both systems run almost identical set of software – Firefox, Thunderbird, Eclipse, Komodo Edit and Vim. And no, none of the Tex plugins for Eclipse really worked for me. They just didn’t work the way I wanted to. Eclipse is great for Java, but that’s about it.

In my search for the perfect IDE however, I completely ignored Emacs. I mean, that’s a text editor, right? What I need an IDE with like toolbars, code completion and the whole 9 yards. Am I correct?

You can put the pitchforks and torches down! I was wrong, naturally. Saying that Emacs is just a text editor is like calling iPhone just a phone. Sure, it is that, but it can also do all other things. No other text editor has a powerful programming framework that allows you endless customization at it’s core. Elisp can be used to make Emacs do just about anything, from editing text files, fetching your email, browsing the web to playing games (try doing M-x tetris and see what happens).

In and by itself it is a very decent LaTex editor with nice syntax highlighting. But it’s not an IDE yet. What you need is some of that elisp awesomeness that I mentioned above. Enter AUCTex – a nifty little package which will turn your Emacs into a awesome LaTex IDE and blow your mind. I could just sit here listing all of it’s features, but instead of doing that, I’ll simply show you my Emacs buffer with AUCTex:

First thing you will probably see is that with AUCTex the LaTex mode will actually use helpful visual hints in addition to just regular highlights. So section headings will actually be bigger than regular text, \textbf blocks will actually render in bolface and etc.

Second striking feature is that AUCTex lets you preview headings, formulas and image inline. Yes, it will actually compile the code, and render pretty images in the buffer. You can toggle between code and image at any time by middle mousing it or using the context menu. The only LaTex toll that does that is Lyx. But Lyx is kinda funky and I never really liked their philosophy of almost-sorta-WYSIWYG.

If you look at the menus, note the LaTex and Math ones. They are chock full of functions and key bindings for auto generating code, and auto inserting code for various characters and environments.

How do I get this big bowl of awesome, you may ask. Well, if you are running Ubuntu, you are in luck – there is actually nothing simpler:

aptitude install auctex, preview-latex

Once you restart Emacs and open a tex file you should see the AUCTex environment preloaded. To get the Math menu simply drop the following line into your .emacs file:

;; Math mode for LaTex (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)

You may also want to add the following lines if you don’t have them there already

;; mouse scrolling (mouse-wheel-mode t) ;; spellcheck in LaTex mode (add-hook `latex-mode-hook `flyspell-mode) (add-hook `tex-mode-hook `flyspell-mode) (add-hook `bibtex-mode-hook `flyspell-mode) ;; Show line-number and column-number in the mode line (line-number-mode 1) (column-number-mode 1) ;; highlight current line (global-hl-line-mode 1)

These don’t really have anything to do with AUCTex but they do make working with Emacs easier. Naturally don’t forget your CUA Mode settings if you need them.

If you are on Windows, then installing AUCTex might be a bit more difficult. Actually, to tell you the truth, it is a major pain in the ass. This is why it will get it’s own post that will appear here another day. Needless to say, it is doable, and it works on Windows but you might actually need to *gasp* compile something.

Anyway, I think I’m sold. I think Emacs will become my main LaTex IDE from now on. At least it’ll be consistent. :)

[tags]emacs, auctex, latex, tex, cua mode, ide, vim, editor, text editor[/tags]