refcard-org-mode

by fniessen

Org mode syntax reference card

469 Stars 79 Forks Last release: Not found 24 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

+TITLE: Org mode syntax

+SUBTITLE: Quick reference card

+AUTHOR: Fabrice Niessen

+EMAIL: (concat "fniessen" at-sign "pirilampo.org")

+DESCRIPTION: Org mode syntax example

+KEYWORDS: org-mode, syntax, quick reference, cheat sheet, recommended practices, latex, beamer, html

+LANGUAGE: en

+OPTIONS: H:4 num:nil toc:2 p:t

+HTMLLINKHOME: http://www.google.com

+HTMLLINKUP: http://www.bing.com

+SETUPFILE: ~/.dotfiles/org/theme-readtheorg.setup

+PROPERTY: header-args :eval yes :exports both :results replace

#+MACRO: longtext this is a very very long text to include

| Framework | Org mode 9 | | Bug tracker | https://github.com/fniessen/refcard-org-mode/issues | | Source | https://github.com/fniessen/refcard-org-mode |

| Documentation | http://refcard-org-mode.readthedocs.org/ |

  • Summary

See https://tutorialtodoapp.readthedocs.org/en/latest/ for nice home page!

+begin_sidebar

You will learn to:

  • write your docs in Org mode
  • create tables
  • create custom code blocks
  • and much more! #+end_sidebar

+begin_abstract

This is an Org mode document, using the ~.org~ extension (supported by GitHub).

Org mode is an easy-to-write /plain text/ formatting syntax for authoring notes, articles, LaTeX documents, books, Web pages, Beamer slide decks and much more!

