Files
emacs/README.org

11 KiB

Emacs Configuration

This is an ongoing evolution of Emacs configuration files, inspired by a bunch of online resources.

Installation

Download repo and point the emacs init (and early-init.el) file to this configuration.

Or run one of the following install script commands (using curl, wget or fetch).

sh -c "$(curl -fsSL http://gitea.weseng.de/daniel/emacs/raw/master/scripts/install.sh)"
sh -c "$(wget -O- http://gitea.weseng.de/daniel/emacs/raw/master/scripts/install.sh)"
sh -c "$(fetch -o - http://gitea.weseng.de/daniel/emacs/raw/master/scripts/install.sh)"

Installation path is ~/.config/emacs. See details and other installed linux packages as requirements inside sripts/install.sh.

Packages

General key bindings and functions

  • M-> (end-of-buffer)
  • M-< (begin-of-buffer)
  • C-x b (counsel-switch-buffer)
  • C-x | (toggle-window-split) toggle horizontal/vertical of 2 window split
  • C-x h (mark-whole-buffer)
  • C-x TAB (indent-rigidly) indent lines in the region
  • C-r (query-replace-regexp) replace text
  • M-<up> (move-line-up)
  • M-<down> (move-line-down)
  • C-x RET f (set-buffer-file-coding-system) e.g. set to =utf-8
  • (decode-coding-region) e.g. decode to utf-8 (郭富城Aaron Kwok)
  • (diff-buffer-with-file) show a diff between buffer (current state) and file (saved state)
  • C-h f (helpful-callable)
  • C-h v (helpful-variable)
  • mouse-6 scroll right
  • mouse-7 scroll left
  • mouse-8 (previous-buffer)
  • mouse-9 (next-buffer)

Spelling (flyspell ispell) bindings and functions

  • (flyspell-mode) toggle spelling
  • (flyspell-buffer)
  • C-; (flyspell-correct-wrapper)

Org

Org key bindings and functions

  • C-c | (org-table-create-or-convert-from-region) convert seperator 1. TAB, 2. comma, 3. space
  • C-u C-c | (org-table-create-or-convert-from-region) convert using comma (CSV) seperator
  • C-u C-u C-c | (org-table-create-or-convert-from-region) convert using TAB
  • C-u <integer> C-c | (org-table-create-or-convert-from-region) convert using N spaces
  • C-u REGEX C-c | (org-table-create-or-convert-from-region) convert using regex to match seperator
  • C-c C-x \ (org-toggle-pretty-entries) e.g. displays \pm as ±

Org table

  • S-<right> (org-shiftright) move cell right
  • S-<left> (org-shiftleft) move cell left
  • S-<up> (org-shiftup) move cell up
  • S-<down> (org-shiftdown) move cell down
  • (org-table-blank-field) clear cell

Org src block

  • C-c C-v t (org-babel-tangle) create a file with the content of the block; use in header: :tangle filename

Org export

  • <f5> (my-org-export-html)
  • <f6> (my-org-export-pdf)
  • C-<f5> (my-org-export-html-async)
  • C-<f6> (my-org-export-pdf-async)
  • C-c C-e h h (org-html-export-to-html)
  • C-c C-e T t (org-tufte-export-to-file) HTML export with tufte syling
  • C-c C-e h a (my-org-article-html-export-to-html) HTML-article file, see also Article export
  • C-c C-e l l (org-latex-export-to-pdf)
  • C-c C-e l a (my-org-article-latex-export-to-pdf) PDF-article file, see also Article export
  • C-c C-e l t (my-org-article-latex-export-to-letter) PDF-letter file

Important

  • For Gnuplot source blocks: Do not use % inside Gnuplot source block but \% or in format command \%%

    • % starts a comment in LaTeX and therefore stops further interpretations like a closing bracket } etc.

      • Gnuplot graphics are imported as .tex (text, axis, legend) and .eps (figure) files.
    • \% \%% can also be used for HTML SVG export

Template for an article export (HTML and LaTeX)

Template for an article

