Org Mode Notes
Table of Contents
Plotting Data
- You need
gnuplotand thegnuplotemacs package installed - To plot the below example table from the manual use
C-c " g - This will open gnuplot and bring up an interactive graph
| Sede | Max cites | H-index |
|---|---|---|
| Chile | 257.72 | 21.39 |
| Leeds | 165.77 | 19.68 |
| Sao Paolo | 71.00 | 11.50 |
| Stockholm | 134.19 | 14.33 |
| Morelia | 257.56 | 17.67 |
Using Babel to Export Plots
- Worg: Org-babel-gnuplot
- Before this will work you need to enable
gnuplotin theorg-babel-load-languagesvariable
| x | y1 | y2 |
|---|---|---|
| 0 | 3 | 6 |
| 1 | 4 | 7 |
| 2 | 5 | 8 |
| 3 | 3 | 6 |
| 4 | 4 | 7 |
| 5 | 5 | 8 |
set title "Example Org Babel Plot"
set xlabel "X Axis"
set ylabel "Y Axis"
plot data using 1:2 with lp lw 2 title 'Series 1', \
data using 1:3 with lp lw 2 title 'Series 2'
Editing the Structure
C-c C->can be used to demote (add more stars) to an entire subtree- Similarly
C-c C-<can be use to promote an entire subtree
Publishing
- This section walks through how this org repository is published into an html site
Appearance
Pretty Entities
- You can toggle pretty entities with
org-toggle-pretty-entites - This will render ordinals and exponents using superscripts
- If enabled these should have superscripts, 1st and xy
- This is an example of superscript syntax,
x^{3}
Graphviz
- Worg: Dot Source Code Blocks in Org Mode
- Grapviz DOT Language Documentation
- Rene Nyffenegger: Graphviz Examples
- Graphviz is a tool that compiles graph descriptions in the
dotlanguage into images - Org mode ships with
dotlanguage support, it just needs to be enabled withorg-babel-load-languages - For an emacs major mode that supports graphviz use graphviz-dot-mode
- Graphviz has a new layout engines: dot, neato, fdp etc.
- To set the layout engine use
:cmd <LAYOUT_ENGINE>in the header args of a graphviz, for example:cmd neatowill use the neato layout engine - The differences between the layouts is documented here.
digraph {
a->b;
b->c;
c->b;
c->a;
}
LaTex
- To view the Embedded LaTex section of the manual execute:
(info "(org) Embedded LaTex")
- Worg: LaTex Source Code Blocks in Org Mode
- AucTeX is an Emacs major mode for editing LaTex
- You will need a texlive distribution (like
texlive-moston Arch Linux) installed on your system to access the LaTex programs - In order to export to SVG you need to have
inkscapeinstalled on your computer - Ensure that LaTex is added to the
org-babel-load-languages
Hello World
(a + b)^2 = a^2 +2ab + b^2
TikZ
PlantUML
Setup
- PlantUML: Integration with Emacs
- Install the
plantuml-modepackage from MELPA- With
straight.el(straight-use-package 'plantuml-mode)
- With
- Download the latest PlantUML jar file from the Github releases page
- Save it to a known location, for example
~/jars/plantuml-1.2022.1.jar - Set the emacs variable
org-plantuml-jar-pathto the location of the jar file
(setq org-plantuml-jar-path (expand-file-name "~/jars/plantuml-1.2022.1.jar"))
- Enable
plantumlin theorg-babel-load-languages
Example
- The example diagram was borrowed from: Github mattjhayes: PlantUML Examples
@startuml
skinparam shadowing false
title Class Diagram Example
skinparam class {
BackgroundColor #94de5e
ArrowColor #darkblue
BorderColor black
}
class Vehicle {
speed
direction
make
model
run()
}
class Car {
driver_name
road
run()
}
class Plane {
pilot_name
altitude
run()
}
class Ship {
captain_name
ocean
run()
}
Vehicle <|-- Car
Vehicle <|-- Plane : inherits
Vehicle <|-- Ship
legend
<size:18>Key</size>
|<#94de5e> Class |
endlegend
@enduml
Database Example
@startuml
!define primary_key(x) <b><color:#b8861b><&key></color> x</b>
!define foreign_key(x) <color:#aaaaaa><&key></color> x
!define column(x) <color:#efefef><&media-record></color> x
!define table(x) entity x << (T, white) >>
left to right direction
skinparam roundcorner 5
skinparam linetype ortho
skinparam shadowing false
skinparam handwritten false
skinparam class {
BackgroundColor white
ArrowColor #2688d4
BorderColor #2688d4
}
table( user ) {
primary_key( id ): UUID
column( isActive ): BOOLEAN
foreign_key( cityId ): INTEGER <<FK>>
}
table( city ) {
primary_key( id ): UUID
column( name ): CHARACTER VARYING
column( country ): CHARACTER VARYING
column( postCode ): INTEGER
}
user }|--|| city
@enduml