1057 lines
37 KiB
Org Mode
1057 lines
37 KiB
Org Mode
#+STARTUP: content
|
|
|
|
If exporting only a subtree; the heading will be the document title if
|
|
not overwritten by the property =EXPORT_TITLE=.
|
|
|
|
Inside emacs org use =org-ref-list-of-tables= and
|
|
=org-ref-list-of-figures= to open a list of tables or figures.
|
|
|
|
* Requirements
|
|
=latexmk=: for glossary and acronym add the following to =~/.config/latexmk/latexmkrc=
|
|
#+begin_src conf
|
|
add_cus_dep( 'acn', 'acr', 0, 'makeglossaries' );
|
|
add_cus_dep( 'glo', 'gls', 0, 'makeglossaries' );
|
|
$clean_ext .= " acr acn alg glo gls glg";
|
|
sub makeglossaries {
|
|
my ($base_name, $path) = fileparse( $_[0] );
|
|
my @args = ( "-q", "-d", $path, $base_name );
|
|
if ($silent) { unshift @args, "-q"; }
|
|
return system "makeglossaries", "-d", $path, $base_name;
|
|
}
|
|
|
|
add_cus_dep('glo', 'gls', 0, 'makeglo2gls');
|
|
sub makeglo2gls {
|
|
system("makeindex -s '$_[0]'.ist -t '$_[0]'.glg -o '$_[0]'.gls '$_[0]'.glo");
|
|
}
|
|
|
|
add_cus_dep('acn', 'acr', 0, 'makeacn2acr');
|
|
sub makeacn2acr {
|
|
system("makeindex -s \"$_[0].ist\" -t \"$_[0].alg\" -o \"$_[0].acr\" \"$_[0].acn\"");
|
|
}
|
|
#+end_src
|
|
|
|
* Preamble
|
|
The preamble is defined by Org-keywords.
|
|
|
|
First line of the file can be used to define the spelling language of
|
|
the document.
|
|
#+begin_src org
|
|
# -*- ispell-local-dictionary: "english" -*-
|
|
# -*- ispell-local-dictionary: "german" -*-
|
|
#+end_src
|
|
|
|
The title (also used in pdf metadata field)
|
|
#+begin_src org
|
|
#+TITLE: The title
|
|
#+end_src
|
|
|
|
The subtitle
|
|
#+begin_src org
|
|
#+SUBTITLE: The subtitle
|
|
#+end_src
|
|
|
|
The date
|
|
#+begin_src org
|
|
#+DATE: May 16, 2022
|
|
#+DATE: \today
|
|
#+end_src
|
|
|
|
Author(s) (also used in pdf metadata field)
|
|
#+begin_src org
|
|
#+AUTHOR: Max Muster
|
|
#+AUTHOR: Max Muster and Maxi Muster
|
|
#+AUTHOR: Max Muster, Maxi Muster
|
|
#+end_src
|
|
|
|
Email(s)
|
|
#+begin_src org
|
|
#+EMAIL: max.muster@example.com
|
|
#+EMAIL: max.muster@example.com and maxi.muster@example.com
|
|
#+EMAIL: max.muster@example.com, maxi.muster@example.com
|
|
#+end_src
|
|
|
|
Keywords (also used in pdf metadata field)
|
|
#+begin_src org
|
|
#+KEYWORDS: manual, examples
|
|
#+end_src
|
|
|
|
Export options
|
|
#+begin_src org
|
|
# draft:t - display a block at the end of a line, which is too long (indication bad line break)
|
|
# fontsize:"12pt" - set fontsize to 12pt (default: 11pt)
|
|
#+OPTIONS: draft:t fontsize:"12pt"
|
|
#+end_src
|
|
|
|
Language (en default)
|
|
#+begin_src org
|
|
#+LANGUAGE: en
|
|
#+LANGUAGE: de
|
|
#+end_src
|
|
|
|
Description (also used in pdf metadata field: subject). Keyword can be
|
|
used multiple times to extend the description.
|
|
#+begin_src org
|
|
#+DESCRIPTION: Multiline
|
|
#+DESCRIPTION: description
|
|
#+end_src
|
|
|
|
Type of the document. (The abstract template uses or can reference to
|
|
the keyword variable 'document_type' via the macro 'title-name')
|
|
#+begin_src org
|
|
#+DOCUMENT_TYPE: Seminararbeit
|
|
#+end_src
|
|
|
|
Overwrite references setup
|
|
#+begin_src org
|
|
#+BIBLATEX: \usepackage[backend=biber,citestyle=alphabetic,bibstyle=authoryear,sorting=nyt,sortcase=false]{biblatex}\setlength{\bibhang}{0pt}\addbibresource{references.bib}
|
|
#+end_src
|
|
|
|
Additional peamble setup
|
|
#+begin_src org
|
|
#+LATEX_HEADER_EXTRA: \usepackage{layout}
|
|
#+end_src
|
|
|
|
* Text
|
|
** Headline
|
|
#+begin_src org
|
|
,* 1st level heading
|
|
,** this is 2nd level heading
|
|
,*** this is 3rd level heading
|
|
#+end_src
|
|
|
|
To have a headline in Org but not in an export set the header tag
|
|
=:ignore:=.
|
|
#+begin_src org
|
|
,* Header not listed in toc but its content :ignore:
|
|
bla bla bla
|
|
#+end_src
|
|
|
|
To have a headline with its content in Org but not in an export set
|
|
the header tag =:noexport:=.
|
|
#+begin_src org
|
|
,* Section not exported :noexport:
|
|
bla bla bla, this will not be exported
|
|
#+end_src
|
|
|
|
To have a headline unnumbered in the table of contents set the header
|
|
property =:UNNUMBERED: t=.
|
|
#+begin_src org
|
|
,* Header listed unnumbered
|
|
:PROPERTIES:
|
|
:UNNUMBERED: t
|
|
:END:
|
|
bla bla bla
|
|
#+end_src
|
|
|
|
To have a headline in a LaTeX export started on a new page use the
|
|
header property =:CLEARPAGE: t=.
|
|
#+begin_src org
|
|
,* Section will start on a clear page (LaTeX)
|
|
:PROPERTIES:
|
|
:CLEARPAGE: t
|
|
:END:
|
|
bla bla bla
|
|
#+end_src
|
|
|
|
** Formatting
|
|
#+begin_example
|
|
*bold*
|
|
/italic/
|
|
_underlined_
|
|
=verbatim=
|
|
~code~
|
|
+strike-through+
|
|
X_{subscript}
|
|
X^{superscript}
|
|
#+end_example
|
|
|
|
** Line break
|
|
#+begin_example
|
|
Hello, \\ (enforce line break within a paragraph)
|
|
World.
|
|
#+end_example
|
|
|
|
** Color
|
|
- via link-decorator : [[color:#c09000][colored text in orange]]
|
|
- via makro : {{{color(002659,colored text in darkblue)}}}
|
|
|
|
** Glyphs & More
|
|
- in text
|
|
- =\LaTeX{}= LaTeX (do not miss the brackets to get an whitespace after)
|
|
- =\euro{}= €
|
|
- =\leftarrow= ←
|
|
- =\rightarrow= →
|
|
- =\uparrow= ↑
|
|
- =\downarrow= ↓
|
|
- in math
|
|
- =\ho{}= (hochstellen) for math mode similar to =^{}= but sets roman font
|
|
- =\ti{}= (tiefstellen) for math mode similar to =_{}= but sets roman font
|
|
- =\rom{3}= iii
|
|
- =\Rom{3}= III
|
|
|
|
** Makros
|
|
Active Org macros (=org-macro-templates=):
|
|
- Org built-ins (see
|
|
https://www.gnu.org/software/emacs/manual/html_node/org/Macro-Replacement.html)
|
|
- ={{{title}}}= :: {{{title}}}
|
|
- ={{{author}}}= :: {{{author}}}
|
|
- ={{{email}}}= :: {{{email}}}
|
|
- ={{{date}}}= :: {{{date}}}
|
|
- ={{{time(FORMAT)}}}= :: {{{time(%h)}}} : format see function =format-time-string=
|
|
- ={{{input-file}}}= :: {{{input-file}}}
|
|
- ={{{modification-time(FORMAT[,VC])}}}= ::
|
|
{{{modification-time(%Y-%m-%d %a %H:%M:%S)}}} : vc is a toogle
|
|
(nil,t) to retrieve the time from version control system
|
|
- ={{{keyword(KEYWORD)}}}= :: {{{keyword(SUBTITLE)}}}
|
|
- ={{{property(PROPERTY-NAME[,LOCATION])}}}= ::
|
|
{{{property(CUSTOM_ID)}}} : optional location see function
|
|
=org-link-search=
|
|
(https://www.gnu.org/software/emacs/manual/html_node/org/Search-Options.html)
|
|
- ={{{n}}}= ={{{n(COUNTER[,ACTION])}}}= :: {{{n}}} {{{n(ii)}}}
|
|
{{{n(ii,-)}}} {{{n(ii,5)}}} {{{n(ii)}}} {{{n(i,x)}}} : increment
|
|
counter name, if optional action is '-' do not increment, if
|
|
number set to number, if somthing else reset to 1
|
|
- custom
|
|
- ={{{textsc(text)}}}= :: {{{textsc(Gauß)}}}
|
|
- ={{{color(hex,text)}}}= :: {{{color(884488,text)}}}
|
|
- ={{{kbd(text)}}}= :: {{{kbd(text)}}}
|
|
- ={{{highlight(text[,options])}}}= :: {{{highlight(text highlighted
|
|
in default color)}}}, {{{highlight(text highlighted in
|
|
red,red)}}}, {{{highlight(text highlighted in green and blue
|
|
borders,green,blue)}}}
|
|
|
|
* Links
|
|
#+begin_example
|
|
[[http://example.com/]]
|
|
[[http://example.com/][description]]
|
|
#+end_example
|
|
|
|
* Rule
|
|
a horizontal rule, 5 or more only dashes
|
|
-----
|
|
|
|
* Blocks
|
|
Easy Templates (enter =<x[TAB]=)
|
|
- s #+BEGIN_SRC ... #+END_SRC
|
|
- e #+BEGIN_EXAMPLE ... #+END_EXAMPLE
|
|
- q #+BEGIN_QUOTE ... #+END_QUOTE
|
|
- v #+BEGIN_VERSE ... #+END_VERSE
|
|
- c #+BEGIN_CENTER ... #+END_CENTER
|
|
- l #+BEGIN_EXPORT latex ... #+END_EXPORT
|
|
- L #+LATEX:
|
|
- h #+BEGIN_EXPORT html ... #+END_EXPORT
|
|
- H #+HTML:
|
|
- a #+BEGIN_EXPORT ascii ... #+END_EXPORT
|
|
- A #+ASCII:
|
|
- I #+INCLUDE: file
|
|
- I #+INCLUDE: interactive version
|
|
|
|
** Lists
|
|
Org reference: https://orgmode.org/manual/Plain-lists-in-LaTeX-export.html#Plain-lists-in-LaTeX-export
|
|
|
|
Inline list:
|
|
Some ways to say "Hello":
|
|
#+ATTR_LATEX: :environment itemize*
|
|
#+ATTR_LATEX: :options [label={}, itemjoin={,}, itemjoin*={\ and}]
|
|
- Hola
|
|
- Bonjour
|
|
- Guten Tag.
|
|
|
|
Unordered list
|
|
- One
|
|
- Two
|
|
- Three
|
|
- Four
|
|
* Four 2
|
|
+ Four 3
|
|
|
|
Ordered list
|
|
1. One
|
|
2. Two
|
|
1. Two one
|
|
2. Two two
|
|
1. Two two one
|
|
2. Two two two
|
|
1. Two two two one
|
|
20. [@20] Test
|
|
21. foo
|
|
22. baz
|
|
|
|
List with custom item spacing
|
|
#+ATTR_LATEX: :options [itemsep=5pt]
|
|
- One
|
|
- Two
|
|
- Three
|
|
- Four
|
|
- Five
|
|
|
|
Description list
|
|
- an item :: a description
|
|
|
|
** Tables, Figures, Listings
|
|
|
|
#+CAPTION[Optional short version for the lot, lof, lol]: Caption of the table, figure or listing
|
|
|
|
** Tables
|
|
Default tables having a placement atrribute set to =[htbp]= (still
|
|
allows to find a sweet spot). For a 'here in place' placement use
|
|
=:placement [h]= (approximately at the same point) =:placement [H]=
|
|
(precisely at point, will deactivate settings from the =float= package,
|
|
similar to =[h!]=)
|
|
|
|
Org reference:
|
|
https://www.gnu.org/software/emacs/manual/html_node/org/Tables-in-LaTeX-export.html
|
|
|
|
Alignment using column type =#+ATTR_LATEX: :align xxx=
|
|
- built-in
|
|
- l: left-aligned cells
|
|
- c: center-aligned cells
|
|
- r: right-aligned cells
|
|
- p{width}: top-aligned cells with fixed width
|
|
- m{width}: middle-aligned cells with fixed width
|
|
- b{width}: bottom-aligned cells with fixed width
|
|
- >{declaration}: pre-column-declaration, used before lcrpmb
|
|
- <{declaration}: post-column-type declaration, user after lcrpmb
|
|
- @{text}: column containing the text in every cell of the column
|
|
- custom
|
|
- L{width}: left-aligned cells with fixed width
|
|
- C{width}: center-aligned cells with fixed width
|
|
- R{width}: right-aligned cells with fixed width
|
|
|
|
*** Alignment and Bookstab style
|
|
#+CAPTION: Table using bookstab and align
|
|
#+ATTR_LATEX: :booktabs t :align rcl :placement [H]
|
|
|--------+--------+--------|
|
|
| right | center | left |
|
|
|--------+--------+--------|
|
|
| A1 | A2 | A2 |
|
|
| B1.1 | B2.1 | B3.1 |
|
|
| C1.1.1 | C2.1.1 | C3.1.1 |
|
|
|--------+--------+--------|
|
|
|
|
*** Alignment
|
|
#+CAPTION: Table using align
|
|
#+ATTR_LATEX: :align |r|cl| :placement [H]
|
|
|--------+--------+--------|
|
|
| right | center | left |
|
|
|--------+--------+--------|
|
|
| A1 | A2 | A3 |
|
|
| B1.1 | B2.1 | B3.1 |
|
|
| C1.1.1 | C2.1.1 | C3.1.1 |
|
|
|--------+--------+--------|
|
|
|
|
*** Fixed width / multi-line cells
|
|
Multi-line cells with fixed width cells using =pmbLCR=
|
|
and forced newline using =\newline=.
|
|
#+CAPTION[Table using custom align and newline]: Table using =#+ATTR_LATEX: :align rC{0.6\textwidth}l= and =\newline=
|
|
#+ATTR_LATEX: :bookstabs :align rC{0.6\textwidth}l :placement [H]
|
|
|--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------|
|
|
| right | center | left |
|
|
|--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------|
|
|
| A1 | A2 | A3 |
|
|
| B1.1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\newline Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. | B3.1 |
|
|
| C1.1.1 | C2.1.1 | C3.1.1 |
|
|
|--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------|
|
|
|
|
*** Multi-page table / longtable
|
|
#+CAPTION: Longtable
|
|
#+ATTR_LATEX: :environment longtable :align l|lp{3cm}r|l
|
|
| ... | ... |
|
|
| ... | 3.456 |
|
|
| ... | 2,842 |
|
|
|
|
*** Number alignment
|
|
Alignment of numbers (numprint) using column type n (numbers in math)
|
|
and N (numbers in text)
|
|
#+CAPTION: Table using column type n and N
|
|
#+ATTR_LATEX: :booktabs t :align n{5}{3}n[3]{5}{3}n[3][1]{5}{3}N{5}{3}
|
|
|-----------------+-----------------+-----------------+-----------------|
|
|
| =n{5}{3}= | =n[3]{5}{3}= | =n[3][1]{5}{3}= | =N{5}{3}= |
|
|
|-----------------+-----------------+-----------------+-----------------|
|
|
| 123.45e12 | 123.45e12 | 123.45e12 | 123.45e12 |
|
|
| 12345.678e123 | 12345.678e123 | 12345.678e123 | 12345.678e123 |
|
|
| 123.45e12.3 | 123.45e12.3 | 123.45e12.3 | 123.45e12.3 |
|
|
| 12345.678e123.3 | 12345.678e123.3 | 12345.678e123.3 | 12345.678e123.3 |
|
|
|-----------------+-----------------+-----------------+-----------------|
|
|
|
|
*** Custom caption command for LaTeX
|
|
Set caption with \LaTeX{} command
|
|
#+ATTR_LATEX: :caption \caption[HeadingA.toc]{HeadingA}
|
|
#+ATTR_LATEX: :placement [h]
|
|
| ... | ... |
|
|
| ... | ... |
|
|
|
|
*** Overlay using tikz
|
|
#+CAPTION: Table with tikz overlay
|
|
| | 1, 2, 7 | 3 | 4, 6 | 5 | \leftarrow Oberseite |
|
|
| Schicht | 8, 13, 14 | 12 | 9, 11 | 10 | \leftarrow Unterseite |
|
|
|---------+--------------------------+--------------------------+--------------------------+--------------------------+-----------------------------------|
|
|
| 1 | \tikzmark{LAa}Gelcoat | \tikzmark{LAc}Gelcoat | \tikzmark{LAe}Gelcoat | \tikzmark{LAg}Gelcoat | \tikzmark{LAi}Saertex(DB) |
|
|
| 2 | SNL(Triax) | SNL(Triax) | SNL(Triax) | SNL(Triax) | FOAM |
|
|
| 3 | SNL(Triax) | SNL(Triax) | SNL(Triax) | SNL(Triax) | \tikzmark{LAj}Saertex(DB) |
|
|
| 4 | \tikzmark{LAb}SNL(Triax) | E-LT-5500(UD) | FOAM | Carbon(UD) | |
|
|
| 5 | | FOAM | \tikzmark{LAf}SNL(Triax) | \tikzmark{LAh}SNL(Triax) | \(\uparrow\) Längsver- |
|
|
| 6 | | \tikzmark{LAd}SNL(Triax) | | | \phantom{\(\uparrow\)} steifungen |
|
|
#+begin_export latex
|
|
\tikz[remember picture,overlay] {%
|
|
\draw[red,very thick] ([xshift=-.3ex,yshift=2ex]pic cs:LAa) -- ([xshift=-.3ex,yshift=-.5ex]pic cs:LAb) node[midway] {};%
|
|
\draw[LimeGreen,very thick] ([xshift=-.3ex,yshift=2ex]pic cs:LAc) -- ([xshift=-.3ex,yshift=-.5ex]pic cs:LAd) node[midway] {};%
|
|
\draw[ProcessBlue,very thick] ([xshift=-.3ex,yshift=2ex]pic cs:LAe) -- ([xshift=-.3ex,yshift=-.5ex]pic cs:LAf) node[midway] {};%
|
|
\draw[BurntOrange,very thick] ([xshift=-.3ex,yshift=2ex]pic cs:LAg) -- ([xshift=-.3ex,yshift=-.5ex]pic cs:LAh) node[midway] {};%
|
|
\draw[Black,very thick] ([xshift=-.3ex,yshift=2ex]pic cs:LAi) -- ([xshift=-.3ex,yshift=-.5ex]pic cs:LAj) node[midway] {};%
|
|
}%
|
|
#+end_export
|
|
|
|
[[file:./img/table-overlay-tikz.png]]
|
|
|
|
*** From Python src block output
|
|
#+begin_src python :results output table :exports results :hlines yes
|
|
a = 1.362658
|
|
b = 'foo'
|
|
|
|
result = [
|
|
None ,
|
|
['b', f'_{b}_'] ,
|
|
[r'$R^{2}$',f'{a:.3f}'] ,
|
|
None ,
|
|
]
|
|
print(result)
|
|
#+end_src
|
|
|
|
#+RESULTS:
|
|
|---------+-------|
|
|
| b | _foo_ |
|
|
| $R^{2}$ | 1.363 |
|
|
|---------+-------|
|
|
|
|
** Figures
|
|
*** file svg
|
|
#+NAME: fig-svg
|
|
#+CAPTION: svg figure
|
|
#+ATTR_ORG: :width 100
|
|
#+ATTR_LATEX: :width 1cm
|
|
[[file:img/emacs.svg]]
|
|
|
|
See figure ref:fig-svg-import as a reference.
|
|
*** file png
|
|
#+NAME: fig-png
|
|
#+CAPTION: png figure
|
|
#+ATTR_ORG: :width 100
|
|
#+ATTR_LATEX: :width 1cm
|
|
[[file:img/emacs.png]]
|
|
|
|
*** latex using tikz with data file
|
|
|
|
file path to data file need to be an absolute path, bacause the
|
|
compilation is done in a tmp directory (~/tmp/babel-XXXXXX/~).
|
|
|
|
#+HEADER: :file (tpl-file "img/figure-tikz")
|
|
#+HEADER: :results (tpl-results)
|
|
#+BEGIN_src latex :exports results :wrap figure
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=12.5cm,
|
|
height=5cm,
|
|
title={},
|
|
enlarge x limits=false,
|
|
enlarge y limits=false,
|
|
scale only axis,
|
|
ymajorgrids,
|
|
grid style={gray!30},
|
|
axis lines=left,
|
|
xticklabel style={/pgf/number format/.cd,fixed,fixed zerofill,precision=1},
|
|
%xticklabel style={rotate=90,anchor=near xticklabel, /pgf/number format/1000 sep={}},
|
|
xlabel={$x$ label},
|
|
xlabel style ={yshift=-0.5cm},
|
|
%xtick={0,1,...,3},
|
|
xmin=0,
|
|
xmax=3,
|
|
ymin=0,
|
|
ymax=10,
|
|
ylabel={$y$ label},
|
|
%yticklabel style={/pgf/number format/.cd,fixed,fixed zerofill,precision=2},
|
|
%ytick={-1,0,...,3.5},
|
|
]
|
|
\addplot[red, thick, mark=x] table[x index=0, y index=1] {$HOME/repos/emacs-conf/lisp/my/img/figure-tikz.dat}; \label{tpl:y1}
|
|
\addplot[blue, thick, mark=x] table[x index=0, y index=2] {$HOME/repos/emacs-conf/lisp/my/img/figure-tikz.dat}; \label{tpl:y2}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
#+END_src
|
|
|
|
#+ATTR_LATEX: :options [H] :caption \caption[Caption in ToC]{Caption at place with ref to \(y_{1}\) \ref{tpl:y1} and \(y_{2}\) \ref{tpl:y2}}
|
|
#+RESULTS:
|
|
#+begin_figure
|
|
[[file:img/figure-tikz.svg]]
|
|
#+end_figure
|
|
|
|
*** python using matplotlib
|
|
|
|
SRC block header =:prologue (mpl-prologue)= for non-latex exports (.svg
|
|
exports) to loads my.mplstyle including kpfonts. Other style via
|
|
optional argument, e.g. =:prologue (mpl-prologue "my-tex")= rendering
|
|
via latex including kpfonts.
|
|
|
|
SRC block header =:var fname=(mpl-var "<file_name>")= to export figure
|
|
as .pgf for latex and .svg otherwise, like HTML.
|
|
|
|
**** using my.mplstyle
|
|
Python matplotlib figure using matplotlib =my=. The style =my= renders
|
|
without LaTeX but using the kpfonts.
|
|
|
|
#+HEADER: :prologue (mpl-prologue)
|
|
#+HEADER: :var fname=(mpl-var "img/figure-matplotlib")
|
|
#+begin_src python :results output file
|
|
import math as m
|
|
import matplotlib as mpl
|
|
|
|
n = 30
|
|
t = [i/n*m.pi for i in range(n+1)]
|
|
|
|
fig, ax = plt.subplots()
|
|
[ax.plot(t, [m.sin(i+j/12*m.pi) for i in t], color=f'C{j}', label=f'$C_{j}$') for j in range(10)]
|
|
ax.legend()
|
|
ax.set_title(r'Functions: $\sin(x + \pi \, i/12)$')
|
|
ax.set_xlabel(r'$x ~ \times \pi$')
|
|
ax.set_ylabel('$y$')
|
|
ax.set_xticks([0, m.pi/4, m.pi/2, m.pi*3/4, m.pi])
|
|
ax.set_xticklabels([0.00, 0.25, 0.50, 0.75, 1.00])
|
|
ax.xaxis.set_minor_locator(mpl.ticker.AutoMinorLocator(3))
|
|
ax.grid()
|
|
ax.grid(which='minor', linestyle=':')
|
|
|
|
fig.savefig(fname)
|
|
plt.close()
|
|
print(fname, end='')
|
|
#+end_src
|
|
|
|
#+ATTR_ORG: :width 500
|
|
#+RESULTS:
|
|
[[file:img/figure-matplotlib.svg]]
|
|
|
|
**** using my-tex.mplstyle
|
|
Python matplotlib figure using matplotlib =my-tex=. The style =my-tex=
|
|
renders with LaTeX and uses the kpfonts.
|
|
|
|
#+HEADER: :prologue (mpl-prologue "my-tex")
|
|
#+HEADER: :var fname=(mpl-var "img/figure-matplotlib-tex")
|
|
#+begin_src python :results output file
|
|
import math as m
|
|
import matplotlib as mpl
|
|
|
|
n = 30
|
|
t = [i/n*m.pi for i in range(n+1)]
|
|
|
|
fig, ax = plt.subplots()
|
|
[ax.plot(t, [m.sin(i+j/12*m.pi) for i in t], color=f'C{j}', label=f'$C_{j}$') for j in range(10)]
|
|
ax.legend()
|
|
ax.set_title(r'Functions: $\sin(x + \pi \, i/12)$')
|
|
ax.set_xlabel(r'$x ~ \times \pi$')
|
|
ax.set_ylabel('$y$')
|
|
ax.set_xticks([0, m.pi/4, m.pi/2, m.pi*3/4, m.pi])
|
|
ax.set_xticklabels([0.00, 0.25, 0.50, 0.75, 1.00])
|
|
ax.xaxis.set_minor_locator(mpl.ticker.AutoMinorLocator(3))
|
|
ax.grid()
|
|
ax.grid(which='minor', linestyle=':')
|
|
|
|
fig.savefig(fname)
|
|
plt.close()
|
|
print(fname, end='')
|
|
#+end_src
|
|
|
|
#+ATTR_ORG: :width 500
|
|
#+RESULTS:
|
|
[[file:img/figure-matplotlib-tex.svg]]
|
|
|
|
*** dot graphviz
|
|
|
|
#+begin_src dot :file img/figure-dot.png
|
|
digraph G {
|
|
main -> parse -> execute;
|
|
main -> init;
|
|
main -> cleanup;
|
|
execute -> make_string;
|
|
execute -> printf;
|
|
init -> make_string;
|
|
main -> printf;
|
|
execute -> compare;
|
|
}
|
|
#+end_src
|
|
|
|
#+ATTR_ORG: :width 500
|
|
#+RESULTS:
|
|
[[file:img/figure-dot.png]]
|
|
|
|
*** gnuplot
|
|
|
|
=gnuplot-inline-display-mode=
|
|
=gnuplot-dedicated-display-mode=
|
|
=gnuplot-external-display-mode=
|
|
|
|
#+begin_src gnuplot :results silent
|
|
reset
|
|
|
|
set title "Putting it All Together"
|
|
|
|
set xlabel "X"
|
|
set xrange [-8:8]
|
|
set xtics -8,2,8
|
|
|
|
|
|
set ylabel "Y"
|
|
set yrange [-20:70]
|
|
set ytics -20,10,70
|
|
|
|
f(x) = x**2
|
|
g(x) = x**3
|
|
h(x) = 10*sqrt(abs(x))
|
|
|
|
plot f(x) w lp lw 1, g(x) w p lw 2, h(x) w l lw 3
|
|
#+end_src
|
|
|
|
*** gnuplot gantt chart
|
|
#+tblname: gantt-table
|
|
| Task | Effort | Start | End | Who |
|
|
|----------------+--------+-----------------+------------------+-----|
|
|
| Time available | 1 | <2020-11-02 Mo> | <2020-11-13 Fr> | |
|
|
| Task 0 | 2 | <2020-11-03 Di> | [2020-11-05 Thu] | Al |
|
|
| Task 1 | 1 | <2020-11-05 Do> | <2020-11-06 Fr> | Bo |
|
|
| Task 2 | 3 | <2020-11-05 Do> | [2020-11-10 Di] | Ca |
|
|
| Task 3 | 2 | <2020-11-06 Fr> | <2020-11-10 Di> | Ca |
|
|
| Task 4 | 2 | <2020-11-06 Fr> | <2020-11-06 Fr> | Bo |
|
|
| Task 5 | 1 | <2020-11-10 Di> | <2020-11-10 Di> | Bo |
|
|
| Task 6 | 1 | <2020-11-11 Mi> | <2020-11-12 Do> | Bo |
|
|
| Task 7 | 2 | <2020-11-09 Mo> | <2020-11-10 Di> | Al |
|
|
| Task 8 | 1 | <2020-11-12 Do> | <2020-11-12 Do> | Al |
|
|
| Task 9 | 1 | <2020-11-06 Fr> | <2020-11-09 Mo> | Al |
|
|
| Task 10 | 1 | <2020-11-12 Do> | <2020-11-13 Fr> | Bo |
|
|
| Task 11 | 1 | <2020-11-13 Fr> | <2020-11-13 Fr> | |
|
|
|
|
#+begin_src gnuplot :results silent :var DATA=gantt-table :results graphics
|
|
reset
|
|
# http://gnuplot.sourceforge.net/demo_5.1/gantt.html
|
|
OneMonth = strptime("%m","2")
|
|
OneWeek = strptime("%U","2")
|
|
OneDay = strptime("%d","2")
|
|
timeformat = "%Y-%m-%d %a"
|
|
T(N) = timecolumn(N,timeformat)
|
|
|
|
set xdata time
|
|
set format x "%a\n%d\n%b\n'%y"
|
|
set xtics OneDay nomirror
|
|
set xtics scale 2, 0.5
|
|
set mxtics 7
|
|
|
|
skiptorow=2
|
|
set yrange [(skiptorow-2):] reverse
|
|
set ytics nomirror
|
|
|
|
unset key
|
|
set title "{/=15 My Project}"
|
|
set grid x y
|
|
set border 3
|
|
set style arrow 1 nohead filled size screen 0.02, 15 fixed lt 3 lw 8
|
|
|
|
plot DATA using (T(3)) : ($0) : (T(4)-T(3)) : (0.0) : yticlabel(1) with vector as 1
|
|
#+end_src
|
|
|
|
** Example / Verbatim
|
|
#+BEGIN_EXAMPLE
|
|
verbatime example
|
|
#+END_EXAMPLE
|
|
|
|
or using =:= (start the example lines with a colon followed by a space.)
|
|
: a single line example
|
|
: can be indented
|
|
|
|
** Source
|
|
#+NAME: <name>
|
|
#+BEGIN_SRC <language> <switches> <header arguments>
|
|
<body>
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC python
|
|
string = 'hello' + ', world' + !*3 # comment
|
|
print(string)
|
|
#+END_SRC
|
|
|
|
* Math
|
|
** Symbols and Functions
|
|
*** Quotation, Fraction
|
|
#+begin_example
|
|
- \[\underbracket[1pt][0pt]{bla}_\text{blo}\]
|
|
- \[\Dfrac{3}{7}\]
|
|
- \[\slfrac{3}{7}\]
|
|
- \[\sfrac{3}{7}\]
|
|
- \[\nicefrac{3}{7}\]
|
|
- \[\faktor{3}{7}\]
|
|
- \[\Faktor{3}{7}\]
|
|
#+end_example
|
|
*** Units
|
|
#+begin_example
|
|
- \(\unit{123.45}{\milli\meter}\)
|
|
#+end_example
|
|
*** Fields
|
|
#+begin_example
|
|
- \(\field{X}\) : field
|
|
- \(\fA{}\) : Affine field
|
|
- \(\fC\) : Complex field
|
|
- \(\fFp\) : Finite field
|
|
- \(\fFq\) : Finite field
|
|
- \(\fGa\) : Group scheme
|
|
- \(\fK\) : Generic field (Körper)
|
|
- \(\fN\) : Natural numbers
|
|
- \(\fPj\) : Projective field
|
|
- \(\fR\) : Real numbers
|
|
- \(\fQ\) : Rational numbers
|
|
- \(\fI\) : Irrational numbers
|
|
- \(\fZ\) : Integers
|
|
- \(\Def\) : Domain of a function D (Definitionsbereich)
|
|
- \(\LM\) : Solution set L (Lösungsmenge)
|
|
#+end_example
|
|
*** Functions
|
|
#+begin_example
|
|
- \(\sins\) : Short sin
|
|
- \(\coss\) : Short cos
|
|
#+end_example
|
|
*** Operators
|
|
#+begin_example
|
|
- \(\norm{x}\) : ||x||
|
|
- \(\abs{x}\) : |x|
|
|
- \(\innerProd{x}{y}\) : <x,y>
|
|
- \(\Bild U\) : Map of a function (mapping, transformation)
|
|
- \(\rank U\) : Rank of a matrix
|
|
- \(\tr U\) : Matrix trace
|
|
- \(\dev U\) : Matrix deviation
|
|
- \(\var U\) : Variance
|
|
- \(\grad U\) : Gradiant
|
|
- \(\divergence U\) : Divergence div
|
|
- \(\rot U\) : Rotation
|
|
- \(\diag U\) : Diagonal matrix
|
|
- \(\adj\) : Adjoint operator H
|
|
- \(\adjugate U\) : Classical adjoint adj (adjugate)
|
|
- \(()^\T\) : Transpose operator
|
|
#+end_example
|
|
*** Others
|
|
#+begin_example
|
|
- \(\corresponds\) : equal sign with a hat
|
|
- \(\dt{u}\) : dot above symbol (time derivative)
|
|
- \(\ddt{u}\) : two dots above symbol (time derivative)
|
|
- \(\Eval{a}{b}{c}\) : evaluation limits a|_b^c
|
|
- \(\fdg\) : 'für die gilt' | (vertical bar)
|
|
- \(\E\) : E
|
|
- \(\qed\) : Q.E.D. quod erat demonstrandum "what was to be shown" -> "which was to be demonstrated"
|
|
- \(\euler\) : Euler e
|
|
- \(\deg\) : Degree °
|
|
- \(\degC\) : °C
|
|
- \(\TF\) : sign for transfomed values: low tilde
|
|
- \(\dif\) : d
|
|
#+end_example
|
|
*** Tensor
|
|
#+begin_example
|
|
- \(\tensor{U}\) : general bold, no further decoration
|
|
- \(\tensorI{U}\) : underline
|
|
- \(\tensorII{U}\) : two underlines
|
|
- \(\tensorIII{U}\) : tilde 3 below symbol
|
|
- \(\tensorIV{U}\) : tilde 4 below symbol
|
|
- \(\tensori{U}\) : harpoon right
|
|
- \(\tensorii{U}\) : harpoon right and left
|
|
- \(\tensoriii{U}\) : arrow right and harpoon left
|
|
- \(\tensoriv{U}\) : arrow right and left
|
|
#+end_example
|
|
|
|
** Equation
|
|
named equation:
|
|
#+name: eq-in-name
|
|
\begin{equation}
|
|
e^x = 4
|
|
\end{equation}
|
|
|
|
And refer to Eq. ref:eq-in-name in document.
|
|
|
|
** Matrix
|
|
Create math matrix objects with org tables
|
|
#+ATTR_LATEX: :mode math :environment bmatrix :math-suffix \times
|
|
| a | b |
|
|
| c | d |
|
|
#+ATTR_LATEX: :mode math :environment bmatrix
|
|
| 1 | 2 |
|
|
| 3 | 4 |
|
|
|
|
* Table of Contents and List of Tables, Figures, Glossaries, Symbols, Acronyms and References
|
|
|
|
to display the table of contents
|
|
#+begin_src org
|
|
,#+LATEX: \clearpage\pdfbookmark[1]{\contentsname}{toc}
|
|
,#+TOC: headlines
|
|
#+end_src
|
|
|
|
to display the list of figures
|
|
#+begin_src org
|
|
#+LATEX: \listoffigures
|
|
# `#+TOC: figures' is not working
|
|
#+end_src
|
|
|
|
to display the list of tables
|
|
#+begin_src org
|
|
,#+TOC: tables
|
|
# old: #+LATEX: \listoftables
|
|
#+end_src
|
|
|
|
to display the list of listing
|
|
#+begin_src org
|
|
,#+TOC: listings
|
|
# old: #+LATEX: \lstlistoflistings
|
|
#+end_src
|
|
|
|
to display the tables for glossaries, symbols and acronyms
|
|
#+begin_src org
|
|
,#+LATEX: \printglossary\thispagestyle{plain}
|
|
,#+LATEX: \printglossary[type=\acronymtype,title=Abkürzungsverzeichnis]\thispagestyle{plain}
|
|
,#+LATEX: \printglossary[type=symbols,style=mysymbols,title=Symbolverzeichnis]\thispagestyle{plain}
|
|
,#+LATEX: \glsaddallunused
|
|
#+end_src
|
|
|
|
** Glossary and List of Symbols
|
|
|
|
Define glossary and symbol entries with
|
|
#+latex_header_extra: \newglossaryentry{tree}{name={tree},description={A description for the glossary entry}}
|
|
#+latex_header_extra: \newglossaryentry{shrub}{name={shrub},description={A description for the other glossary entry}}
|
|
#+begin_src org
|
|
# glossaries
|
|
,#+latex_header_extra: \newglossaryentry{tree}{name={tree},description={A description for the glossary entry},type=main,symbol=}
|
|
,#+latex_header_extra: \newglossaryentry{shrub}{name={shrub},description={A description for the other glossary entry},type=main,symbol=}
|
|
# symbols
|
|
,#+latex_header_extra: \newglossaryentry{A}{name=\(A\),description={{Area}},type=symbols,symbol=mm^{2}}
|
|
,#+latex_header_extra: \newglossaryentry{L}{name=\(L\),description={{Length}},type=symbols,symbol=mm}
|
|
#+end_src
|
|
|
|
|
|
See command =org-ref-glossary-gls-commands= and use
|
|
=org-ref-insert-glossary-link= to insert a link with completion (=C-c
|
|
C-l=).
|
|
|
|
Use a glossary entry using
|
|
- only link location gls:tree or gls:shrub
|
|
- link location and description [[gls:shrub][Shrub]], the description is only visible in Org
|
|
- not recommended latex command \gls{tree}
|
|
|
|
#+CAPTION: Glossary types
|
|
#+ATTR_LATEX: :booktabs t :placement [h]
|
|
|-----------+-------------------------------------------------------------|
|
|
| =gls= | The term associated with the label |
|
|
| =glspl= | The plural term |
|
|
| =Gls= | The capitalized term |
|
|
| =Glspl= | The plural capitalized term |
|
|
| =glssymbol= | The symbol defined (only with latex definition) |
|
|
| =Glssymbol= | The capitalized symbol defined (only with latex definition) |
|
|
| =glsdesc= | The description associated with the label |
|
|
| =Glsdesc= | The capitalized description associated with the label |
|
|
|-----------+-------------------------------------------------------------|
|
|
|
|
|
|
#
|
|
# ALTERNATIVE to define glossary and symbols entries via org tables;
|
|
# but problem with link hanging
|
|
#
|
|
# NOTE! the following table will be split into an glossary and a symbol table
|
|
# #+name: glossary
|
|
# | label | name | description | unit |
|
|
# |-------+-------+-----------------------------------------------------+--------|
|
|
# | tree | Tree | A woody plant | |
|
|
# | shrub | Shrub | A woody bush | |
|
|
# | api-g | API | An Application Programming Interface (API) is a ... | |
|
|
# | w | \(w\) | Width | mm |
|
|
# | A | \(A\) | Area | mm^{2} |
|
|
# | L | \(L\) | Length | mm |
|
|
# | f | \(f\) | Eigen frequency | Hz |
|
|
|
|
|
|
# OR simply use an org table for the list of symbols , e.g.
|
|
# | \(L\) | m | Length |
|
|
|
|
** Acronym
|
|
|
|
Define acronym entries with
|
|
#+latex_header_extra: \newacronym{bb}{BB}{Two Letter Acronym}
|
|
#+latex_header_extra: \newacronym{qos}{QoS}{quality-of-service}
|
|
#+begin_src org
|
|
,#+latex_header_extra: \newacronym{bb}{BB}{Two Letter Acronym}
|
|
,#+latex_header_extra: \newacronym{qos}{QoS}{quality-of-service}
|
|
#+end_src
|
|
|
|
See command =org-ref-acronym-types= and use =org-ref-insert-acronym-link=
|
|
to insert a link with completion (=C-c C-l=).
|
|
|
|
Use a acronyms entry using
|
|
- only link location acrfull:bb
|
|
- link location and description [[acrshort:bb][BB]] [[acrfull:qos][quality-of-service (QoS)]]
|
|
|
|
#+CAPTION: Acronym types
|
|
#+ATTR_LATEX: :booktabs t :placement [H]
|
|
|------------+-----------------------------------------------------------|
|
|
| =acrshort= | The acronym for label |
|
|
| =acrshortpl= | The acronym for label in plural |
|
|
| =Acrshort= | Capitalized acronym |
|
|
| =Acrshortpl= | Plural capitalized acronym |
|
|
| =ACRshort= | ALL-CAPS acronym |
|
|
| =ACRshortpl= | ALL-CAPS plural acronym |
|
|
| =acrlong= | The label definition |
|
|
| =acrlongpl= | The plural definition |
|
|
| =Acrlong= | Capitalized definition |
|
|
| =Acrlongpl= | Plural capitalized definition |
|
|
| =ACRlong= | ALL-CAPS definition |
|
|
| =ACRlongpl= | plural ALL-CAPS definition |
|
|
| =acrfull= | Both the acronym and its definition |
|
|
| =acrfullpl= | Both the acronym and its definition in plural |
|
|
| =Acrfull= | Capitalized both the acronym and its definition |
|
|
| =Acrfullpl= | Capitalized both the acronym and its definition in plural |
|
|
| =ACRfull= | Both the acronym and its definition in ALL-CAPS |
|
|
| =ACRfullpl= | Both the acronym and its definition in plurall ALL-CAPS |
|
|
|------------+-----------------------------------------------------------|
|
|
|
|
|
|
#
|
|
# ALTERNATIVE to define acronym entries via org tables; but problem
|
|
# with link hanging
|
|
#
|
|
# #+name: acronyms
|
|
# | label | abbreviation | full form |
|
|
# |-------+--------------+-----------------------------------|
|
|
# | mimo | | multiple-input multiple output |
|
|
# | qos | QoS | quality-of-service |
|
|
# | bb | BB | branch and bound |
|
|
# | api | API | Application Programming Interface |
|
|
|
|
** References
|
|
check regarding the style defined in the preamble
|
|
: biber --validate-datamodel <texfilebasename>
|
|
|
|
this only checks the bib with default style
|
|
: biber --tool --validate-datamodel <filename>.bib
|
|
|
|
Insert cite entry with (=C-c C-l=).
|
|
|
|
#+CAPTION: =org-ref-biblatex-types=
|
|
| Cite | basic citation with capitalization |
|
|
| parencite | similar to cite with parentheses |
|
|
| Parencite | similar to cite with parentheses and capitalization |
|
|
| footcite | Put the citation in a footnote |
|
|
| footcitetext | Put the citation in a footnote using =\footnotetext= |
|
|
| textcite | print the authors or editors as a subject of the sentence |
|
|
| Textcite | print the authors or editors as a subject of the sentence with capitalization |
|
|
| smartcite | like parencite in a footnote, and footcite in the body |
|
|
| Smartcite | like parencite in a footnote, and footcite in the body with capitalization |
|
|
| cite | "similar to cite, but prints the year or title |
|
|
| parencite | "similar to parencite, but prints the year or title |
|
|
| supercite | superscripted numeric citation (only in numberic styles) |
|
|
| autocite | handles some punctuation nuances |
|
|
| Autocite | handles some punctuation nuances with punctuation |
|
|
| autocite | "same as autocite but * is passed to the backend |
|
|
| Autocite | "same as Autocite but * is passed to the backend |
|
|
| citetitle | the shorttitle or title field |
|
|
| citetitle | "the full title |
|
|
| citeyear | the year field |
|
|
| citeyear | "the year field and extradate information if available |
|
|
| citedate | the full date or year |
|
|
| citedate | "the full date or year, including extradate information if available |
|
|
| citeurl | the url field |
|
|
| fullcite | create a full citation similar to what is in the bibliography |
|
|
| footfullcite | create a full citation as a footnote |
|
|
| notecite | print prenote and postnote, but no citation |
|
|
| Notecite | print prenote and postnote, but no citation with capitalization |
|
|
| pnotecite | similar to notecite with parentheses |
|
|
| Pnotecite | similar to Notecite with parentheses |
|
|
| fnotecite | similar to notecite in a footnote |
|
|
|
|
#+CAPTION: =org-ref-biblatex-multitypes=
|
|
#+ATTR_LATEX: :center nil :placement [H]
|
|
| cites | multicite version of cite |
|
|
| Cites | multicite version of Cite |
|
|
| parencites | multicite version of parencite |
|
|
| Parencites | multicite version of Parencite |
|
|
| footcites | multicite version of footcite |
|
|
| footcitetexts | multicite version of footcitetext |
|
|
| smartcites | multicite version of smartcite |
|
|
| Smartcites | multicite version of Smartcite |
|
|
| textcites | multicite version of textcite |
|
|
| Textcites | multicite version of Textcite |
|
|
| supercites | multicite version of supercite |
|
|
| autocites | multicite version of autocite |
|
|
| Autocites | multicite version of Autocite |
|
|
|
|
Example: See reference [[cite:manual]] (will be [1]) or [[cite:article]]
|
|
[[cite:book]] (will be [2,3]) and [[cite:article]] [[cite:book]] [[cite:manual]] (will
|
|
be [1-3]).
|
|
|
|
* LaTeX
|
|
Current setup uses the lualatex compiler.
|
|
|
|
packages
|
|
- general
|
|
- fontenc
|
|
- hyperref
|
|
- kpfonts
|
|
- luainputenc
|
|
- xurl
|
|
- text and glyphs
|
|
- eurosym
|
|
- menukeys
|
|
- xcolor
|
|
- math
|
|
- faktor
|
|
- madthds
|
|
- mathtools
|
|
- MnSymbol
|
|
- nicefrac
|
|
- SIunits
|
|
- xfrac
|
|
- lists
|
|
- enumitem
|
|
- tables, figures and listings
|
|
- float
|
|
- caption
|
|
- tables
|
|
- booktabs
|
|
- longtable
|
|
- numprint
|
|
- array
|
|
- figures
|
|
- svg
|
|
- tikz
|
|
- gnuplot-lua-tikz
|
|
- pgfplots
|
|
- listings
|
|
- listingsutf8
|
|
- glossaries
|
|
- pdf
|
|
- pdfpages
|
|
- pdflscape
|
|
|
|
* Examples
|
|
** Org table to data file
|
|
#+NAME: tbl-data
|
|
| 0 | 1 | 1 |
|
|
| 1 | 2 | 4 |
|
|
| 2 | 3 | 5 |
|
|
| 3 | 4 | 9 |
|
|
|
|
#+NAME: org-table-to-data-file
|
|
#+begin_src python :var data=tbl-data :results none
|
|
with open("data.dat", "w") as f:
|
|
f.write("\n".join([" ".join(list(map(str, i))) for i in data]))
|
|
#+end_src
|
|
|
|
** Data file to Org table
|
|
#+NAME: get-data-file
|
|
#+begin_src python
|
|
with open("data.dat", "r") as f:
|
|
data = f.read()
|
|
return data
|
|
#+end_src
|
|
|
|
#+RESULTS:
|
|
| 0 | 1 | 1 |
|
|
| 1 | 2 | 4 |
|
|
| 2 | 3 | 5 |
|
|
| 3 | 4 | 9 |
|