CELPiE Summer Symposium - 18 June 2026
2026-06-17
From the company that brought you RStudio, R Markdown, and more recently Positron, comes
an open-source scientific and technical publishing system.
Accessibility: Creating digital resources solves a well known problem of screen readibility of PDF documents. Solve this problem by publishing simultaneously
Flexibility: write in markdown, publish as website, document, presentations, blog, dashboard, etc.
Reproducibility: Incorporate reproducible code directly into your documents.
Interactivity: Create “live” interactive documents that allow you to interact with data in real time.
Everything is prepared in a Quarto markdown file (.qmd). For example,
## New slide title
Add a list of
1. item 1
2. item 2
a. sub-item 1
Add some maths: $\hat{\beta}$ is defined as
$$
\hat{\beta} = (X'X)^{-1}X'Y
$$
:::{.callout-note title="Important"}
This is the most important equation in this module.
:::
Add a list of
item 1
item 2
Add some maths: \(\hat{\beta}\) is defined as
\[ \hat{\beta} = (X'X)^{-1}X'Y \]
Important
This is the most important equation in this module.
LaTeX is beautiful, but LaTeX can also be a huge waste of time. And it’s not really a skill our students need.
Example from EC910 lecture notes
A nice feature of Quarto is that it supports LaTeX math syntax and will publish your documents PDFs simultaneously as HTML or Word, so you can have the best of both worlds.
There is no better way to incorporate code into your teaching material, both from a design and feature perspective.1
There are some caveats, but you can write documents in multiple languages.
library(tibble)
set.seed(123)
n <- 1000
mu <- 0
sigma <- 1
df <- tibble(x = rnorm(n, mean = mu, sd = sigma))
gg <- ggplot(df, aes(x = x)) +
geom_histogram(aes(y = ..density..), bins = 30, fill = "lightblue", color = "black", alpha = 0.6) +
geom_density(color = "red", size = 1) +
stat_function(fun = dnorm, args = list(mean = mu, sd = sigma), color = "blue", linetype = "dashed", size = 1) +
labs(
title = "Simulated Normal Distribution",
subtitle = paste0("n = ", n, ", mu = ", mu, ", sigma = ", sigma),
x = "x",
y = "Density"
) +
theme_minimal()
ggimport numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
def plot_normal_sim(n=1000, mu=0.0, sigma=1.0, bins=30, seed=123):
rng = np.random.default_rng(seed)
x = rng.normal(loc=mu, scale=sigma, size=n)
fig, ax = plt.subplots(figsize=(8, 5))
sns.histplot(x, bins=bins, stat="density", color="lightblue", edgecolor="black", alpha=0.6, ax=ax)
sns.kdeplot(x, color="red", linewidth=1.5, ax=ax)
xs = np.linspace(x.min() - 1, x.max() + 1, 400)
pdf = (1.0 / (sigma * np.sqrt(2 * np.pi))) * np.exp(-0.5 * ((xs - mu) / sigma) ** 2)
ax.plot(xs, pdf, color="blue", linestyle="--", linewidth=1.5)
ax.set_title(f"Simulated Normal Distribution\nn={n}, mu={mu}, sigma={sigma}")
ax.set_xlabel("x")
ax.set_ylabel("Density")
fig.tight_layout()
return fig
plot_normal_sim()set obs 1000
gen x = rnormal()
twoway (histogram x, fcolor(ltblue) lcolor(black)) (kdensity x, lcolor(red)) (function y=normalden(x), range(-4 4) lcolor(blue) lpattern(dash)), title("Simulated Normal Distribution") subtitle("n=1000, mu=0, sigma=1") legend(off)
graph export "img/pres-symp-jun26/stata_histogram.png", replaceUnsure about making slides or lecture notes, make both simulatenously.
Become a ‘web developer’ overnight and organize your materials as a website or e-book.
This has huge benefits for students. You can add links in Moodle directly to your website, which then remain up to date.1
Here are a few things you will need to consider:
Parcing settings to LaTeX appears to be tricky! (I’ve not even tried, yet.)
Formatting html documents requires the use of a CSS/SCSS style sheet.
Markdown is an intentionally simple (easy-to-learn) language, but it is not as featureful as LaTeX.
Again, formatting comes through CSS.
My least favourite feature is footnotes! 😔
Coding within a markdown file requires the use of code blocks.
Not necessarily how you want your students to engage with code.
Can probably write a script to strip the code and create a .r/.py/.do script for your students to run.1
neil.lloyd@st-andrews.ac.uk / https://neil-lloyd.github.io/digital-resources/