# -*- ispell-local-dictionary: "english" -*-
#+LANGUAGE: en
#+TITLE: My article
#+SUBTITLE: 
#+AUTHOR: Daniel
#+EMAIL: name@example.org
#+DATE: May 12, 2021
#+KEYWORDS: 
#+DESCRIPTION:

* Abstract                                                  :ignore:noexport:
#+BEGIN_ABSTRACT
*Abstract*\\
This is the abstract of the article.
#+END_ABSTRACT

* List of contents & figures & tables & listings                     :ignore:
:PROPERTIES:
:VISIBILITY: folded
:CLEARPAGE: t
:END:
#+LATEX: \begin{spacing}{1.25}\begingroup\renewcommand*{\addvspace}[1]{}

#+LATEX: \clearpage
# #+LATEX: \tableofcontents
#+TOC: headlines

#+LATEX: \clearpage
#+LATEX: \listoffigures
# #+LATEX: \phantomsection\addcontentsline{toc}{section}{Abbildungsverzeichnis}\listoffigures
# #+TOC: figures is not implemented yet in the HTML backend. And not working with LaTeX, see listing
# #+TOC: figures

# #+LATEX: \listoftables
# #+LATEX: \phantomsection\addcontentsline{toc}{section}{Tabellenverzeichnis}
#+TOC: tables

# for latex listing is figures
# #+LATEX: \phantomsection\addcontentsline{toc}{section}{Programmausdrucke}
#+TOC: listings
#+LATEX: \endgroup\end{spacing}

* List of Symbols                                                    :ignore:
:PROPERTIES:
:CUSTOM_ID: list-of-symbols
:UNNUMBERED: t
:END:

#+LATEX: \pagenumbering{arabic}\setcounter{page}{1}

Examples for an article

# -*- ispell-local-dictionary: "german" -*-
#+LANGUAGE: de

* Header not listed in toc                                           :ignore:
bla bla bla

* Section not exported                                             :noexport:
bla bla bla, this will not be exported

* Header listed unnumbered
:PROPERTIES:
:UNNUMBERED: t
:END:
bla bla bla

* Section will start on a clear page (LaTeX)
:PROPERTIES:
:CLEARPAGE: t
:END:
bla bla bla

# For PDF/LaTeX export we do not want to use org-ref ox-bibtex, as its output is
# already defined in the preamble. The output for 'bibliography:references.bib'
# is something like '\bibliography{references}'
# reftex version
# bibliography:references.bib
# ox-bibtex version
# #+BIBLIOGRAPHY: references mbunsrtdin option:-a option:-unicode option:-nobibsource limit:t
* References-en                                                       :ignore:
:PROPERTIES:
:VISIBILITY: folded
:END:
#+LATEX: \newpage\thispagestyle{plain}
#+LATEX: \sloppy\printbibliography
#+LATEX: \begin{comment}
#+BIBLIOGRAPHY: references acmu option:-a option:-unicode option:-nobibsource limit:t
#+LATEX: \end{comment}

* References-de                                                       :ignore:
:PROPERTIES:
:VISIBILITY: folded
:END:
#+LATEX: \newpage\thispagestyle{plain}
#+LATEX: \sloppy\printbibliography
#+LATEX: \begin{comment}
#+BIBLIOGRAPHY: references mbunsrtdin option:-a option:-unicode option:-nobibsource limit:t
#+LATEX: \end{comment}

* References-rott                                                     :ignore:
:PROPERTIES:
:VISIBILITY: folded
:END:
#+LATEX: \newpage\thispagestyle{plain}
# all references from the bib
#+LATEX: \nocite{*}
#+BIBLIOGRAPHY: references rottbibsty option:-a option:-unicode option:-nobibsource

Template for a letter export (LaTex)

# -*- ispell-local-dictionary: "german" -*-
:FORM:
#+LANGUAGE: de
#+FROM_ASSOCIATION: XYZ AG
#+FROM_NAME: Max Mustermann
#+FROM_STREET: Regenbogenstrasse 7
#+FROM_PLACE: 12345 Hamburg
#+FROM_PHONE: 0123456789
#+FROM_URL: www.beispiel.de
#+FROM_EMAIL: mail@example.de

