From f5fb820f0ef2f02c143b7fc260f464851a43e8a1 Mon Sep 17 00:00:00 2001 From: Gerardo Marx Date: Fri, 11 Sep 2020 23:29:30 -0500 Subject: [PATCH] auctex & pdftools on ubuntu --- .gitignore | 4 ++ Readme.md | 15 +++++ config/.emacs | 114 +++++++++++++++++------------------ docker/emacs/Dockerfile | 4 +- examples/latex-test/main.aux | 1 - examples/latex-test/main.log | 69 --------------------- examples/latex-test/main.pdf | Bin 19184 -> 0 bytes examples/latex-test/main.tex | 17 ++++++ scientific-emacs | 11 +++- 9 files changed, 104 insertions(+), 131 deletions(-) delete mode 100644 examples/latex-test/main.aux delete mode 100644 examples/latex-test/main.log delete mode 100644 examples/latex-test/main.pdf diff --git a/.gitignore b/.gitignore index 72f8980..77a77ed 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,7 @@ config/.cache config/.zshrc.pre-oh-my-zsh .DS_Store dump.rdb +*.aux +*.log +*.synctex.gz +*.blg diff --git a/Readme.md b/Readme.md index d88d763..fa82b03 100644 --- a/Readme.md +++ b/Readme.md @@ -1,5 +1,20 @@ # Readme +Write here about container + +# How to install +1. Clone this repository: +`git clone xxxx` +2. Build the container using: +`docker build -t gmarxcc/scientific-emacs:0.1 docker/emacs/` +3. Run the container to test: +`docker run --rm -it gmarxcc/scientific-emacs:0.1` +4. Run an Ubuntu command like `ls` + +Done, you are doing great! + +# Executing emacs + To get the ip address ''' open -a xquartz diff --git a/config/.emacs b/config/.emacs index 42f20b0..24da3d1 100644 --- a/config/.emacs +++ b/config/.emacs @@ -93,45 +93,43 @@ :bind ("C-=" . er/expand-region) ("C--" . er/contract-region)) + ;; latex -(use-package tex - :defer t - :ensure auctex - :init - (progn - (setq-default TeX-master nil) ; Query for master file. - (setq TeX-auto-save t) ; Enable parse on save. - (setq TeX-save-query nil) - ;;(setq TeX-command-force "LaTex") - (setq latex-run-command "pdflatex") - (setq TeX-parse-self t) ; Enable parse on load. - (setenv "PATH" (concat (getenv "PATH") ":/Library/TeX/texbin/")) - (setq exec-path (append exec-path '("/Library/TeX/texbin/"))) - ;; pdf-tools configuration - (setq TeX-PDF-mode t) - (add-hook 'TeX-after-compilation-finished-functions - #'TeX-revert-document-buffer) - (setq TeX-view-program-selection '((output-pdf "PDF Tools")) - TeX-source-correlate-start-server t) - (setq pdf-info-epdfinfo-program "/usr/local/bin/epdfinfo") - (add-to-list 'auto-mode-alist '("\\.pdf\\'" . pdf-view-mode)) - (add-hook 'pdf-view-mode-hook - (lambda () (pdf-tools-enable-minor-modes))) - (setq LaTeX-includegraphics-read-file 'LaTeX-includegraphics-read-file-relative) - ) - :config - (add-hook 'LaTeX-mode-hook - (lambda () - ;;(rainbow-delimiters-mode) - ;;(company-mode) - ;;(smartparens-mode) - (turn-on-reftex) - (setq reftex-plug-into-AUCTeX t) - (reftex-isearch-minor-mode) - (setq TeX-PDF-mode t) - (setq TeX-source-correlate-method 'synctex) - (setq TeX-source-correlate-start-server t))) - ) +;; (use-package tex +;; :defer t +;; :ensure auctex +;; :init +;; (progn +;; (setq-default TeX-master nil) ; Query for master file. +;; (setq TeX-auto-save t) ; Enable parse on save. +;; (setq TeX-save-query nil) +;; (setq LaTeX-includegraphics-read-file 'LaTeX-includegraphics-read-file-relative) +;; (custom-set-variables '(LaTeX-command "latex -synctex=1")) +;; ;;(setq TeX-command-force "LaTex") +;; ;;(setq latex-run-command "pdflatex") +;; (setq TeX-parse-self t) ; Enable parse on load. +;; (setenv "PATH" (concat (getenv "PATH") ":/Library/TeX/texbin/")) +;; (setq exec-path (append exec-path '("/Library/TeX/texbin/"))) +;; ;; pdf-tools configuration +;; (setq TeX-PDF-mode t) +;; (add-hook 'TeX-after-compilation-finished-functions +;; #'TeX-revert-document-buffer) +;; (setq TeX-view-program-selection '((output-pdf "PDF Tools")) +;; TeX-source-correlate-start-server t) +;; (setq pdf-info-epdfinfo-program "/usr/bin/epdfinfo") +;; (add-to-list 'auto-mode-alist '("\\.pdf\\'" . pdf-view-mode)) +;; (add-hook 'pdf-view-mode-hook +;; (lambda () (pdf-tools-enable-minor-modes))) +;; ) + ;; :config + ;; (add-hook 'LaTeX-mode-hook + ;; (lambda () + ;; (company-mode) + ;; (turn-on-reftex) + ;; (setq reftex-plug-into-AUCTeX t) + ;; (reftex-isearch-minor-mode)) + ;; ) + ;; pdf-tools (use-package pdf-tools :ensure t @@ -139,25 +137,9 @@ :magic ("%PDF" . pdf-view-mode) :config (custom-set-variables - '(pdf-tools-handle-upgrades nil)) - ) - - - -;; -+-+-+-+-+-+-+ -;; startup config -(setq inhibit-startup-message t) ;;inhibit startup -(show-paren-mode 1) ;; parenthesis match -(tool-bar-mode -1) ;; no tool-bar -(menu-bar-mode -1) ;; menu-bar disable -(global-hl-line-mode +1) ;; highlith current line -(delete-selection-mode +1) ;; deletes selected text and replace it -(scroll-bar-mode -1) -;; Set default font: -(add-to-list 'default-frame-alist - '(font . "DejaVu Sans Mono-16")) -(fset 'yes-or-no-p 'y-or-n-p) ;; Ask y/n instead of yes/no -(add-hook 'prog-mode-hook 'display-line-numbers-mode) ;; display line number when programming + '(pdf-tools-handle-upgrades nil)) + ) +;; ---------- ;; rextex (use-package reftex :ensure t @@ -178,6 +160,24 @@ +;; -+-+-+-+-+-+-+ +;; startup config +(setq inhibit-startup-message t) ;;inhibit startup +(show-paren-mode 1) ;; parenthesis match +(tool-bar-mode -1) ;; no tool-bar +(menu-bar-mode -1) ;; menu-bar disable +(global-hl-line-mode +1) ;; highlith current line +(delete-selection-mode +1) ;; deletes selected text and replace it +(scroll-bar-mode -1) +;; Set default font: +(add-to-list 'default-frame-alist + '(font . "DejaVu Sans Mono-16")) +(fset 'yes-or-no-p 'y-or-n-p) ;; Ask y/n instead of yes/no +(add-hook 'prog-mode-hook 'display-line-numbers-mode) ;; display line number when programming +;; -+-+-+-+-+-+-+- + + + (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. diff --git a/docker/emacs/Dockerfile b/docker/emacs/Dockerfile index 9fad517..be0f51d 100644 --- a/docker/emacs/Dockerfile +++ b/docker/emacs/Dockerfile @@ -12,7 +12,7 @@ RUN apt-get update \ # installing texlive base with pdflatex utility: RUN apt-get -y install \ texlive-latex-base \ -texlive-latex-recommended \ +texlive-latex-extra \ texlive-pictures \ texlive-science \ texlive-bibtex-extra @@ -25,6 +25,8 @@ curl \ aspell \ vim \ python3 \ +elpa-pdf-tools \ +auctex \ zsh # oh-my-zshell diff --git a/examples/latex-test/main.aux b/examples/latex-test/main.aux deleted file mode 100644 index f23e546..0000000 --- a/examples/latex-test/main.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/examples/latex-test/main.log b/examples/latex-test/main.log deleted file mode 100644 index 11cc865..0000000 --- a/examples/latex-test/main.log +++ /dev/null @@ -1,69 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.8.31) 31 AUG 2020 05:56 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**\nonstopmode\input main.tex -(./main.tex (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2019/12/20 v1.4l Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) -) -\c@part=\count167 -\c@section=\count168 -\c@subsection=\count169 -\c@subsubsection=\count170 -\c@paragraph=\count171 -\c@subparagraph=\count172 -\c@figure=\count173 -\c@table=\count174 -\abovecaptionskip=\skip47 -\belowcaptionskip=\skip48 -\bibindent=\dimen134 -) -(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def -File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode -\l__kernel_color_stack_int=\count175 -\l__pdf_internal_box=\box45 -) -(./main.aux) -\openout1 = `main.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 2. -LaTeX Font Info: ... okay on input line 2. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 2. -LaTeX Font Info: ... okay on input line 2. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 2. -LaTeX Font Info: ... okay on input line 2. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 2. -LaTeX Font Info: ... okay on input line 2. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 2. -LaTeX Font Info: ... okay on input line 2. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 2. -LaTeX Font Info: ... okay on input line 2. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 2. -LaTeX Font Info: ... okay on input line 2. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <7> on input line 3. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <5> on input line 3. - [1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./main.aux) ) -Here is how much of TeX's memory you used: - 365 strings out of 483107 - 6183 string characters out of 5964630 - 231847 words of memory out of 5000000 - 15473 multiletter control sequences out of 15000+600000 - 532338 words of font info for 24 fonts, out of 8000000 for 9000 - 59 hyphenation exceptions out of 8191 - 25i,4n,19p,158b,97s stack positions out of 5000i,500n,10000p,200000b,80000s - -Output written on main.pdf (1 page, 19184 bytes). -PDF statistics: - 16 PDF objects out of 1000 (max. 8388607) - 10 compressed objects within 1 object stream - 0 named destinations out of 1000 (max. 500000) - 1 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/examples/latex-test/main.pdf b/examples/latex-test/main.pdf deleted file mode 100644 index 016314338d0e9e5266ac347411b48695e4de7380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19184 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 OLjxG#