2019-01-05 17:45:42 -05:00
#+TITLE : lang/latex
#+DATE : January 16, 2017
#+SINCE : v1.3
#+STARTUP : inlineimages
* Table of Contents :TOC_3:noexport:
2019-09-28 18:28:48 +02:00
- [[#description ][Description ]]
- [[#module-flags ][Module Flags ]]
- [[#plugins ][Plugins ]]
2019-11-21 14:45:18 -05:00
- [[#prerequisites ][Prerequisites ]]
2020-04-07 15:00:38 -04:00
- [[#ubuntu ][Ubuntu ]]
- [[#arch-linux ][Arch Linux ]]
- [[#macos ][macOS ]]
- [[#nixos ][NixOS ]]
2019-09-28 18:28:48 +02:00
- [[#features ][Features ]]
- [[#customization ][Customization ]]
- [[#specifying-the-location-of-a-bibtex-file--corresponding-pdfs ][Specifying the location of a bibtex file & corresponding PDFs ]]
- [[#changing-the-pdfs-viewer ][Changing the PDFs viewer ]]
2020-02-07 12:36:07 +02:00
- [[#using-cdlatexs-snippets-despite-having-yasnippet ][Using cdlatex's snippets despite having yasnippet ]]
2019-01-05 17:45:42 -05:00
* Description
2018-01-01 20:48:23 +01:00
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
2019-01-05 17:45:42 -05:00
+ Spell checking with ~flycheck~
2018-01-01 20:48:23 +01:00
+ Change PDF viewer to Okular or ~latex-preview-pane~
+ Bibtex editor
+ Autocompletion using ~company-mode~
+ Compile your .tex code only once using LatexMk
2019-01-05 17:45:42 -05:00
** Module Flags
2020-02-07 12:36:07 +02:00
+ =+latexmk= Use LatexMk instead of LaTeX to compile documents.
+ =+cdlatex= Enable [[https://github.com/cdominik/cdlatex ][cdlatex ]] for fast math insertion.
2020-04-26 10:33:10 +04:30
+ =+lsp= Start LSP automatically in `tex-mode-hook`. This requires the =:tools
lsp= module. Supported servers are `digestif` and `TexLab`.
2020-04-07 15:48:49 +03:00
+ =+fold= Use TeX-fold (from auctex) to fold LaTeX macros to unicode, and make
folding hook-based and less manual.
2018-01-01 20:48:23 +01:00
2019-01-05 17:45:42 -05:00
** Plugins
+ [[http://www.gnu.org/software/auctex/ ][auctex ]]
+ [[http://elpa.gnu.org/packages/adaptive-wrap.html ][adaptive-wrap ]]
2020-08-08 17:44:00 +03:00
+ [[https://github.com/iyefrat/evil-tex ][evil-tex ]] (when =:editor evil +everywhere= )
2019-01-05 17:45:42 -05:00
+ [[https://github.com/jsinglet/latex-preview-pane ][latex-preview-pane ]]
+ [[https://github.com/tom-tan/auctex-latexmk ][auctex-latexmk ]]*
+ [[https://github.com/alexeyr/company-auctex ][company-auctex ]]*
+ [[https://github.com/TheBB/company-reftex ][company-reftex ]]*
+ [[https://github.com/vspinu/company-math ][company-math ]]*
2020-02-07 12:36:07 +02:00
+ [[https://github.com/cdominik/cdlatex ][cdlatex ]] (=+cdlatex= )
2018-01-01 20:48:23 +01:00
2020-04-07 15:00:38 -04:00
* Prerequisites
2020-04-10 16:06:51 +03:00
You will need ghostscript and a latex compiler. All this is provided by
the =texlive= bundle, available through many OS package managers.
2020-04-07 15:00:38 -04:00
2020-04-10 16:06:51 +03:00
Ghostscript <= 9.27 is [[https://www.gnu.org/software/auctex/manual/preview-latex/No-images-are-displayed-with-gs-9_002e27-and-earlier.html ][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.
2020-04-07 15:00:38 -04:00
** Ubuntu
#+BEGIN_SRC sh
apt-get install texlive
#+END_SRC
** Arch Linux
#+BEGIN_SRC sh
2020-10-13 01:11:42 -07:00
pacman -S texlive-core
2020-04-07 15:00:38 -04:00
#+END_SRC
** TODO macOS
#+BEGIN_SRC sh
2021-04-21 21:09:56 +03:00
brew install --cask basictex
2020-04-07 15:00:38 -04:00
# If the above doesn't work, then
2021-04-21 21:09:56 +03:00
brew install --cask mactex # WARNING: large 4gb download!
2020-04-07 15:00:38 -04:00
#+END_SRC
#+begin_quote
This has not been verified.
#+end_quote
** NixOS
#+BEGIN_SRC nix
environment.systemPackages = [ pkgs.texlive.combined.scheme-medium ];
#+END_SRC
2019-11-21 14:45:18 -05:00
2019-01-05 17:45:42 -05:00
* TODO Features
2018-04-11 13:02:58 +02:00
2019-01-05 17:45:42 -05:00
* Customization
** Specifying the location of a bibtex file & corresponding PDFs
2020-04-07 13:16:48 -04:00
Reftex has a variable that allow you to
specify where it should find your bibliography file(s):
2019-01-05 17:45:42 -05:00
#+BEGIN_SRC emacs-lisp
(setq reftex-default-bibliography "/your/bib/file.bib")
2018-04-11 13:02:58 +02:00
#+END_SRC
2018-01-01 20:48:23 +01:00
2019-01-05 17:45:42 -05:00
** Changing the PDFs viewer
This module provides integration for four supported pdf viewers. They are
2018-01-01 20:48:23 +01:00
2019-01-05 17:45:42 -05:00
+ [[https://skim-app.sourceforge.io/ ][Skim.app ]] (MacOS only)
2019-09-28 18:28:48 +02:00
+ Evince
+ Sumatra PDF
2019-01-05 17:45:42 -05:00
+ Zathura
2019-09-28 18:28:48 +02:00
+ Okular
2019-01-05 17:45:42 -05:00
+ pdf-tools (requires =:tools pdf= module)
2018-04-11 13:02:58 +02:00
2019-01-05 17:45:42 -05:00
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:
2018-04-11 13:02:58 +02:00
2019-01-05 17:45:42 -05:00
#+BEGIN_SRC emacs-lisp
(setq +latex-viewers '(zathura))
2018-04-11 13:02:58 +02:00
#+END_SRC
2019-01-05 17:45:42 -05:00
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~ .
2020-02-07 12:36:07 +02:00
** 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:
#+BEGIN_SRC emacs-lisp
(map! :map cdlatex-mode-map
:i "TAB" #'cdlatex-tab)
#+END_SRC
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.