Merge pull request #525 from UndeadKernel/fix_latex_and_pdftools

Better PDF Tools and LaTeX interaction
This commit is contained in:
Henrik Lissner 2018-04-17 21:21:36 -04:00 committed by GitHub
commit c3c6b5b4de
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 84 additions and 41 deletions

View file

@ -8,6 +8,8 @@
("addbibresource" "[{") ("addbibresource" "[{")
;; Standard commands ;; Standard commands
("cite" "[{") ("cite" "[{")
("citep" "[{")
("citet" "[{")
("Cite" "[{") ("Cite" "[{")
("parencite" "[{") ("parencite" "[{")
("Parencite" "[{") ("Parencite" "[{")

View file

@ -26,28 +26,54 @@ Set these variables in your private configuration with:
#+END_SRC #+END_SRC
If the variables are not set, they are ignored. If the variables are not set, they are ignored.
** Choose View Program
You have four options to choose from for the viewer of your PDF rendered files.
*** Okular
Use Okular as default PDF viewer.
Activate with the flag '+okular' of the latex module in your private init.el.
#+BEGIN_SRC emacs_lisp
(latex +okular)
#+END_SRC
*** Skim
For Mac users. Use Skim to preview your PDFs.
Activate with the flag '+skim' of the latex module in your private init.el.
#+BEGIN_SRC emacs_lisp
(latex +skim)
#+END_SRC
*** PDF Tools
Use the PDF Tools package to preview your PDFs. Requires the tools module ~pdf~ enabled in your configuration.
#+BEGIN_SRC emacs_lisp
(:tools pdf)
#+END_SRC
Activate with the flag '+pdf-tools' of the latex module in your private init.el.
#+BEGIN_SRC emacs_lisp
(latex +pdf-tools=)
#+END_SRC
*** Preview Pane
You may wish to use the old school package ~latex-preview-pane~ instead of the
other alternatives. ~latex-preview-pane~ uses a ~DocView~ instead.
Activate with the flag '+preview-pane' of the latex module in your private init.el.
#+BEGIN_SRC emacs_lisp
(latex +preview-pane)
#+END_SRC
** LatexMk ** LatexMk
Use LatexMk instead of normal LaTeX to compile documents. LatexMk only needs to run once to get all references, bibliography and other things right. Use LatexMk instead of normal LaTeX to compile documents. LatexMk only needs to
run once to get all references, bibliography and other things right.
Activate with the flag '+latexmk' of the latex module in init.el. Activate with the flag '+latexmk' of the latex module in init.el.
#+BEGIN_SRC emacs_lisp #+BEGIN_SRC emacs_lisp
(latex +latexmk) (latex +latexmk)
#+END_SRC #+END_SRC
** Okular You can enable both a custom view program and LatexMk with a call such as:
Use Okular as default PDF viewer.
Activate with the flag '+okular' of the latex module in init.el.
#+BEGIN_SRC emacs_lisp #+BEGIN_SRC emacs_lisp
(latex +okular) (latex +latexmk +okular)
#+END_SRC
** Preivew-Pane
Instead of using an external program to display rendered .tex files, use an emacs window to display the rendered file.
This flag is incompatible with the ~+okular~ flag.
Activate with the flag '+preview-pane' of the latex module in init.el.
#+BEGIN_SRC emacs_lisp
(latex +preview-pane)
#+END_SRC #+END_SRC

View file

