Disclaimer: The two sections A simple "reproducible research" emacs configuration and A stub of replicable article explain how to set up emacs/org-mode for this MOOC. These are very important sections in the context of this MOOC. These sections are illustrated in two out of the three video tutorials of this sequence, and which you really should follow carefully. Otherwise, you may have trouble doing the exercises later on. Likewise, I strongly encourage you to watch the "emacs and git" video tutorial available at the same place.
The next section provides information on how to install emacs.
We provide here only instructions for Debian-based distributions. Feel free to contribute to this document to provide up-to-date information for other distributions (e.g.n redhat, fedora).
Today, the stable versions of the most common distributions provide recent enough versions of emacs and org-mode:
If your distribution is older than this, well, it may be a good time for upgrading…
Simply run (as root):
apt-get update ; apt-get install emacs25 org-mode ess r-base auctex
Then make sure you have a sufficiently recent version of emacs.
emacs --version 2>&1 | head -n 1
GNU Emacs 25.2.2
Likewise, you'll want to check you have a recent version of org-mode:
emacs -batch --funcall "org-version" 2>&1 | grep version
Org mode version 9.1.11 (9.1.11-dist @ /usr/share/emacs/25.2/site-lisp/elpa/org-9.1.11/)
The version numbers you get will depend on the distribution you are running. You really want to make sure you do not rely on org-mode 8, which is now deprecated.
Note: macOS comes with a prehistoric command-line-only version of Emacs located at /usr/bin/emacs
. It's best to forget about it.
Option 1: Install the .dmg
file from Vincent Goulet:
https://vigou3.gitlab.io/emacs-modified-macos/. It ships with recent
versions:
If you install this version of Emacs, or in fact any other version of
Emacs distributed as a clickable application in a .dmg
file,
you must type the full path to the executable if you want to run
Emacs from a terminal. For example, if your clickable application
is at /Applications/Emacs.app
, then the executable is at
/Applications/Emacs.app/Contents/MacOS/Emacs
Option 2: If you use Homebrew, do the following:
brew update brew install emacs --with-cocoa brew linkapps emacs brew install wget brew tap dunn/emacs brew install auctex brew tap brewsci/science brew install ess
This provides an emacs
command for use from the command line, plus a clickable application at Cellar/emacs/26.1_1/Emacs.app
inside your Homebrew directory. If
you installed Homebrew at the default location /usr/local
, then this is /usr/local/Cellar/emacs/26.1_1/Emacs.app
.
If you installed Homebrew on an account with administrator privileges, you can add
brew linkapps emacs
in order to make Emacs accessible directly from /Applications
.
Install the .exe
file from Vincent Goulet:
https://vigou3.gitlab.io/emacs-modified-windows/. It ships with recent
versions:
In the following instructions, we refer to your home
directory through the (UNIX) ~/
notation. On Windows, your home
directory should be something like C:\Users\yourname
. Therefore,
whenever we mention the ~/org/
(resp. the ~/.emacs.d/
) directory this
means we are referring to C:\Users\yourname\org
(resp.
C:\Users\yourname\.emacs.d\
).
When running a command, Windows will look for the command in the
directories indicated in the PATH
environment variable. If none of
these directories contains the command, Windows will stop and indicate
the command does not exist. To make sure R (which may be in
something like C:/Program Files/R/R-3.5.1/bin/x64/
) and Python (which may be in something like C:/Program Files/Python/Python37/
) can
easily be run from Emacs, you should thus configure the PATH
variable
accordingly.
This requires to go through the "Environment Variable" editor as explained here.
Open an DOS console and type the following command:
python -m pip install -U matplotlib
Then you will want to deactivate interactive plots in matplotlib. To this end, you first need to know where the matplotlib configuration is located. Open a python console the type the following code:
import matplotlib
matplotlib.matplotlib_fname()
Open the matplotlibrc
file and add a #
at the beginning of the line
starting with backend
, which amounts to use the default Agg
value.
To have code pretty printing when exporting to HTML, you should
install the htmlize
package, which is done by opening emacs and
typing the following command:
M-x package-install RET htmlize RET # where M-x means pressing the "Esc" key then the "x" key
This section is illustrated in a video tutorial ("Mise en place Emacs/Orgmode" in French). Watching it before following the instructions given in this section may help.
Emacs comes with very basic default configuration and it appears like everyone has its own taste. You will for example find here several default Emacs configurations that reflect the preferences of their creators. Likewise the configuration of Org-Mode is incredibly flexible (see for example the org-mode website for more references). In the context of this MOOC, we propose you a relatively minimalist one that is rather "reproducible research" oriented by adding a few org-mode specific configurations.
The procedure we propose will wipe your already existing custom Emacs
configuration if you have one. You should thus beforehand make a
backup of ~/.emacs
and of ~/.emacs.d/init.el
(if these files exist).
Then download this archive and uncompress it. It contains the following files and we will refer to them in the following:
rr_org/init.el rr_org/journal.org
Alternatively, the files you are looking for are available here.
Create an org/
directory in the top of your home:
mkdir -p ~/org/
Then copy rr_org/journal.org
file in your ~/org/
directory. This
file will be your laboratory notebook and all the notes you will
capture with C-c c
will go automatically go in this file. The first
entry of this notebook is populated with many Emacs shortcuts that you
should give a try.
Copy rr_org/init.el
in your ~/.emacs.d/
directory.
Alternatively, if you do not want to mess with your already existing
emacs configuration, you may launch emacs with this specific
configuration with the following command: emacs -q -l rr_org/init.el
.
There are two situations in which it might be necessary to modify
init.el
:
You have multiple installations of Python or R on your computer, or they are in unusual places and not fully configured. If you can run
in a terminal without getting an error message, then you should not have to do anything.
If you do have to modify init.el
, check the comments at the
beginning of the file for instructions.
Open a new instance of Emacs and open a foo.org
file. Copy the
following lines in this file:
#+begin_src shell :session foo :results output :exports both ls -la # or dir under windows #+end_src
Put your cursor inside this code block and execute it with the
following command: C-c C-c
(If you are not familiar with Emacs
commands, this one means 'Ctrl + C
' twice)
A #+RESULTS:
block with the result of the command should appear if it
worked.
In the video, we already have demonstrated the main features and shortcuts of emacs/org-mode that will help you maintain a document and benefit from literate programming. The list of features and shortcuts is demonstrated in the first entry of your labbook.
In step 1, you were told to create an journal in
~org/journal.org
. First you probably want to make sure this file is
stored in a version control system like git. We leave it up to you
to set this up but if you have any trouble, feel free to ask on the
FUN forums.
This section is illustrated in a video tutorial ("Écrire un article réplicable avec Emacs/Orgmode" in French). Watching it before following the instructions given in this section may help.
Remember, you need a working LaTeX and R environment. If you can't
open a terminal and run the commands R
, pdflatex
, and python
, you will not be
able to generate this document. When being compiled, the article downloads the
corresponding LaTeX packages so you also need to have a working wget
command (alternatively, it uses curl
). Once downloaded, you may still read the
source (article.org) and understand how it works though.
Download the following archive, uncompress it and simply make
to generate the
article. You should then be able to open the resulting article. This
is summarized in the following command:
wget --no-check-certificate -O replicable_article.tgz https://app-learninglab.inria.fr/gitlab/learning-lab/mooc-rr-ressources/raw/master/module2/ressources/replicable_article.tgz
tar zxf replicable_article.tgz; cd replicable_article; make ; evince article.pdf
Possible issues:
If the make
command fails (especially on Mac), it may be because
Emacs or something else is not correctly installed. In that case,
open the article directly with the following command:
emacs -q --eval "(setq enable-local-eval t)" --eval "(setq enable-local-variables t)" article.org
and export it to pdf with the following shortcut: C-c C-e l o
-q
in the previous
command line to load your personal emacs configuration.Finally, when you'll be tired of always re-executing all the source code when exporting, just look for the following line in article.org:
# #+PROPERTY: header-args :eval never-export
If you remove the #
in the beginning of the line, it will not be a
comment anymore and will indicate org-mode to stop evaluating every
chunk of code when exporting.
Learning Emacs and Org-Mode can be difficult as there is an inordinate amount of shortcuts. Many people have thus come up with cheat-sheats. Here is a selection in case it helps:
For those of you who prefer video explanations, here is a Youtube channel with many step by step emacs tutorials.
Company-mode is a text completion framework for Emacs. It allows to have smart completion in emacs for the most common languages. If you feel this is needed, you should follow the instructions from the official Web page: http://company-mode.github.io/
Magit is an Emacs interface for Git. Its usage is briefly illustrated in the context of this MOOC in a video tutorial ("Utilisation Emacs/git" in French).
It is very powerful and we use it on a daily basis but you should
definitely understand what git does behind the scenes beforehand. If
you feel this would be useful for you, you should follow this visual
walk-through or this really short "crash course". If you installed the
previous "reproducible research" emacs configuration, you can easily
invoke magit by using C-x g
.