Practical Computing Skills for Omics Data (PLNTPTH 5006)
Jelmer Poelstra
September 02, 2026
This session introduces Markdown for research documentation.

You will learn:

Surrounding text with single or double asterisks (*) applies italic and bold formatting, respectively:
We refer to these constructs (* for italic, etc.) as the “syntax” of the language.
Markdown files have extension .md, and when you save a file with that extension in VS Code:


Markdown source (editor) on the left, rendered preview on the right.
In the previous session, you created a file 2d_markdown.md.
Type the following text in this file, then open the Preview:

Markdown source (editor) on the left, rendered preview on the right.
The de facto standard for documentation in computational fields.
Has become even more prevalent with the rise of GenAI: chatbots write responses in Markdown, and AI coding tools are configured with Markdown files (e.g., CLAUDE.md).
Markdown extensions enable:
Executable code in documents, such as in Quarto (covered in weeks 12 and 14)
Creating slides (such as these!) and websites (such as this one!)
To create headers, use one or more # characters, followed by a space:
Type:
Rendered as:

Header levels
# makes a level-1 header## makes a level-2 header### makes a level-3 header —Let’s build a complete skeleton of a Markdown document,
using the following headers:
Auto save in VS Code
In this version of VS Code, changes to files are automatically saved.
If you don’t like that, you can open the Settings and search find the “Files: Auto Save” option.
Rendered as:
Automatic numbering
In the second example, the last two items are rendered as “2.” and “3.” even though they are both numbered “2.” in the source. Markdown automatically numbers ordered lists, so you don’t have to worry about numbering them correctly in the source.
Type:
Mind the order in a [text](url) link:
the [link text] comes first, and then the (URL).
Rendered as:
The docs are here.
Or show the URL: https://www.markdownguide.org
A blockquote is useful to highlight text, such as a quote from a paper.
| Syntax/source | Result/rendered output |
|---|---|
| *italic* | italic text (or use an underscore: _italic_) |
| **bold** | bold text |
| # My Title | Header level 1 (largest) |
| ## My Section | Header level 2 (smaller) |
| - List item | Unordered (bulleted) list |
| 1. List item | Ordered (numbered) list |
| <https://website.com> | Clickable link with visible URL: https://website.com |
| [link text](url) | Clickable link with “hidden” URL: link text |
| > Text | Blockquote (like quoted text in emails) |
| --- | Horizontal rule (use 3+ dashes) |
Try to create the following content at the ## Exercise header in your Markdown file (the URL can be anything):

Type:
## Exercise
Extracted DNA from *Quercus rubra* leaves using
the **CTAB protocol**.
Steps:
1. Grind tissue in liquid nitrogen
2. Add CTAB buffer
3. Incubate at 65°C
See the [CTAB protocol](https://pmc.ncbi.nlm.nih.gov/articles/PMC10278931/)
for details.
> Note: sample 3 had low yield -- repeat next week.Rendered as:

Applying “code formatting” to text means that it:
Surround text with backticks `:
Take a moment to find the backtick key on your keyboard (usually above the Tab key).
| Syntax/source | Result/rendered output |
|---|---|
| `inline code` | “Code-formatted” text for inline use: inline code |
| ```bash code ``` |
Code block with bash syntax highlighting |
| ```r code ``` |
Code block with r syntax highlighting |
``` code ``` |
Generic/language-agnostic code block |
Always leave a blank line between different elements, such as headers, lists, and regular paragraphs, to guarantee they are interpreted correctly.
Not only did the items not become a bulleted list, they were also collapsed into a single line: we’ll see why now.
A line break in the source does not create a line break in the output:
A lightweight markup language: plain text plus visible formatting characters.
Your source file is rendered into HTML, PDF, and more — preview it in VS Code.
*italic*, **bold**, # headers, - and 1. lists, [text](url) links, and > blockquotes.
Backticks for code: single for inline, triple for blocks.
Leave a blank line between elements, and a space after # and -.
Single line breaks are ignored — start a new paragraph instead.
Creating tables in Markdown is a bit trickier than the other elements we’ve seen. Use vertical bars | and dashes - like so:
Type:
Rendered as:
| city | inhabitants |
|---|---|
| Columbus | 906 K |
| Cleveland | 368 K |
For more info, see https://www.markdownguide.org/extended-syntax/#tables.
Images can be inserted using the following syntax:
!.img subfolder needs .A caption can be added using , but this syntax is not supported in all contexts. For example, it does not work in the Markdown preview in VS Code.
You can force a single line break (as opposed to a new paragraph) by adding
a backslash \ after the last character on a line:
Multiple consecutive spaces or blank lines are “collapsed” into a single one:
We saw earlier that Markdown collapses multiple consecutive spaces or blank lines
into a single one. If you want to force additional space between paragraphs,
you’ll have to resort to an HTML tag — each <br> tag forces a line break:
Rendered as:
One
word
per line and
several blank lines.
You can use any HTML markup in Markdown! Maybe not everyone’s cup of tea, but this is one way in which Markdown is very versatile.