@ -103,21 +103,31 @@
LaTeX-indent-environment-list)))) LaTeX-indent-environment-list))))
(after! latex (after! latex
;; Use Okular is the user says so. ;; Use Okular if the user says so.
(when (featurep! +okular) (when (featurep! +okular)
;; Configure Okular as viewer. Including a bug fix ;; Configure Okular as viewer. Including a bug fix
;; (https://bugs.kde.org/show_bug.cgi?id=373855) ;; (https://bugs.kde.org/show_bug.cgi?id=373855)
(add-to-list 'TeX-view-program-list (add-to-list 'TeX-view-program-list
'("Okular" ("okular --unique file:%o" (mode-io-correlate "#src:%n%a")))) '("Okular" ("okular --unique file:%o" (mode-io-correlate "#src:%n%a"))))
(add-to-list 'TeX-view-program-selection (add-to-list 'TeX-view-program-selection
'(output-pdf "Okular")))) '(output-pdf "Okular")))
(after! latex ;; Or Skim
(when (featurep! +skim) (when (featurep! +skim)
(add-to-list 'TeX-view-program-list (add-to-list 'TeX-view-program-list
'("Skim" "/Applications/Skim.app/Contents/SharedSupport/displayline -b -g %n %o %b")) '("Skim" "/Applications/Skim.app/Contents/SharedSupport/displayline -b -g %n %o %b"))
(add-to-list 'TeX-view-program-selection (add-to-list 'TeX-view-program-selection
'(output-pdf "Skim")))) '(output-pdf "Skim")))
;; Or PDF-tools, but only if the module is also loaded
(when (and (featurep! :tools pdf) (featurep! +pdf-tools))
(add-to-list 'TeX-view-program-list
'("PDF Tools" ("TeX-pdf-tools-sync-view")))
(add-to-list 'TeX-view-program-selection
'(output-pdf "PDF Tools"))
;; Enable auto reverting the PDF document with PDF Tools
(add-hook 'TeX-after-compilation-finished-functions #'TeX-revert-document-buffer)))
(def-package! preview (def-package! preview
@ -136,6 +146,8 @@
reftex-toc-split-windows-fraction 0.3) reftex-toc-split-windows-fraction 0.3)
(unless (string-empty-p +latex-bibtex-file) (unless (string-empty-p +latex-bibtex-file)
(setq reftex-default-bibliography (list (expand-file-name +latex-bibtex-file)))) (setq reftex-default-bibliography (list (expand-file-name +latex-bibtex-file))))
(add-hook! (latex-mode LaTeX-mode) #'turn-on-reftex)
:config
;; Get ReTeX working with biblatex ;; Get ReTeX working with biblatex
;; http://tex.stackexchange.com/questions/31966/setting-up-reftex-with-biblatex-citation-commands/31992#31992 ;; http://tex.stackexchange.com/questions/31966/setting-up-reftex-with-biblatex-citation-commands/31992#31992
(setq reftex-cite-format (setq reftex-cite-format
@ -146,8 +158,6 @@
(?f . "\\footcite[]{%l}") (?f . "\\footcite[]{%l}")
(?n . "\\nocite{%l}") (?n . "\\nocite{%l}")
(?b . "\\blockcquote[]{%l}{}"))) (?b . "\\blockcquote[]{%l}{}")))
(add-hook! (latex-mode LaTeX-mode) #'turn-on-reftex)
:config
(map! :map reftex-mode-map (map! :map reftex-mode-map
:localleader :n ";" 'reftex-toc) :localleader :n ";" 'reftex-toc)
(add-hook! 'reftex-toc-mode-hook (add-hook! 'reftex-toc-mode-hook

View file

@ -0,0 +1,10 @@
;;; tools/pdf/+modeline.el -*- lexical-binding: t; -*-
(def-modeline-segment! +pdf-tools-pages
"Current and total page indicator for PDF documents."
(format " P %d/%d" (pdf-view-current-page) (pdf-cache-number-of-pages)))
(def-modeline! pdf-tools-modeline
(bar matches " " buffer-info +pdf-tools-pages)
(major-mode vcs))

View file

@ -9,23 +9,18 @@
(map! :map pdf-view-mode-map "q" #'kill-this-buffer) (map! :map pdf-view-mode-map "q" #'kill-this-buffer)
;; Fit pages to screen by default
(setq-default pdf-view-display-size 'fit-page) (setq-default pdf-view-display-size 'fit-page)
;; turn off cua so copy works ;; Turn off cua so copy works
(add-hook! 'pdf-view-mode-hook (cua-mode 0))) (add-hook! 'pdf-view-mode-hook (cua-mode 0))
;; Custom modeline that removes useless info and adds page numbers
(when (featurep! :ui doom-modeline)
(when (featurep! :lang latex) (load! +modeline)
(after! latex (add-hook! pdf-tools-enabled (doom-set-modeline 'pdf-tools-modeline)))
;; add to the program list ;; Handle PDF-tools related popups better
(add-to-list 'TeX-view-program-selection (set! :popup "^\\*Outline*" '((side . right) (size . 40)) '((select)))
'(output-pdf "PDF Tools")) ;; TODO: Add additional important windows that should be handled differently
(add-to-list 'TeX-view-program-list ;; TODO: These two next rules don't work (they should), investigate
'("PDF Tools" ("TeX-pdf-tools-sync-view"))) ;; (set! :popup "\\*Contents\\*" '((side . right) (size . 40)) nil)
;; (set! :popup "* annots\\*$" '((side . left) (size . 40)) '((select)))
;; enable document revert )
(add-hook 'TeX-after-compilation-finished-functions
#'TeX-revert-document-buffer)
;; correlated mode
(setq TeX-source-correlate-start-server t
TeX-source-correlate-mode t)))