#+title: Aner's Emacs Editor Configuration #+property: header-args :results silent * Base dev ** Require #+begin_src emacs-lisp (require 'azos-emacs-base) #+end_src * Editor modes ** Pandoc Pandoc mode lets us export different formats to PDF. Added for use with markdown. Binding to startup is 'C-c /' #+begin_src emacs-lisp (use-package pandoc-mode :hook (markdown-mode . pandoc-mode)) #+end_src ** Graphviz #+begin_src emacs-lisp (use-package graphviz-dot) #+end_src ** Markdown Based on [[https://www.reddit.com/r/emacs/comments/u5owr4/how_to_enable_variablepitchmode_for_markdownmode/][this]] post detailing variable pitch. We default to github-flavored markdown and show it as variable pitch. #+begin_src emacs-lisp (use-package markdown-mode :mode (("\\.md$" . gfm-mode) ("\\.mkd$" . gfm-mode)) :hook (gfm-mode . variable-pitch-mode) :diminish markdown-live-preview-mode :config (when (bound-and-true-p lsp-mode) (variable-pitch-mode -1)) (set-face-attribute 'markdown-pre-face nil :background "LemonChiffon1" :extend t) ) #+end_src Let's add a TOC #+begin_src emacs-lisp (use-package markdown-toc) #+end_src * ORG ** PDF exporting #+begin_src emacs-lisp (setq org-latex-listings 'minted org-export-babel-evaluate nil org-latex-pdf-process (list (concat "latexmk -xelatex -shell-escape -interaction=nonstopmode " "-output-directory=%o %f ; latexmk -c %f"))) (require 'ox-latex) (unless (boundp 'org-latex-classes) (setq org-latex-classes nil)) #+end_src This code removes unecessary files after each export #+begin_src emacs-lisp (add-to-list 'org-latex-logfiles-extensions "tex") #+end_src Creating classes #+begin_src emacs-lisp (defvar anerenv/latex-class-common-header "[DEFAULT-PACKAGES] \\usepackage{polyglossia} \\usepackage{tabularx} \\usepackage[cache=false]{minted} \\usepackage{xcolor} \\usepackage{indentfirst} \\usepackage{amsfonts} \\usepackage{transparent} \\usepackage{amsmath} \\usepackage{braket} \\usepackage{dsfont} \\definecolor{codebg}{rgb}{0.95,0.95,0.95} \\setdefaultlanguage{english} \\setlength{\\parindent}{0in} \\DeclareMathOperator*{\\argmax}{arg\\,max} \\DeclareMathOperator*{\\argmin}{arg\\,min} \\newfontfamily\\hebrewfont{LiberationSans}[Script=Hebrew] \\newfontfamily\\hebrewfonttt{LiberationSans}[Script=Hebrew] \\newfontfamily\\hebrewfontsf{LiberationSans}[Script=Hebrew] \\setotherlanguage{hebrew} " "Default common class header") (setq org-latex-classes (list (list "article" (concat "\\documentclass{article} " anerenv/latex-class-common-header "\\setminted{ bgcolor=codebg, breaklines=true, mathescape, fontsize=\\scriptsize, linenos=false, } ") '("\\section{%s}" . "\\section*{%s}") '("\\subsection{%s}" . "\\subsection*{%s}") '("\\subsubsection{%s}" . "\\subsubsection*{%s}") '("\\paragraph{%s}" . "\\paragraph*{%s}") '("\\subparagraph{%s}" . "\\subparagraph*{%s}")) (list "beamer" (concat "\\documentclass{beamer} " anerenv/latex-class-common-header "\\setminted{ bgcolor={}, breaklines=true, mathescape, fontsize=\\scriptsize, linenos=false, } ") '("\\section{%s}" . "\\section*{%s}") '("\\subsection{%s}" . "\\subsection*{%s}") '("\\subsubsection{%s}" . "\\subsubsection*{%s}") '("\\paragraph{%s}" . "\\paragraph*{%s}") '("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) ) #+end_src This should render Hebrew text. #+begin_export latex \begin{hebrew} #+end_export זה אמור לעבוד #+begin_export latex \end{hebrew} #+end_export ** DOCX exporting Taken from https://www.reddit.com/r/emacs/comments/zjv1gj/org_files_to_docx/ #+begin_src emacs-lisp (defun anerenv/org/export-docx-with-pandoc () "Use Pandoc to convert .org to .docx. Comments: - The `-N' flag numbers the headers lines. - Use the `--from org' flag to have this function work on files that are in Org syntax but do not have a .org extension" (interactive) (message "exporting .org to .docx") (shell-command (concat "pandoc -N --from org " (buffer-file-name) " -o " (file-name-sans-extension (buffer-file-name)) (format-time-string "-%Y-%m-%d-%H%M%S") ".docx"))) #+end_src * Provide #+begin_src emacs-lisp (provide 'azos-emacs-editor) #+end_src