FStarLang/fstar-mode.el@3bbfe93abd -> FStarLang/fstar-mode.el@537c31983f Fuco1/sphinx-mode@77ca51adf9 -> Fuco1/sphinx-mode@038a9195b0 OCamlPro/ocp-indent@f38578c25d -> OCamlPro/ocp-indent@1213857683 ProofGeneral/PG@af2e7b9a4e -> ProofGeneral/PG@fbb2878e49 ShuguangSun/ess-view-data@dd6a85935b -> ShuguangSun/ess-view-data@5ec1c7206f abicky/nodejs-repl.el@130d49b073 -> abicky/nodejs-repl.el@c232b4964b agda/agda@900bdaa335 -> agda/agda@5e31b2534d ananthakumaran/exunit.el@8de56e3fd5 -> ananthakumaran/exunit.el@9a7cfc3d78 bricka/emacs-kotlin-ts-mode@a25d56ceca -> bricka/emacs-kotlin-ts-mode@051c9ef534 clojure-emacs/cider@12f10a6f4b -> clojure-emacs/cider@389833f85a clojure-emacs/clj-refactor.el@dc1bbc8cda -> clojure-emacs/clj-refactor.el@362cb46bf8 clojure-emacs/clojure-mode@b766094aea -> clojure-emacs/clojure-mode@28dc02114a clojure-emacs/clojure-ts-mode@da56a6938f -> clojure-emacs/clojure-ts-mode@32490c80fa cpitclaudel/company-coq@5affe7a96a -> cpitclaudel/company-coq@78ed04ce39 diml/utop@3322adaa52 -> diml/utop@33201e6076 emacs-ess/ESS@d19efaae12 -> emacs-ess/ESS@8369d574f1 emacs-geiser/chicken@5f2c1bb446 -> emacs-geiser/chicken@8342bad8ce emacs-geiser/geiser@c1c27072a4 -> emacs-geiser/geiser@c8b862f00e emacs-lsp/emacs-ccls@5636ee6c50 -> emacs-lsp/emacs-ccls@34251b799e emacs-lsp/lsp-haskell@081d5115ce -> emacs-lsp/lsp-haskell@aa9b5bce35 emacs-lsp/lsp-java@21c89243ad -> emacs-lsp/lsp-java@9230a0007c emacs-lsp/lsp-pyright@73377169be -> emacs-lsp/lsp-pyright@0e59c00c7f emacs-lsp/lsp-sourcekit@1fb230109e -> emacs-lsp/lsp-sourcekit@30918cd1ae emacs-php/php-mode@462b62248f -> emacs-php/php-mode@40b8abed30 emacs-rustic/rustic@29f912c750 -> emacs-rustic/rustic@2b4ac5de3b emacs-straight/auctex@f58a2b972b -> emacs-straight/auctex@a2809e4d70 emacs-straight/org-mode@4e6d38d1a6 -> emacs-straight/org-mode@8b15a0d0b4 emacsorphanage/dart-mode@f82ff05230 -> emacsorphanage/dart-mode@edb45cb709 emacsorphanage/htmlize@8e3841c837 -> emacsorphanage/htmlize@c9a8196a59 emacsorphanage/restclient@bba663590f -> emacsorphanage/restclient@ad97f666b6 erlang/otp@b9d3ec017d -> erlang/otp@2a970bf725 fosskers/sly-overlay@d629450590 -> fosskers/sly-overlay@345b554ad0 fsharp/emacs-fsharp-mode@8d08f05788 -> fsharp/emacs-fsharp-mode@91abae13e8 fuxialexander/org-pdftools@5613b7ae56 -> fuxialexander/org-pdftools@2b3357828a fxbois/web-mode@be2d59c8fa -> fxbois/web-mode@1eb0abb1a9 godotengine/emacs-gdscript-mode@5136be407a -> godotengine/emacs-gdscript-mode@a0d25b46d8 greghendershott/racket-mode@c4cc7c160b -> greghendershott/racket-mode@172b7d4c5a hakimel/reveal.js@eb95b14531 -> hakimel/reveal.js@4cf184924d haskell/haskell-mode@e9c3567393 -> haskell/haskell-mode@e5d32021ea idris-hackers/idris-mode@ccf32ed0b5 -> idris-hackers/idris-mode@da5c22f436 jart/disaster@8b44591322 -> jart/disaster@0299c129d4 joaotavora/sly@ce17a568ef -> joaotavora/sly@63131ef965 jschaf/powershell.el@9efa1b4d0a -> jschaf/powershell.el@99e0e73082 jwiegley/nix-update-el@77022ccd91 -> jwiegley/nix-update-el@d67f4f7ba8 kaushalmodi/ox-hugo@e3365cb4e6 -> kaushalmodi/ox-hugo@a907ea9514 ledger/ledger-mode@d9b6648201 -> ledger/ledger-mode@e9bb645e8f magit/orgit-forge@050590fbc7 -> magit/orgit-forge@5a0dbe2601 magit/orgit@224350397d -> magit/orgit@8493c24808 minad/org-modern@1723689710 -> minad/org-modern@d5e1f5af65 necaris/conda.el@05de0c8f0c -> necaris/conda.el@8a1a934a2d nex3/haml-mode@a64d58df8f -> nex3/haml-mode@3bb4a96535 nix-community/nix-ts-mode@62ce3a2dc3 -> nix-community/nix-ts-mode@e68ef36312 ocaml/dune@422986440e -> ocaml/dune@28b7e8f3b2 ocaml/merlin@e4c66857ad -> ocaml/merlin@8b88b89ee7 oer/org-re-reveal@da7e1feba9 -> oer/org-re-reveal@4eb0f71474 org-noter/org-noter@a28f61238a -> org-noter/org-noter@aafa08a49c org-roam/org-roam@c172951345 -> org-roam/org-roam@89dfaef38b polymode/polymode@74ba75d4bc -> polymode/polymode@25ba9463a4 pope/ob-go@2067ed55f4 -> pope/ob-go@c6c7c811fb ppareit/graphviz-dot-mode@8ff793b137 -> ppareit/graphviz-dot-mode@2c7ba85d19 purescript-emacs/psc-ide-emacs@4e614df553 -> purescript-emacs/psc-ide-emacs@c64b05d901 purescript-emacs/purescript-mode@8c4736759a -> purescript-emacs/purescript-mode@61732e23bd pythonic-emacs/pyenv-mode@ba1a8c7bd7 -> pythonic-emacs/pyenv-mode@364bddb8f0 rust-lang/rust-mode@25d91cff28 -> rust-lang/rust-mode@9915b3a585 salmanebah/opencl-mode@204d5d9e0f -> salmanebah/opencl-mode@6464abf969 shoshin/minitest-emacs@5999c45c04 -> shoshin/minitest-emacs@d278e94fb1 skuro/plantuml-mode@ea45a13707 -> skuro/plantuml-mode@348e83ff19 slim-template/emacs-slim@8c92169817 -> slim-template/emacs-slim@0b1b380329 sogaiu/janet-ts-mode@ac684edf57 -> sogaiu/janet-ts-mode@0e4d04d648 swift-emacs/swift-mode@e30b9d46e0 -> swift-emacs/swift-mode@fc7df7bd90 szermatt/emacs-bash-completion@d0637428fd -> szermatt/emacs-bash-completion@762f28fefb technomancy/fennel-mode@df8e83d6e2 -> technomancy/fennel-mode@0d638f6133 tpapp/julia-repl@317d560218 -> tpapp/julia-repl@681efc14a7 wbolster/emacs-python-pytest@25d9801562 -> wbolster/emacs-python-pytest@ed2ecee09d ziglang/zig-mode@c46d024733 -> ziglang/zig-mode@dab3c37c2d zweifisch/ob-elixir@8990a8178b -> zweifisch/ob-elixir@8e5d2f3c7a
:lang latex
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 AUCTeX-selected viewer
- Bibtex editor
- Autocompletion using doom-package:company-mode
- Compile your
.tex
code only once using LatexMk
Maintainers
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.
- +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:cdlatex if doom-module:+cdlatex
- doom-package:evil-tex if doom-module::editor evil +everywhere
- doom-package:auctex-cont-latexmk
-
if doom-module::completion company
TODO Hacks
This module's hacks haven't been documented yet. Document them?
TODO Changelog
This module does not have a changelog yet.
Installation
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.
Ghostscript <= 9.27 is 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.
Ubuntu
apt-get install texlive
Arch Linux
pacman -S texlive-basic texlive-latexrecommended texlive-plaingeneric
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.
NixOS
environment.systemPackages = [ pkgs.texlive.combined.scheme-medium ];
Formatter
Formatting is handled using the doom-module::editor format module via latexindent.
TODO Usage
This module has no usage documentation yet. Write some?
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):
;; in $DOOMDIR/config.el
(setq reftex-default-bibliography "/your/bib/file.bib")
Changing the PDFs viewer
This module provides integration for four supported pdf viewers. They are
- 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:
;; in $DOOMDIR/config.el
(setq +latex-viewers '(zathura))
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 TAB key for cdlatex, which takes care of snippet-related stuff:
;; in $DOOMDIR/config.el
(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.
Troubleshooting
There are no known problems with this module. Report one?
Frequently asked questions
This module has no FAQs yet. Ask one?
Appendix
Commands
+latex/live-preview
: Pop up the viewer of choice and display the document compiled live with each save.