# -*- mode: doom-docs-org -*- #+title: :lang latex #+subtitle: Writing papers in Emacs has never been so fun #+created: January 16, 2017 #+since: 1.3 * Description :unfold: Provide a helping hand when working with LaTeX documents. - Sane defaults - Fontification of many popular commands - Pretty indentation of wrapped lines using the [[doom-package:][adaptive-wrap]] package - Spell checking with [[doom-package:][flycheck]] - Change PDF viewer to Okular or [[doom-package:][latex-preview-pane]] - Bibtex editor - Autocompletion using [[doom-package:][company-mode]] - Compile your =.tex= code only once using LatexMk ** Maintainers - [[doom-user:][@tecosaur]] - [[doom-user:][@ymarco]] [[doom-contrib-maintainer:][Become a maintainer?]] ** Module flags - +cdlatex :: Enable [[doom-package:][cdlatex]] for fast math insertion. - +fold :: Use TeX-fold (from [[doom-package:][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 [[doom-module:][:tools lsp]] and a langserver (supports digestif and TexLab). ** Packages - [[doom-package:][adaptive-wrap]] - [[doom-package:][auctex]] - [[doom-package:][auctex-latexmk]] if [[doom-module:][+latexmk]] - [[doom-package:][cdlatex]] if [[doom-module:][+cdlatex]] - [[doom-package:][evil-tex]] if [[doom-module:][:editor evil +everywhere]] - [[doom-package:][latex-preview-pane]] - if [[doom-module:][:completion company]] - [[doom-package:][company-auctex]] - [[doom-package:][company-math]] - [[doom-package:][company-reftex]] ** TODO Hacks #+begin_quote 🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]] #+end_quote ** TODO Changelog # This section will be machine generated. Don't edit it by hand. /This module does not have a changelog yet./ * Installation [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]] This module requires ghostscript and a latex compiler. These are provided by the =texlive= bundle, available through many OS package managers. #+begin_quote 🚧 Ghostscript <= 9.27 is [[/auctex/manual/preview-latex/No-images-are-displayed-with-gs-9_002e27-and-earlier.html][reportedly 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. #+end_quote ** Ubuntu #+begin_src sh apt-get install texlive #+end_src ** Arch Linux #+begin_src sh pacman -S texlive-core #+end_src ** TODO macOS #+begin_src sh brew install --cask basictex # If the above doesn't work, then brew install --cask mactex # WARNING: large 4gb download! #+end_src #+begin_quote 🔨 This has not been verified. #+end_quote ** NixOS #+begin_src nix environment.systemPackages = [ pkgs.texlive.combined.scheme-medium ]; #+end_src * TODO Usage #+begin_quote 🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]] #+end_quote * Configuration ** 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): #+begin_src emacs-lisp ;; in $DOOMDIR/config.el (setq reftex-default-bibliography "/your/bib/file.bib") #+end_src ** Changing the PDFs viewer This module provides integration for four supported pdf viewers. They are + [[https://skim-app.sourceforge.io/][Skim.app]] (MacOS only) + Evince + Sumatra PDF + Zathura + Okular + pdf-tools (requires [[doom-module:][:tools pdf]] module) 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: #+begin_src emacs-lisp ;; in $DOOMDIR/config.el (setq +latex-viewers '(zathura)) #+end_src 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~. ** Using cdlatex's snippets despite having yasnippet [[doom-package:][cdlatex]] has a snippet insertion capability which is disabled in favor of [[doom-package:][yasnippet]] when using [[doom-module:][:editor snippets]]. If you still wanna use it, simply rebind the [[kbd:][TAB]] key for cdlatex, which takes care of snippet-related stuff: #+begin_src emacs-lisp ;; in $DOOMDIR/config.el (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. * Troubleshooting /There are no known problems with this module./ [[doom-report:][Report one?]] * Frequently asked questions /This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]] * TODO Appendix #+begin_quote 🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]] #+end_quote