
# Table of Contents

1.  [Installation](#installation)
2.  [Packages](#packages)
    1.  [Org](#org)
        1.  [Template for an article export (HTML and LaTeX)](#export-article)
        2.  [Template for a letter export (LaTex)](#export-letter)
    2.  [Multiple cursors](#multiple-cursors)
    3.  [Other packages](#other-packages)
3.  [Information](#information)
4.  [Errors](#errors)
5.  [TODOs](#todos)

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


<a id="installation"></a>

# 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`.


<a id="packages"></a>

# 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`)


<a id="org"></a>

## 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


<a id="export-article"></a>

### 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


<a id="export-letter"></a>

### 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


<a id="multiple-cursors"></a>

## 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


<a id="other-packages"></a>

## 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.


<a id="information"></a>

# 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](https://www.emacswiki.org/info-ref?find=Interlocking) in the [EmacsManual](https://www.emacswiki.org/emacs/EmacsManual) for details.


<a id="errors"></a>

# Errors

-   failed execution of bibtex2html
    -   see bib2htmlxxxxxx.blg for errors, e.g.
        -   I couldn&rsquo;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" />`


<a id="todos"></a>

# 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\"]
                    });
                });