This is a cheat sheet for Org mode 8 (because of some markup syntax changes since Org mode 7), using [[https://github.com/fniessen/org-html-themes][ReadTheOrg CSS]].

Reading through all the [[http://orgmode.org/org.pdf][documentation]] is highly recommended, but for the truly impatient, following are some quick steps to get started.

+end_abstract

#+begin_abstract

This paper talks about...

#+end_abstract

See http://asciidoctor.org/docs/user-manual/#the-big-picture

See http://home.fnal.gov/~neilsen/notebook/orgExamples/org-examples.html.

  • Reference card

+TOC: headlines 2

  • Document header

Title and author line:

+begin_src org :eval never-export

,#+TITLE: Org mode syntax examples ,#+AUTHOR: Fabrice Niessen

My document provides...

+end_src

It's a good practice to also include an email line following the author line.

+begin_src org :eval never-export

,#+EMAIL: [email protected]

+end_src

  • Document settings

** Document description

+begin_src org :eval never-export

+DESCRIPTION: This document catalogs a set of tips and tricks for composing documents in Org mode.

+KEYWORDS: org-mode, syntax, quick reference, cheat sheet, recommended practices, latex, beamer, html

+LANGUAGE: en

+end_src

** Section numbering

+begin_src org :eval never-export

+OPTIONS: H:4

+end_src

+begin_src org :eval never-export

+OPTIONS: num:nil

+end_src

** Table of contents

Set the ~toc~ attribute to activate an auto-generated table of contents (limited to its 2 first levels) at the top of document.

+begin_src org :eval never-export

+OPTIONS: toc:2

+end_src

+begin_src org :eval never-export

+OPTIONS: p:t

+end_src

+begin_note

The ~ALT_TITLE~ property allows to set an alternate title (shorter, for example) for a given headline in the table of contents and other running heads.

+end_note

To locally insert the TOC at some random place, use the ~#+TOC: headlines [n]~ feature; for example:

+begin_src org :eval never-export

,#+TOC: headlines 2

+end_src

** List of figures

~#+TOC: figures~ is not implemented yet in the HTML backend.

** List of tables

~#+TOC: tables~ is already implemented in the HTML backend.

** List of equations

  • Section titles (headings)

+begin_src org :eval no

,* Biggest heading (level 1)

New chapter.

+end_src

+begin_src org

,** Bigger heading (level 2)

New section.

,*** Big heading (level 3)

New sub-section.

,**** Heading (level 4)

New sub-sub-section.

+end_src

** Numbered headings

You can create numbered headings up to a certain level by setting an option:

+begin_src org

,#+OPTIONS: H:4

+end_src

  • Paragraphs

** Normal

+begin_src org

A single newline has no effect. This line is part of the same paragraph.

But an empty line

demarcates paragraphs.

+end_src

** Line breaks

+begin_src org

By entering two consecutive backslashes, \ you can force a line break without starting a new paragraph.

+end_src

** Horizontal rules

+begin_src org

For an horizontal line, insert at least 5 dashes: this is some text above an

horizontal rule

and some text below it.

+end_src

** Text width

Premiere Elements, page 111

Vous pouvez créer ces objets en cliquant sur le bouton Nouvel| élément de le

fenêtre Média. (Le Chapitre 14 explique comment créer| des titres ; le

Chapitre 15 montre l'utilisation des barres et ton, de la| vidéo noir et de

l'amorce SMPTE.)

The principles of beautiful Web design, page 6

In a figurative sense, the concept of visual balance is similar to that of

physical balance| illustrated by a seesaw. Just as physical objects have

weight, so do the elements of a layout.| If the elements on either side of a

layout are of equal weight, they balance one another.| There are two main forms

of visual balance: symmetrical and asymmetrical.

One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment. His many legs, pitifully thin compared with the size of the rest of him, waved about helplessly as he looked.

  • Formatting text

Text effects.

** Bold and italic

+begin_src org

/Emphasize/ (italics), strongly (bold), and /very strongly/ (bold italics).

+end_src

Markup elements can be nested:

+begin_src org

This is /italic text which contains underlined text within it/, whereas this is normal underlined text.

+end_src

Markup can span across multiple lines, by default no more than 2:

+begin_src org

This is not bold.

+end_src

Org mode does not interpret a marker surrounded by alphanumeric characters as an emphasis marker. So, you can't (easily) emphasize just part of a word:

+begin_src org

Not feasible.

+end_src

** Monospace, superscript and subscript

Other elements to use sparingly are:

+begin_src org

  • monospaced typewriter font for ~inline code~
  • monospaced typewriter font for =verbatim text=
  • +deleted text+ (vs. inserted text)
  • text with super^{script}, such as 2^{10}
  • text with sub{script}, such as H{2}O #+end_src

** Smart punctuation

If the XXX option is specified, Org mode will produce typographically correct output, converting straight quotes to curly quotes, ~---~ to em-dashes, ~--~ to en-dashes, and ~...~ to ellipses.

  • Lists

Org markup allows you to create bulleted or numbered lists. It allows any combination of the two list types.

** Unordered lists

Itemized lists are marked with bullets. Create them with a minus or a plus sign.

They are convenient to organize data, and make the document prettier, and easier to read.

+begin_src org

  • Item with some lengthy text wrapping hopefully across several lines. We add a few words to really show the line wrapping.
  • Bullet.
    • Bullet.
    • Bullet. #+end_src

** Checklists

+begin_src org

  • [X] Checked.
  • [-] Half-checked.
  • [ ] Not checked.
  • Normal list item. #+end_src

** Ordered lists

Enumerated lists are marked with numbers or letters:

+begin_src org

  1. Arabic (decimal) numbered list item. We add a few words to show the line wrapping. A. Upper case alpha (letter) numbered list item. a. Lower alpha. b. Lower alpha. B. Upper alpha.
  2. Number. #+end_src

You can have ordered lists with jumping numbers:

+begin_src org

  1. [@2] We start with point number 2.
  2. Automatically numbered item. #+end_src

** Definition lists :PROPERTIES: :ID: f1a4a242-755b-4c38-9280-ee3f60e2b29a :END:

Labeled, multi-line lists.

+begin_src org

  • First term to define :: Definition of the first term. We add a few words to show the line wrapping, to see what happens when you have long lines.

  • Second term :: Explication of the second term with inline markup.

    In many paragraphs.

    +end_src

** Separating lists

Adjacent lists sometimes like to fuse. To force the start of a new list, offset the two lists by an empty line comment:

+begin_src org

  • apples
  • oranges
  • bananas

Comment.

  • carrots
  • tomatoes
  • celery

    +end_src

  • Tables

Tables are one of the most refined areas of the Org mode syntax. They are very easy to create and to read.

** Simple table

+begin_src org

| Cell in column 1, row 1 | Cell in column 2, row 1 | | Cell in column 1, row 2 | Cell in column 2, row 2 |

+end_src

Org tables have cells of at most one line long: there is no such thing as a multi-line table cell in Org.

** Column formatting

Columns are automatically aligned:

  • Number-rich columns to the right, and
  • String-rich columns to the left.

*** Table with aligned cells

If you want to override the automatic alignment, use ~~, ~~ or ~~.

+begin_src org

,#+CAPTION: Table with aligned columns | | | | | 1 | 2 | 3 | | Right | Center | Left | | xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |

+end_src

*** Table with column size adjusted

** Header row

You can create tables with an header row (by using an horizontal line of dashes to separate it from the rest of the table).

+begin_src org

+CAPTION: Table with an header row

| Name of column 1 | Name of column 2 | Name of column 3 | |------------------+------------------+------------------| | Top left | Top middle | | | | | Right | | Bottom left | Bottom middle | |

+end_src

** A very long table

To test "sticky table headers"...

| Name of column 1 | Name of column 2 | Name of column 3 | |------------------+------------------+------------------| | Top left | Top middle | | | 2 | | | | 3 | | | | 4 | | | | 5 | | | | 6 | | | | 7 | | | | 8 | | | | 9 | | | | 10 | | | | 11 | | | | 12 | | | | 13 | | | | 14 | | | | 15 | | Right | | 16 | | | | 17 | | | | 18 | | | | 19 | | | | 20 | | | | 21 | | | | 22 | | | | 23 | | | | 24 | | | | 25 | | | | 26 | | | | 27 | | | | 28 | | | | 29 | | | | Bottom left | Bottom middle | |

** Table placement

+begin_src org

+ATTR_LATEX: :center nil

| a | b | | 1 | 2 |

+end_src

XXX Different from the following:

+begin_src org

| a | b | | 1 | 2 |

+end_src

** Align tables on the page

*** Left

Here is a table on the left side:

+begin_src org

,#+LATEX: \noindent ,#+ATTR_LATEX: :center nil | a | b | c | |---+---+---| | 1 | 2 | 3 | | 4 | 5 | 6 | ,#+LATEX: \hfill

+end_src

The ~noindent~ just gets rid of the indentation of the first line of a paragraph which in this case is the table. The ~hfill~ adds infinite stretch after the table, so it pushes the table to the left.

*** Center

Here is a centered table:

+begin_src org

| a | b | c | |---+---+---| | 1 | 2 | 3 | | 4 | 5 | 6 |

+end_src

*** Right

And here's a table on the right side:

+begin_src org

+LATEX: \hfill

+ATTR_LATEX: :center nil

| a | b | c | |---+---+---| | 1 | 2 | 3 | | 4 | 5 | 6 |

+end_src

Here the ~hfill~ adds infinite stretch before the table, so it pushes the table to the right.

** Table size

+begin_src org

+ATTR_HTML: :width 100%

| Cell in column 1, row 1 | Cell in column 2, row 1 | | Cell in column 1, row 2 | Cell in column 2, row 2 |

+end_src

** CSV

You can fill a table from a CSV file using R commands.

  • Links :PROPERTIES: :CUSTOM_ID: links :END:

+begin_src org :eval no

,* Links :PROPERTIES: :CUSTOM_ID: links :END:

+end_src

This document is available in [[file:README.org][plain text]], [[file:README.html][HTML]] and [[file:README.pdf][PDF]].

The links are delimited by double square brackets.

** External links

+begin_src org

See http://www.pirilampo.org (automatic!) and the [[http://orgmode.org/][Org mode Web site]].

+end_src

*** Relative links

+begin_src org

[[../README.html][Home]]

+end_src

*** Email links

+begin_src org

[[mailto:[email protected]][email John Doe]]

+end_src

*** Image links

To get image links, put a link to a file in the description.

+begin_src org

Clicking on the image [[http://orgmode.org/][file:images/org-mode-unicorn.png]] leads to the Org mode home page.

+end_src

** Internal links :PROPERTIES: :ID: 0d2b0cb2-116c-4a61-a076-4c641faf4346 :END:

*** Inline anchors

Anchors are used to specify hypertext link targets.

+begin_src org

<> Inline anchors make arbitrary content referenceable.

+end_src

*** Internal cross references

Links generally point to an headline.

+begin_src org

See chapter [[#links][Links]].

+end_src

To add a link to a figure (e.g., "See Figure 1"), just do:

+begin_src org

,#+name: fig ,#+caption: caption [[file:fig.png]]

See figure [[fig]].

+end_src

You can also create a hypertext link to a document anchor in the current document /or in another document/.

+begin_src org

See: - Location [[anchor][cross reference]]. - Section [[id:0d2b0cb2-116c-4a61-a076-4c641faf4346][Internal links]]

+end_src

** Extensions that define new hyperlinks targets

  • Images

You can insert image files of different formats to a document:

| | HTML | PDF | |------+------------------------------+-----| | gif | yes | | | jpeg | yes | | | png | yes | | | bmp | (depends on browser support) | |

** Inline picture

+begin_src org

+caption: Org mode logo

[[file:images/org-mode-unicorn.png]]

+end_src

+begin_src org

Click to see the [[file:images/org-mode-unicorn.png][Unicorn picture]].

+end_src

** Image alignment (using positioning)

Books usually align/float images on the right/left of the contents.

*** Image is left aligned

*** Image is right aligned

*** Image is centered

+name: test

+begin_src R :exports results :file-ext pdf :results graphics :width 8 :height 3

plot(runif(100))

+end_src

+attr_latex: :float t :placement [b]

+results: test

[[file:test.pdf]]

** Image attributes and values

XXX Available HTML image tags include ...

| Attribute | Value(s) | |----------------+-----------------------------| | ~:alt~ | Alternate text | | ~:height~ | | | ~:width~ | User defined size in pixels | | ~:align~ | | | ~:border~ | | | ~:bordercolor~ | | | ~:hspace~ | | | ~:vspace~ | | | ~:title~ | User defined text |

+begin_src org

+ATTR_LaTeX: :width 0.25\linewidth

[[file:images/org-mode-unicorn.png]]

+end_src

Place images side by side: XXX

** Figures

To define images that will be treated as book illustrations (figures) and automatically labeled and numbered, use XXX.

  • Videos

Videos can't be added directly.

Though, you can add an image with a link to the video like this:

+begin_src org

[[http://www.youtube.com/watch?v=DnSGSiXYuOk][file:../bigblow.png]]

+end_src

  • Admonitions

Admonitions (contextual backgrounds) are statements taken out of the content's flow and labeled with a title.

Common admonitions are:

  1. ~note~
  2. ~warning~
  3. ~tip~
  4. ~caution~
  5. ~important~

(Most themes style only ~note~ and ~warning~ specially.)

** List of supported admonitions :noexport:

| Total | | docutils | rST | RTD | AsciiDoc | DocBook | MoinMoin (Modern) | Bootstrap | DocOnce | Confluence | SuperCollider | |--------+-----------+----------+-----+-----+----------+---------+-------------------+-----------+---------+------------+---------------| | 7 | note | 1 | 1 | 1 | 1 | 1 | 1 | | | 1 | 1 | | 9 | warning | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 7 | tip | 1 | 1 | 1 | 1 | 1 | 1 | | | 1 | | |--------+-----------+----------+-----+-----+----------+---------+-------------------+-----------+---------+------------+---------------| | 6 | caution | 1 | 1 | 1 | 1 | 1 | 1 | | | | | | 6 | important | 1 | 1 | 1 | 1 | 1 | 1 | | | | | |--------+-----------+----------+-----+-----+----------+---------+-------------------+-----------+---------+------------+---------------| | 3 | attention | 1 | 1 | 1 | | | | | | | | | 3 | hint | 1 | 1 | 1 | | | | | | | | | 3 | error | 1 | 1 | 1 | | | | | | | | | 4 | danger | 1 | 1 | 1 | | | | 1 | | | | |--------+-----------+----------+-----+-----+----------+---------+-------------------+-----------+---------+------------+---------------| | #ERROR | seealso | | | ? | | | | | | | | | #ERROR | todo | | | ? | | | | | | | | |--------+-----------+----------+-----+-----+----------+---------+-------------------+-----------+---------+------------+---------------| | 2 | info | | | | | | | 1 | | 1 | | | 1 | notice | | | | | | | | 1 | | | | 1 | question | | | | | | | | 1 | | | | 1 | summary | | | | | | | | 1 | | | | 1 | success | | | | | | | 1 | | | |

+TBLFM: $1=vsum($3..$11)

** Base admonitions

*** Note

A note box is displayed as follows:

+begin_src org

,#+beginnote This is a useful note. ,#+endnote

+end_src

#+attr_html: :options [By the way...]

#+attr_latex: :options Test

#+begin_note

This is a useful note (with a title).

#+end_note

*** Warning

A warning box is displayed as follows:

+begin_src org

,#+beginwarning Be careful! Check that you have... ,#+endwarning

+end_src

*** Tip

A tip box is displayed as follows:

+begin_src org

,#+begintip Try doing it this way... ,#+endtip

+end_src

*** Caution

+begin_src org

,#+begincaution Caution ,#+endcaution

+end_src

*** Important

+begin_src org

,#+beginimportant Important ,#+endimportant

+end_src

** Additional admonitions

*** Attention

+begin_src org

,#+beginattention Attention ,#+endattention

+end_src

*** Hint

+begin_src org

,#+beginhint Hint ,#+endhint

+end_src

*** Error

+begin_src org

,#+beginerror Error ,#+enderror

+end_src

*** Danger

+begin_src org

,#+begindanger Danger ,#+enddanger

+end_src

*** SeeAlso (Sphinx additional)

+begin_src org

,#+beginseealso - [[http://en.wikipedia.org/wiki/Apple][Apples]] :: A kind of [[http://en.wikipedia.org/wiki/Fruit][fruit]]. ,#+endseealso

+end_src

** Todo admonition

See example at http://docs.ckan.org/en/latest/contributing/python.html

or http://wsgiservice.readthedocs.org/en/latest/todo.html

Simple box ("inline task"):

+begin_src org

*************** TODO Do this task Description of inline task. *************** END

+end_src

*************** TODO Do this task Description of inline task. *************** END or:

+begin_src org

*************** WAIT [#B] Do also this other task :phone: *************** END

+end_src

+begin_admonitiontodo

Admonitiontodo

+end_admonitiontodo

Alternatively to the inline tasks (for creating "TODO" annotations), if you want such notes not to show up in the published version, drawers may also do the job, e.g.:

:FIXME: ... :END:

You can then control what drawers are exported with ~org-export-with-drawers~ (or per document with d OPTIONS item).

  • Centered text

+begin_src org

,#+beginleft This text is \ aligned to the left! ,#+endleft

,#+begincenter This text is \ centered! ,#+endcenter

,#+beginright This text is \ aligned to the right! ,#+endright

+end_src

  • Sidebar

+begin_src org

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 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.

,#+beginsidebar Org mode was first released by Carsten Dominik in 2004 as an outlining and project planning tool. Further development turned it into a general tool that can be used to author professional documents like LaTeX. ,#+endsidebar

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi...

Phasellus ut libero. Nulla in libero non enim tristique sollicitudin. Ut tempor. Phasellus pellentesque augue eget ante. Mauris malesuada. Donec sit amet diam sit amet dolor placerat blandit. Morbi enim purus, imperdiet in, molestie sit amet, pellentesque eu, mauris. In vel erat vel ipsum bibendum commodo. Curabitur accumsan. Nam sed metus. Etiam tristique bibendum justo.

+end_src

  • Example

You can have ~example~ blocks.

+begin_src org

: 10/17/97 9:04

bin : 10/16/97 14:11 DOS : 10/16/97 14:46 TEMP : 10/16/97 14:37 WINNT : 10/16/97 14:25 119 AUTOEXEC.BAT : 2/13/94 6:21 54,619 COMMAND.COM

+end_src

or

+begin_src org

,#+beginexample 10/17/97 9:04

bin 10/16/97 14:11 DOS 10/16/97 14:46 TEMP 10/16/97 14:37 WINNT 10/16/97 14:25 119 AUTOEXEC.BAT 2/13/94 6:21 54,619 COMMAND.COM ,#+end example

+end_src

  • Prose excerpts

** Quote

Use the ~quote~ block for content that doesn't require the preservation of line breaks.

+begin_src org

,#+begin_quote Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.

The practitioner of literate programming can be regarded as an essayist, whose main concern is with exposition and excellence of style. Such an author, with thesaurus in hand, chooses the names of variables carefully and explains what each variable means. He or she strives for a program that is comprehensible because its concepts have been introduced in an order that is best for human understanding, using a mixture of formal and informal methods that reinforce each other.

-- Donald Knuth ,#+end_quote

+end_src

A short one:

+begin_src org

,#+beginquote Everything should be made as simple as possible, but not any simpler. -- Albert Einstein ,#+endquote

+end_src

** Verse

In a ~verse~ environment, there is an implicit line break at the end of each line, and indentation is preserved:

+begin_src org

,#+beginverse Everything should be made as simple as possible, but not any simpler. -- Albert Einstein ,#+endverse

+end_src

Typically used for quoting passages of an email message:

+begin_src org

,#+begin_verse

The meeting has been postponed to next Friday.

Has the deadline for the report been moved too?

Yes. And chekout http://www.doodle.com/ for rescheduling the meeting.

In the text body, indentation is preserved. ,#+end_verse

+end_src

** Block quote with optional attribution line

+begin_epigraph

epigraph

+end_epigraph

** Block quotes with their own class attribute

+begin_highlights

highlights

+end_highlights

+begin_pull-quote

pull-quote

+end_pull-quote

+begin_blockquote

Blockquote

+end_blockquote

** Non-breaking space

Insert the Unicode character ~00A0~ to add a non-breaking space.

FIXME Or add/use an Org entity? Or use tilde?

  • Comments

+begin_src org

It's possible to add comments in the document.

This Org comment here won't be displayed.

+end_src

+begin_note

Org doesn't support comments inside paragraphs since a comment ends a paragraph. However, you can mimic inline comments with export snippets, e.g., [email protected]@comment:[email protected]@~.

+end_note

+begin_tip

If you have tables (for example) that you want to ignore during export, one possibility is to use comment blocks or ~:noexport:~ subtrees. Another possibility is to use non-exported drawers (see #+OPTIONS: d:).

+end_tip

If you want to ignore that part only during export, but still want to use keep it active in the buffer, I suggest to use a drawer, with an appropriate `org-export-with-drawers' value, e.g.,

+begin_src org

,#+OPTIONS: d:(not "NOEXPORT")

+end_src

  • Substitutions

** General replacements

+begin_src org :eval no

,#+MACRO: longtext this very very long text

Insert {{{longtext}}} wherever required.

+end_src

+MACRO: longtext this very very long text

Insert {{{longtext}}} wherever required.

** Styled references

+BEGIN_SRC org :eval no

,#+MACRO: color @@html:$2@@

{{{color(blue, This text is colored in blue.)}}}

{{{color(red, This other text is in red.)}}}

+END_SRC

+MACRO: color @@html:$2@@

{{{color(blue, This text is colored in blue.)}}}

{{{color(red, This other text is in red.)}}}

Find more macros on [[https://github.com/fniessen/org-macros][GitHub]].

** Special characters

We also use substitutions to include some of the widely used Unicode characters (like ©, converted from text characters to its typographically correct entity).

*** Accents

+begin_src org

  • \Agrave \Aacute #+end_src

*** Punctuation

+begin_src org

  • Dash: \ndash \mdash
  • Marks: \iexcl \iquest
  • Quotations: \laquo \raquo
  • Miscellaneous: \para \ordf #+end_src

*** Commercial symbols

+begin_src org

  • Property marks: \copy \reg
  • Currency: \cent \EUR \yen \pound #+end_src

*** Greek characters

+begin_src org

The Greek letters \alpha, \beta, and \gamma are used to denote angles.

+end_src

*** Math characters

+begin_src org

  • Science: \pm \div
  • Arrows: \to \rarr \larr \harr \rArr \lArr \hArr
  • Function names: \arccos \cos
  • Signs and symbols: \bull \star #+end_src

*** Misc

+begin_src org

  • Zero-width non-joiner: \zwnj # Smilies: \smiley \sad
  • Suits: \clubs \spades #+end_src

+begin_note

You can insert a real "zero-width space" Unicode character by pressing ~C-x 8 RET zero width space RET~ or ~C-x 8 RET 200b RET~.

+end_note

  • Source code

** Inline code

+begin_src org

Reference code like ~variables~ or ~functions~ inline.

+end_src

You can also evaluate code inline as follows: 1 + 1 is src_R{1 + 1}.

** Code blocks (with syntax highlighting)

The source code blocks support syntax highlighting:

+begin_src cpp :eval no

/* * Application that displays a "Hello" message to the standard output. / int main(int arc, char *argv) { printf("Hello, %s!\n", (argc>1) ? argv[1] : "World"); return 0; }

+end_src

+begin_src emacs-lisp :eval no

(defvar hello "Hello")

(defun hello (name &optional greeting) (message "%s %s" (or greeting "Hello") name))

(setq tab-width 4)

+end_src

See http://sphinxcontrib-emacs.readthedocs.org/en/latest/guide/domain.html

+begin_note

You need =htmlize.el= in your ~load-path~, for the HTML export.

+end_note

** Source mode

The following language strings are currently recognized:

+begin_src emacs-lisp :results drawer :exports results

(concat (mapconcat (lambda (widget) (widget-get widget :tag)) (cl-remove-if-not (lambda (it) (and (consp it) (eq (car it) 'const))) (cdr (widget-get (get 'org-babel-load-languages 'custom-type) :key-type))) ", ") ".")

+end_src

+results:

:RESULTS: Awk, C, R, Asymptote, Calc, Clojure, CSS, Ditaa, Dot, Emacs Lisp, Fortran, Gnuplot, Haskell, IO, J, Java, Javascript, LaTeX, Ledger, Lilypond, Lisp, Makefile, Maxima, Matlab, Mscgen, Ocaml, Octave, Org, Perl, Pico Lisp, PlantUML, Python, Ruby, Sass, Scala, Scheme, Screen, Shell Script, Shen, Sql, Sqlite, ebnf2ps. :END:

** Line break

Code block with long lines:

+begin_src emacs-lisp :eval no

testing testing testing testing testing testing testing testing testing testing 0 1 2 3 4 5 6 7 8 9 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456

+end_src

For PDF (LaTeX), one solution is to surround the code block such as:

+latex: \scriptsize

+begin_src R

print("This block is in scriptsize")

+end_src

+latex: \normalsize

** Line numbers

Both in ~example~ and in ~src~ snippets, you can add a ~-n~ switch to the end of the ~begin~ line to get the lines numbered:

+header: :eval no

+begin_src emacs-lisp -n

(defun org-xor (a b) "Exclusive or."

+end_src

If you use a ~+n~ switch, the numbering from the previous numbered snippet will be continued in the current one:

+header: :eval no

+begin_src emacs-lisp +n

(if a (not b) b))

+end_src

** Callouts

In literal examples, Org will interpret strings like ~(ref:name)~ as labels, and use them as targets for special hyperlinks like ~[[(name)]]~ (i.e., the reference name enclosed in single parenthesis). In HTML, hovering the mouse over such a link will remote-highlight the corresponding code line, which is kind of cool.

You can also add a ~-r~ switch which removes the labels from the source code. With the ~-n~ switch, links to these references will be labeled by the line numbers from the code listing, otherwise links will use the labels with no parentheses. Here is an example:

+header: :eval no

+begin_src emacs-lisp -n -r

(save-excursion ; (ref:sc) (goto-char (point-min))) ; (ref:jump)

+end_src

In line [[(sc)]], we remember the current position. [[(jump)][Line (jump)]] jumps to ~point-min~.

  • Math

You can embed LaTeX math formatting in Org mode files.

** Inline math expressions

For inline math expressions, use the parentheses notation ~(...)~:

+begin_src org

The formula (a^2 + b^2 = c^2) has been discovered by Pythagoras.

Let (a=\sin(x) + \cos(x)). Then (a^2 = 2\sin(x)\cos(x)) because (\sin^2x + \cos^2x = 1).

+end_src

+begin_warning

It's /not/ advised to use the ~$...$~ construct (both for Org and for MathJax).

Don't forget that ~$~ is also a valid currency symbol!

+end_warning

** Math expressions in display mode

For mathematical expressions which you want to make stand out, centered on their own lines, use ~[...]~:

+begin_src org

The /Euler theorem/:

[ \int_0^\infty e^{-x^2} dx = {{\sqrt{\pi}} \over {2}} ]

LaTeX allows to inline such ~[...]~ constructs (/quadratic formula/): [ \frac{-b \pm \sqrt{b^2 - 4 a c}}{2a} ]

+end_src

+begin_warning

Double dollar signs (~$$~) should not be used.

+end_warning

+begin_src org

[ \left( \int{0}^{\infty} \frac{\sin x}{\sqrt x}\,\mathrm{d}x \ right)^{2} - \prod{k=1}^{\infty} \frac{4k^{2}}{4k^{2}-1} + \frac{\lambda}{2n}\sum{k=1} ^{n} \theta{k} ^{2} x^{n} = 0 ]

+end_src

The equation may be wrong, but it's a nice one!

** Equation numbers

Differently from ~$...$~ and ~(...)~, an equation environment produces a numbered equation to which you can add a label and reference the equation by (label) name in other parts of the text. This is not possibly with unnumbered math environments (~$$~, ...).

+begin_src org

The /Pythagoras theorem/:

,#+name: pythag \begin{equation} a^2 + b^2 = c^2 \end{equation}

See equation [[pythag]].

The /sinus theorem/ can be written as the equation:

\begin{equation}

\label{eqn:sinalpha}

\frac{\sin\alpha}{a}=\frac{\sin\beta}{b}

\end{equation}

See equation [[eqn:sinalpha]].

+end_src

Only captioned equations are numbered.

Other alternatives: use - ~\begin{equation*}~ or - ~\begin{displaymath}~ (= the verbose form of the ~[...]~ construct).

~M-q~ does not fill those.

  • Miscellaneous effects

** Include Org files

You can include another Org file and skip its title by using the ~:lines~ argument to ~#+INCLUDE~:

+begin_src org

,#+INCLUDE: "chapter1.org" :lines "2-"

+end_src

+begin_note

File inclusion, through INCLUDE keywords, is an export-only feature.

+end_note

** Raw HTML

http://johnmacfarlane.net/pandoc/README.html

You can include raw HTML in your Org documents and it will get kept as HTML when it's exported.

+HTML_BEGIN:

Text can be preformatted (in a fixed-width font).

+HTML_END:

It is especially useful for more advanced stuff like images or tables where you need more control of the HTML options than Org mode actually gives you.

Similarly, you can incorporate JS or do anything else you can do in a Web page (such as importing a CSS file).

*** Native DIV blocks

You can create named classes (to get style control from your CSS) with:

+begin_example

,#+beginmyclass This text is wrapped in a myclass DIV... ,#+endmyclass

+end_example

You can also add interactive elements to the HTML such as interactive R plots.

Finally, you can include an HTML file verbatim (during export) with:

+begin_src org

,#+INCLUDE: "file.html" export html

+end_src

Don't edit the exported HTML file!

** Raw LaTeX

You can also use raw LaTeX. XXX

+LaTeX_BEGIN: \begin{verbatim}

Text can be preformatted (in a fixed-width font).

+LaTeX_END: \end{verbatim}

  • Footnotes 

+begin_src org

It is possible to define named footnotes[fn:myfootnote], or ones with automatic anchors[fn:2].

+end_src

+results:

It is possible to define named footnotes[fn:myfootnote], or ones with automatic anchors[fn:2].

  • Useful extensions

** Todo extension

*** Dates

Timestamps: [2014-01-16 Thu] and <2014-01-16 Thu>.

*** TODO We need to achieve...

*** DONE [#A] Buy GTD book :online: :LOGBOOK: - State "TODO" -> "DONE" [2014-01-16 Thu 09:52] :END:

By default, ~DONE~ actions will be collapsed.

Note that I should probably implement that default behavior only for ~ARCHIVE~'d items.

*** TODO [#A] Read GTD book SCHEDULED: <2014-09-11 Thu>

By default, all (active) entries will be expanded at page load, so that their contents is visible.

That can be changed by adding such a line (into your Org document):

+begin_src org :eval no

,#+HTMLHEAD:

+end_src

*** TODO [#B] Apply GTD methodoloy DEADLINE: <2014-12-01 Mon> :PROPERTIES: :HTMLCONTAINERCLASS: hsCollapsed :END:

This section will be collapsed when loading the page because the entry has the value ~hsCollapsed~ for the property ~:HTMLCONTAINERCLASS:~.

Powerful, no?

*** Some note :computer:write:

You can add tags to any entry, and hightlight all entries having some specific tag by clicking on the buttons made accessible to you in the "Dashboard".

*** Weekly review :computer:

Now, you can even make your weekly review in the HTML export... Press the ~r~ key to start entering the "review mode" where all but one active entry are collapsed, so that you can really focus on one item at a time!

** Bigblow extension

The string ~fixme~ (in upper case) gets replaced by a "Fix Me!" image:

+begin_src org

FIXME Delete this...

+end_src

  • Graphs with Graphviz

To enable the Graphviz extension, we have to add it to the extensions list in the ~org-babel-load-languages~ variable.

+begin_src emacs-lisp :exports code

(add-to-list 'org-babel-load-languages '(dot . t)) (org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages)

+end_src

It uses directly the ~dot~ command to process DOT language.

** Undirected

+begin_src org

,#+beginsrc dot :file images/graph.png :cmdline -Tpng graph foo { "bar" -- "baz"; } ,#+endsrc

+end_src

** Directed

+begin_src org :exports results

,#+beginsrc dot :file images/digraph.png :cmdline -Tpng digraph foo { "bar" -> "baz"; } ,#+endsrc

+end_src

  • Graphs with R

The output from the execution of programs, scripts or commands can be inserted in the document itself, allowing you to work in the /reproducible research/ mindset.

To enable the Graphviz extension, we have to add it to the extensions list in the ~org-babel-load-languages~ variable.

+begin_src emacs-lisp :exports code

(add-to-list 'org-babel-load-languages '(R . t)) ; Requires R and ess-mode. (org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages)

+end_src

It uses directly the ~R~ command to process R language.

** Example

Data to be charted:

+name: data

| Month | Degrees | |-------+---------| | 01 | 3.8 | | 02 | 4.1 | | 03 | 6.3 | | 04 | 9.0 | | 05 | 11.9 | | 06 | 15.1 | | 07 | 17.1 | | 08 | 17.4 | | 09 | 15.7 | | 10 | 11.8 | | 11 | 7.7 | | 12 | 4.8 |

Code:

+name: R-plot

+begin_src R :var data=data :results graphics :file images/Rplot.png :exports both

plot(data, type="b", bty="l", col=c("#ABD249"), las=1, lwd=4) grid(nx=NULL, ny=NULL, col=c("#E8E8E8"), lwd=1) legend("bottom", legend=c("Degrees"), col=c("#ABD249"), pch=c(19))

+end_src

The resulting chart:

+results: R-plot

[[file:images/Rplot.png]]

** COMMENT ggplot2

+begin_src R :results output graphics :file foo.png :session foo

library(ggplot2) ggplot(data.frame(x = rnorm(10), y = rnorm(10)), aes(x = x, y = y)) + geom_point()

+end_src

  • Citations

Cross-referenced to bibliography.

  • Appendix

Special sections.

** Index

Index (or list of acronyms).

  • Write index entries

+index: Org-mode

Note that multi-entry terms generate separate index entries.

+index: Definitions!Org-mode

  • Place the index at the desired location

  • Produce the index by updating ~org-latex-pdf-process~

+BIND: org-latex-pdf-process ("pdflatex %b" "bibtex %b" "pdflatex %b" "pdflatex %b")

** Bibliography

The bibliography...

  • Eric Steven Raymond. The Art of Unix Programming. Addison-Wesley. ISBN 0-13-142901-9.

http://rmarkdown.rstudio.com/authoringbibliographiesand_citations.html

** Glossary

Glossaries are optional. Glossaries entries are an example of [[id:f1a4a242-755b-4c38-9280-ee3f60e2b29a][definition lists]].

  • A glossary term :: The corresponding (indented) definition.

  • A second glossary term :: The corresponding (indented) definition.

  • Contributing

** Issues

Report issues and suggest features and improvements on the [[https://github.com/fniessen/refcard-org-mode/issues/new][GitHub issue tracker]].

** Patches

I love contributions! Patches under any form are always welcome!

** Donations

If you use the refcard-org-mode project and feel it is making your life better and easier, you can show your appreciation and help support future development by making a [[https://www.paypal.com/cgi-bin/webscr?cmd=donations&business=VCVAS6KPDQ4JC&lc=BE&itemnumber=refcard%2dorg%2dmode&currencycode=EUR&bn=PP%2dDonationsBF%3abtndonate_LG%2egif%3aNonHosted][donation]] through PayPal. Thank you!

Regardless of the donations, refcard-org-mode will always be free both as in beer and as in speech.

  • License

Copyright (C) 2014-2017 Fabrice Niessen.

Author: Fabrice Niessen \ Keywords: org-mode refcard

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+html:

+html: :license-gpl-blue.svg

+html:

+html:

+html: btn_donate_LG.gif

+html:

  • Footnotes

[fn:myfootnote] Extensively used in large documents.

[fn:2] Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 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.

+BIND: org-hide-emphasis-markers nil

This is for the sake of Emacs.

Local Variables:

org-hide-emphasis-markers: nil

End:

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.