#+TO_ASSOCIATION: Firma AG
#+TO_NAME: Karl Marx
#+TO_STREET: Firmstrasse 13
#+TO_PLACE: Berlin

#+PLACE: Hamburg
#+DATE: \today
# #+DATE: 3. Januar 2020
:END:

#+SUBJECT: Abrechnung
#+SUBJECT: 2020
#+SUBJECT_EXTRA: Kontonummer
#+SUBJECT_EXTRA: März

#+OPENING: Sehr geehte Frau \toname,

hiermit sende ich Ihnen die angeforderten Unterlagen zu und ...

#+CLOSING: MfG,

#+ATTACHMENT: analage 1
#+ATTACHMENT: anlage 2
#+ATTACHMENT: analage 3
#+ATTACHMENT: analage 6

Multiple cursors

Multiple cursors key bindings and functions

  • M-m s m a (mc/mark-all-dwim) try to mark all at point
  • C-v jump to next cursor
  • M-v jump to previous cursor
  • C-' hide/unhide lines without a cursor

Other packages

rainbow-mode.el
https://elpa.gnu.org/packages/rainbow-mode.html rainbow-mode is a minor mode for Emacs which displays strings representing colors with the color they represent as background.

Information

Interlock symlinks and auto-save files. Be aware that symbolic links of the form “.#*” are not auto-save files but interlocks to prevent the simultaneous editing of the same file. See Interlocking in the EmacsManual for details.

Errors

  • failed execution of bibtex2html

    • see bib2htmlxxxxxx.blg for errors, e.g.

      • I couldn't open style file acmu.bst
    • copy/merge the texmf directory into your home directory.
  • when using this in an Org mode buffer: #+HEADER: :fit yes :imagemagick yes :iminoptions -density 300

    • can leads to:

      • convert: attempt to perform an operation not allowed by the security policy `gs' @ error/delegate.c/ExternalDelegateCommand/378.
      • convert: no images defined `DESY_logo_tikz.png' @ error/convert.c/ConvertImageCommand/3282.
    • edit /etc/ImageMagick-7/policy.xml and comment out

      • <policy domain="delegate" rights="none" pattern="gs" />

TODOs

  • Org / global configuration

    • Page formatting

      • Modify HTML styling

        • Printed page layout, white styled figures
    • Custom export function for HTML and \(\LaTeX\), with;

      • Shift - <f5>, Shift - <f6> with open file
    • delete temp. generated export files
  • Figures

    • Gnuplot

      • plot transposed files/tables
      • preamble in function and call this function for every gnuplot block either manually or automatically with a hook?!
  • Tables

    • Wrap Table in div element. For smartphone scrolling.
  • Table of contents

    • \(\LaTeX\); currently headers with no-number property means not included in TOC
    • HTML; currently generated list, like lot and lol, are not included in toc but own headers without numbers are.
  • Equation cancel/strike out with color line

    • hcancel[color]{}
    • Example: \(\hcancel[red]{f_{X_2}(x_2)}}\)
    • Definition:

      • Preamle: #+LATEX_HEADER: \usepackage{cancel}
        #+LATEX_HEADER: \newcommand\hcancel[2][black]{\setbox0=\hbox{$#2$}%
        #+LATEX_HEADER: \rlap{\raisebox{.45\ht0}{\textcolor{#1}{\rule{\wd0}{1pt}}}}#2} \\
      • hcancel: [\"{\\\\setbox0=\\\\hbox{$#2$}\\\\rlap{\\\\raisebox{.45\\\\ht0}{\\\\textcolor{#1}{\\\\rule{\\\\wd0}{1pt}}}}#2}\",2]

        MathJax.Ajax.config.path[\"Contrib\"] = \"https://cdn.mathjax.org/mathjax/contrib\";
        MathJax.Hub.Register.StartupHook(\"TeX Jax Ready\",function () {
        MathJax.Hub.Insert(MathJax.InputJax.TeX.Definitions.macros,{
          cancel: [\"Extension\",\"cancel\"],
          bcancel: [\"Extension\",\"cancel\"],
          xcancel: [\"Extension\",\"cancel\"],
          cancelto: [\"Extension\",\"cancel\"]
        });
        });