A Tour of Present
Slides, articles and everything in between
9 October 2026
Ada Example
Gopher Wrangler, Example Corp
Grace Example
Compiler Whisperer
Presenting
Key
Does
→ ↓ Space Enter
next slide
← ↑ Backspace
previous slide
PgDn PgUp
next, previous, also in a code block
N
open the presenter notes, with -notes
S
show the source of the slide, with -doc
H
hide the help text
present serve cli flags
Does
-hot
reload the slides when a file changes
-notes
enable the presenter notes
-doc
serve the docs and these examples and source view
-play=false
do not run the programs of .play
2
Text
Section text is CommonMark Markdown:
italic , bold , code and links .
bullet lists
with several items
continued on the next line
numbered lists
work too
3
Tables
GitHub-style tables line up with |;
colons in the separator row align the columns:
Command
Shows
Runs
.code
source from a file
no
.play
source from a file
yes
.image
a picture or a diagram
no
4
Code blocks and quotes
Indented or fenced blocks are shown as code, without running anything:
$ go run golang.org/x/tools/cmd/present@latest
Clear is better than clever.
.play and the other commands start with a period; a backslash before it shows the line as text.
5
Subsections
A subsection starts with ###
Text under the subsection.
Another subsection
Deeper levels use ####, ##### and so on
6
Font size
and .fontsize alone goes back to the default.
7
Links and HTML
The Go website
raw HTML from html/badge.html
8
Custom style sheets
Present loads style sheets from the directory automatically:
style.css for all presentations and articles
slide.css for slides, and article.css for articles
intro.slide.css for this presentation only
/* Custom styles loaded automatically for intro.slide */
.custom-card {
margin-top: 1em;
padding: 1em 1.5em;
border-left: 4px solid #00add8;
background-color: #e8f4f8;
border-radius: 4px;
}
This card is styled by rules in intro.slide.css .
9
What next
10
Source of slide 1S closes
examples/intro.slide
1 # A Tour of Present
2 Slides, articles and everything in between
3 10:00 9 Oct 2026
4 Tags: present, example
5 Summary: The basics of the present file format: header, authors, text and simple commands.
6 : Notes before the first slide belong to the title slide.
7 : Run present serve -notes and press N to see them.
8
9 Ada Example
10 Gopher Wrangler, Example Corp
11 ada@example.com
12 https://example.com/
13 @ada_example
14
15 Grace Example
16 Compiler Whisperer
Source of slide 2S closes
examples/intro.slide
18 ## Presenting
19
20 .fontsize 0.8
21
22 | Key | Does |
23 |-------------------------------------------------------------|-------------------------------------------|
24 | <kbd>→</kbd> <kbd>↓</kbd> <kbd>Space</kbd> <kbd>Enter</kbd> | next slide |
25 | <kbd>←</kbd> <kbd>↑</kbd> <kbd>Backspace</kbd> | previous slide |
26 | <kbd>PgDn</kbd> <kbd>PgUp</kbd> | next, previous, also in a code block |
27 | <kbd>N</kbd> | open the presenter notes, with `-notes` |
28 | <kbd>S</kbd> | show the source of the slide, with `-doc` |
29 | <kbd>H</kbd> | hide the help text |
30
31 | `present serve` cli flags | Does |
32 |---------------------------|---------------------------------------------------|
33 | `-hot` | reload the slides when a file changes |
34 | `-notes` | enable the presenter notes |
35 | `-doc` | serve the docs and these examples and source view |
36 | `-play=false` | do not run the programs of `.play` |
37
38 : Clicking the left or right edge of a slide, or swiping, also moves between slides.
39 : Exported pages, like the examples on GitHub Pages, have no notes;
40 : S works on them when they are exported with -source.
41 : present serve -h lists all the flags.
Source of slide 3S closes
examples/intro.slide
43 ## Text
44
45 Section text is [CommonMark](https://commonmark.org/help/) Markdown:
46 _italic_, **bold**, `code` and [links](https://go.dev/).
47
48 - bullet lists
49 - with several items
50 continued on the next line
51
52 1. numbered lists
53 2. work too
54
55 56
57 : Lines starting with ": " are speaker notes for this slide.
58 : Notes are Markdown: **bold**, `code` and [links](https://go.dev/) work.
59
60 ::: notes
61 A block of notes holds longer notes:
62
63 - several paragraphs, lists and code
64 - lines starting with `#`, `.` or `//` are Markdown here too
65
66 It ends at a line with three colons.
67 :::
Source of slide 4S closes
examples/intro.slide
69 ## Tables
70
71 [GitHub-style tables](https://github.github.com/gfm/#tables-extension-) line up with `|`;
72 colons in the separator row align the columns:
73
74 | Command | Shows | Runs |
75 |----------|------------------------|:----:|
76 | `.code` | source from a file | no |
77 | `.play` | source from a file | yes |
78 | `.image` | a picture or a diagram | no |
Source of slide 5S closes
examples/intro.slide
80 ## Code blocks and quotes
81
82 Indented or fenced blocks are shown as code, without running anything:
83
84 ```
85 $ go run golang.org/x/tools/cmd/present@latest
86 ```
87
88 > Clear is better than clever.
89
90 \.play and the other commands start with a period; a backslash before it shows the line as text.
Source of slide 6S closes
examples/intro.slide
92 ## Subsections
93
94 ### A subsection starts with ###
95
96 Text under the subsection.
97
98 ### Another subsection
99
100 #### Deeper levels use ####, ##### and so on
Source of slide 7S closes
examples/intro.slide
102 ## Font size
103
104 .fontsize 3
105
106 fontsize 3
107
108 .fontsize 2
109
110 fontsize 2
111
112 .fontsize 0.8
113
114 fontsize 0.8
115
116 .fontsize 60%
117
118 fontsize 60%
119
120 .fontsize 0.45
121
122 fontsize 0.45
123
124 .fontsize
125
126 and `.fontsize` alone goes back to the default.
127
128 : Sizes are relative to the default size, not to the previous .fontsize.
129 : Absolute sizes work too: .fontsize 20px or .fontsize 14pt.
Source of slide 8S closes
examples/intro.slide
131 ## Links and HTML
132
133 .link https://go.dev/ The **Go** website
134
135 .html html/badge.html
136
137 .iframe html/frame.html 120 600
138
139 : .link shows a single link on a line of its own; its label is inline Markdown.
140 : .html includes a file as raw HTML; .iframe embeds a page.
Files used
html/badge.html
1 <p style="display: inline-block; padding: 0.3em 0.8em; border-radius: 1em; background: #00add8; color: white; font-weight: bold;">
2 raw HTML from html/badge.html
3 </p>
Source of slide 9S closes
examples/intro.slide
142 ## Custom style sheets
143
144 Present loads style sheets from the directory automatically:
145
146 - `style.css` for all presentations and articles
147 - `slide.css` for slides, and `article.css` for articles
148 - `intro.slide.css` for this presentation only
149
150 .code intro.slide.css
151
152 <div class="custom-card">
153 This card is styled by rules in <b>intro.slide.css</b>.
154 </div>
155
156 : Style sheets in the directory customize fonts, colors and layout.
File used
intro.slide.css
1 /* Custom styles loaded automatically for intro.slide */
2
3 .custom-card {
4 margin-top: 1em;
5 padding: 1em 1.5em;
6 border-left: 4px solid #00add8;
7 background-color: #e8f4f8;
8 border-radius: 4px;
9 }
Source of slide 10S closes
examples/intro.slide
158 ## What next
159
160 - [code.slide](code.slide): showing and running code
161 - [media.slide](media.slide): images, diagrams and video
162 - [notes.article](notes.article): the article format
No sourceS closes
present adds this slide itself; it has no source.
Use the left and right arrow keys or click the left and right
edges of the page to navigate between slides.
Press 'S' to show or hide the source of the slide.
(Press 'H', navigate or click this message to hide it.)