:lang latex

Writing papers in Emacs has never been so fun

1. Description

Provide a helping hand when working with LaTeX documents.

  • Sane defaults
  • Fontification of many popular commands
  • Pretty indentation of wrapped lines using the adaptive-wrap package
  • Spell checking with flycheck
  • Change PDF viewer to Okular or latex-preview-pane
  • Bibtex editor
  • Autocompletion using company-mode
  • Compile your .tex code only once using LatexMk

1.1. Maintainers

This module has no dedicated maintainers. Become a maintainer?

1.2. Module flags

+cdlatex
Enable cdlatex for fast math insertion.
+fold
Use TeX-fold (from auctex) to fold LaTeX macros to unicode, and make folding hook-based and less manual.
+latexmk
Use LatexMk instead of LaTeX to compile documents.
+lsp
Enable LSP support in LaTeX buffers. Requires :tools lsp module. Supports digestif and TexLab LSP servers.

1.4. Hacks

No hacks documented for this module.

2. Prerequisites

You will need ghostscript and a latex compiler. All this is provided by the texlive bundle, available through many OS package managers.

Ghostscript <= 9.27 is reported buggy and doesn’t work with auctex’s math previews. (You can check you ghostscript version with gs --version.) Most package managers already have newer versions, but if not you might have to build gs from source.

2.1. Ubuntu

$ apt-get install texlive

2.2. Arch Linux

$ pacman -S texlive-core

2.3. TODO macOS

$ brew install --cask basictex
# If the above doesn't work, then
$ brew install --cask mactex  # WARNING: large 4gb download!

This has not been verified.

2.4. NixOS

environment.systemPackages = [ pkgs.texlive.combined.scheme-medium ];

3. TODO Usage

This module has no usage documentation yet. Write some?

4. Configuration

4.1. Specifying the location of a bibtex file & corresponding PDFs

Reftex has a variable that allow you to specify where it should find your bibliography file(s):

(setq reftex-default-bibliography "/your/bib/file.bib")

4.2. Changing the PDFs viewer

This module provides integration for four supported pdf viewers. They are:

They are searched for in this order. See +latex-viewers to change the order, or remove tools from the search altogether. If you want to exclusively use one tool, for instance:

(setq +latex-viewers '(zathura))

If none of these tools are found, latex-preview-pane (uses DocView in Emacs) is used as a fallback. You can use this exclusively by setting +latex-viewers to nil.

4.3. Using cdlatex’s snippets despite having yasnippet

cdlatex has a snippet insertion capability which is disabled in favor of yasnippet when using :editor snippets. If you still wanna use it, simply rebind the TAB key for cdlatex, which takes care of snippet-related stuff:

(map! :map cdlatex-mode-map :i "TAB" #'cdlatex-tab)

This would favor yasnippet’s expansion and cursor movement over cdlatex’s expansion and movement, but that shouldn’t matter if you’re not using yasnippet in latex buffers.

5. Troubleshooting

There are no known problems with this module. Report one?

6. TODO Appendix

This module has no appendix yet. Write one?