diff --git a/config.org b/config.org index 6322c2c..64c2e34 100644 --- a/config.org +++ b/config.org @@ -2228,7 +2228,10 @@ Now for a few more adjustments. ("breakaftersymbolpre" "\\,\\footnotesize\\ensuremath{{}_{\\rfloor}}"))) (setq org-latex-tables-booktabs t) - (setq org-latex-hyperref-template "\\hypersetup{ + (setq org-latex-hyperref-template " +\\providecolor{link}{HTML}{blue!70!green} +\\providecolor{cite}{HTML}{blue!40!green} +\\hypersetup{ pdfauthor={%a}, pdftitle={%t}, pdfkeywords={%k}, @@ -2238,12 +2241,149 @@ Now for a few more adjustments. breaklinks=true, colorlinks=true, linkcolor=, - urlcolor=blue!70!green, - citecolor=green!60!blue\n} + urlcolor=link, + citecolor=cite\n} \\urlstyle{same}\n") (setq org-latex-pdf-process '("latexmk -shell-escape -interaction=nonstopmode -f -pdf -output-directory=%o %f"))) #+END_SRC +***** Chameleon --- aka. match theme +Once the idea of having the look of the LaTeX document produced match the +current Emacs theme, I was enraptured. The result is the pseudo-class ~chameleon~. +#+BEGIN_SRC emacs-lisp +(defvar ox-chameleon-base-class "fancy-article" + "The base class that chameleon builds on") + +(defvar ox-chameleon--p nil + "Used to indicate whether the current export is trying to blend in. Set just before being accessed.") + +;; TODO make this less hacky. One ideas was as follows +;; (map-put (org-export-backend-filters (org-export-get-backend 'latex)) +;; :filter-latex-class 'ox-chameleon-latex-class-detector-filter)) +;; Never seemed to execute though +(defadvice! ox-chameleon-org-latex-detect (orig-fun info) + :around #'org-export-install-filters + (setq ox-chameleon--p (when (equal (plist-get info :latex-class) + "chameleon") + (plist-put info :latex-class ox-chameleon-base-class) + t)) + (funcall orig-fun info)) + +(defadvice! ox-chameleon-org-latex-export (orig-fn info) + :around #'org-latex-make-preamble + (funcall orig-fn info) + (if (not ox-chameleon--p) + (funcall orig-fn info) + (concat (funcall orig-fn info) + (ox-chameleon-generate-colourings)))) + +(defun ox-chameleon-generate-colourings () + (apply #'format + "%% make document follow Emacs theme +\\definecolor{bg}{HTML}{%s} +\\definecolor{fg}{HTML}{%s} + +\\definecolor{red}{HTML}{%s} +\\definecolor{orange}{HTML}{%s} +\\definecolor{green}{HTML}{%s} +\\definecolor{teal}{HTML}{%s} +\\definecolor{yellow}{HTML}{%s} +\\definecolor{blue}{HTML}{%s} +\\definecolor{dark-blue}{HTML}{%s} +\\definecolor{magenta}{HTML}{%s} +\\definecolor{violet}{HTML}{%s} +\\definecolor{cyan}{HTML}{%s} +\\definecolor{dark-cyan}{HTML}{%s} + +\\definecolor{level1}{HTML}{%s} +\\definecolor{level2}{HTML}{%s} +\\definecolor{level3}{HTML}{%s} +\\definecolor{level4}{HTML}{%s} +\\definecolor{level5}{HTML}{%s} +\\definecolor{level6}{HTML}{%s} +\\definecolor{level7}{HTML}{%s} +\\definecolor{level8}{HTML}{%s} + +\\definecolor{link}{HTML}{%s} +\\definecolor{cite}{HTML}{%s} +\\definecolor{itemlabel}{HTML}{%s} +\\definecolor{code}{HTML}{%s} +\\definecolor{verbatim}{HTML}{%s} + +\\pagecolor{bg} +\\color{fg} + +\\addtokomafont{section}{\\color{level1}} +\\newkomafont{sectionprefix}{\\color{level1}} +\\addtokomafont{subsection}{\\color{level2}} +\\newkomafont{subsectionprefix}{\\color{level2}} +\\addtokomafont{subsubsection}{\\color{level3}} +\\newkomafont{subsubsectionprefix}{\\color{level3}} +\\addtokomafont{paragraph}{\\color{level4}} +\\newkomafont{paragraphprefix}{\\color{level4}} +\\addtokomafont{subparagraph}{\\color{level5}} +\\newkomafont{subparagraphprefix}{\\color{level5}} + +\\renewcommand{\\labelitemi}{\\textcolor{itemlabel}{\\textbullet}} +\\renewcommand{\\labelitemii}{\\textcolor{itemlabel}{\\normalfont\\bfseries \\textendash}} +\\renewcommand{\\labelitemiii}{\\textcolor{itemlabel}{\\textasteriskcentered}} +\\renewcommand{\\labelitemiv}{\\textcolor{itemlabel}{\\textperiodcentered}} + +\\renewcommand{\\labelenumi}{\\textcolor{itemlabel}{\\theenumi.}} +\\renewcommand{\\labelenumii}{\\textcolor{itemlabel}{(\\theenumii)}} +\\renewcommand{\\labelenumiii}{\\textcolor{itemlabel}{\\theenumiii.}} +\\renewcommand{\\labelenumiv}{\\textcolor{itemlabel}{\\theenumiv.}} + +\\DeclareTextFontCommand{\\texttt}{\\color{code}\\ttfamily} +\\makeatletter +\\def\\verbatim@font{\\color{verbatim}\\normalfont\\ttfamily} +\\makeatother +%% end customisations +" + (mapcar (doom-rpartial #'substring 1) + (list + (face-attribute 'solaire-default-face :background) + (face-attribute 'default :foreground) + ;; + (doom-color 'red) + (doom-color 'orange) + (doom-color 'green) + (doom-color 'teal) + (doom-color 'yellow) + (doom-color 'blue) + (doom-color 'dark-blue) + (doom-color 'magenta) + (doom-color 'violet) + (doom-color 'cyan) + (doom-color 'dark-cyan) + ;; + (face-attribute 'outline-1 :foreground) + (face-attribute 'outline-2 :foreground) + (face-attribute 'outline-3 :foreground) + (face-attribute 'outline-4 :foreground) + (face-attribute 'outline-5 :foreground) + (face-attribute 'outline-6 :foreground) + (face-attribute 'outline-7 :foreground) + (face-attribute 'outline-8 :foreground) + ;; + (face-attribute 'link :foreground) + (or (face-attribute 'org-ref-cite-face :foreground) (doom-color 'yellow)) + (face-attribute 'org-list-dt :foreground) + (face-attribute 'org-code :foreground) + (face-attribute 'org-verbatim :foreground) + )))) +#+END_SRC +***** Make verbatim different to code +Since have just gone to so much effort above let's make the most of it by making +=verbatim= use ~verb~ instead of ~protectedtexttt~ (default). +#+BEGIN_SRC emacs-lisp +(setq org-latex-text-markup-alist '((bold . "\\textbf{%s}") + (code . protectedtexttt) + (italic . "\\emph{%s}") + (strike-through . "\\sout{%s}") + (underline . "\\uline{%s}") + (verbatim . verb))) +#+END_SRC **** Exporting to Beamer It's nice to use a different theme #+BEGIN_SRC emacs-lisp