Markdown
Locations of key files & directories
- Site Configuration & Author Profile:
src/data/siteConfig.ts - Top Navigation Bar:
src/data/navigation.ts - Global Design Tokens & Styles:
src/styles/global.css - Content Collections:
src/content/publications/src/content/portfolio/src/content/blog/src/content/teaching/src/content/talks/src/content/pages/
- Static Assets & Downloads:
public/files/(PDFs, slide decks, BibTeX.bibfiles)public/images/(Avatarprofile.png, favicons, screenshots)
Tips and hints
- Create
.mdor.mdxfiles insidesrc/content/<collection>/to automatically generate pages with strict type checking - Every commit pushed to GitHub automatically triggers the
.github/workflows/ci.ymlaction to compile static assets and deploy to GitHub Pages - Standard GitHub Flavored Markdown (GFM), footnotes, task lists, and autolinks are natively supported by Astro
- Your CV page is rendered from
src/pages/cv.astrowith an interactive, sticky Table of Contents
KaTeX & LaTeX Math
Academic Pages Astro includes built-in server-side rendering for mathematical equations using KaTeX. Equations are compiled into HTML & MathML at build time with zero client JavaScript overhead:
Display Equations
Multiline aligned systems using $$...$$ and \begin{aligned}:
Standard displayed formulas:
Inline Equations
Use standard $ ... $ delimiters for inline mathematics, such as the Pythagorean theorem , Euler’s identity , or summation .
Mermaid diagrams
Academic Pages includes support for Mermaid diagrams (version 11.* via jsDelivr) and in addition to their tutorials and GitHub documentation the basic syntax is as follows:
graph LR
A-->B
Which produces the following plot with the default theme applied:
graph LR
A-->B
While a more advanced plot with the forest theme applied looks like the following:
---
config:
theme: 'forest'
---
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
Plotly
Academic Pages includes support for Plotly diagrams via a hook in the Markdown code elements, although those that are comfortable with HTML and JavaScript can also access it directly via those routes. Plotly is included via an npm package and is lazy loading is used in the template to retrieve the minimized JavaScript via a content delivery network (CDN) when a plot needs to be rendered on a page in the template.
In order to render a Plotly plot via Markdown the relevant plot data need to be added as follows:
{
"data": [
{
"x": [1, 2, 3, 4],
"y": [10, 15, 13, 17],
"type": "scatter"
},
{
"x": [1, 2, 3, 4],
"y": [16, 5, 11, 9],
"type": "scatter"
}
]
}
Which produces the following:
{
"data": [
{
"x": [1, 2, 3, 4],
"y": [10, 15, 13, 17],
"type": "scatter"
},
{
"x": [1, 2, 3, 4],
"y": [16, 5, 11, 9],
"type": "scatter"
}
]
}
Essentially what is taking place is that the Plotly attributes are being taken from the code block as JSON data, parsed, and passed to Plotly along with a theme that matches the current site theme (i.e., a light theme, or a dark theme). This allows all plots that can be described via the data attribute to rendered with some limitations for the theme of the plot.
{
"data": [
{
"x": [1, 2, 3, 4, 5],
"y": [1, 6, 3, 6, 1],
"mode": "markers",
"type": "scatter",
"name": "Team A",
"text": ["A-1", "A-2", "A-3", "A-4", "A-5"],
"marker": { "size": 12 }
},
{
"x": [1.5, 2.5, 3.5, 4.5, 5.5],
"y": [4, 1, 7, 1, 4],
"mode": "markers",
"type": "scatter",
"name": "Team B",
"text": ["B-a", "B-b", "B-c", "B-d", "B-e"],
"marker": { "size": 12 }
}
],
"layout": {
"xaxis": {
"range": [ 0.75, 5.25 ]
},
"yaxis": {
"range": [0, 8]
},
"title": {"text": "Data Labels Hover"}
}
}
{
"data": [{
"x": [1, 2, 3],
"y": [4, 5, 6],
"type": "scatter"
},
{
"x": [20, 30, 40],
"y": [50, 60, 70],
"xaxis": "x2",
"yaxis": "y2",
"type": "scatter"
}],
"layout": {
"grid": {
"rows": 1,
"columns": 2,
"pattern": "independent"
},
"title": {
"text": "Simple Subplot"
}
}
}
{
"data": [{
"z": [[10, 10.625, 12.5, 15.625, 20],
[5.625, 6.25, 8.125, 11.25, 15.625],
[2.5, 3.125, 5.0, 8.125, 12.5],
[0.625, 1.25, 3.125, 6.25, 10.625],
[0, 0.625, 2.5, 5.625, 10]],
"type": "contour"
}],
"layout": {
"title": {
"text": "Basic Contour Plot"
}
}
}
Markdown Syntax Guide
Academic Pages Astro uses standard GitHub Flavored Markdown (GFM) with native support for tables, task lists, strikethrough, autolinks, footnotes, KaTeX mathematics, and syntax highlighting.
Header three
Header four
Header five
Header six
Blockquotes
Single line blockquote:
Quotes are cool.
Tables
Table 1
| Entry | Item | |
|---|---|---|
| John Doe | 2016 | Description of the item in the list |
| Jane Doe | 2019 | Description of the item in the list |
| Doe Doe | 2022 | Description of the item in the list |
Table 2
| Header 1 (Left) | Header 2 (Center) | Header 3 (Right) |
|---|---|---|
| Alpha | Beta | Gamma |
| Item A | 100 | $10.50 |
| Item B | 250 | $24.00 |
Definition Lists
- Definition List Title
- Definition list division.
- Startup
- A company or organization designed to search for a repeatable and scalable business model.
- Do Work
- Works as a self motivator and team encouragement phrase.
Unordered Lists (Nested)
- List item one
- List item one
- List item one
- List item two
- List item three
- List item four
- List item two
- List item three
- List item four
- List item one
- List item two
- List item three
- List item four
Ordered List (Nested)
- List item one
- List item one
- List item one
- List item two
- List item three
- List item four
- List item two
- List item three
- List item four
- List item one
- List item two
- List item three
- List item four
Task Lists & Extended GFM
Create interactive or static task lists using standard GitHub Flavored Markdown syntax:
- Create publication entry with custom frontmatter
- Configure BibTeX citation download and action badges
- Embed interactive KaTeX equations and Plotly charts
- Submit camera-ready conference paper
Strikethrough text with double tildes: deprecated research note
Academic Publication Badges
Academic Pages Astro automatically renders interactive, 1-click action buttons for papers, presentation slides, and BibTeX citations when specified in your publication’s Markdown frontmatter:
---
title: Paper Title Number 1
date: 2009-10-01
venue: Journal 1
paperurl: https://academicpages.github.io/files/paper1.pdf
slidesurl: https://academicpages.github.io/files/slides1.pdf
citation: 'Your Name. (2009). "Paper Title Number 1." <i>Journal 1</i>. 1(1).'
---
When a reader clicks the BibTeX button, an accessible modal opens showing the formatted BibTeX entry with a 1-click copy-to-clipboard button.
Fast Client-Side Search
Every page supports instant, client-side full-text search:
- Keyboard Shortcut: Press Cmd + K (Mac) or Ctrl + K (Windows/Linux) from anywhere on the site
- Search Header Button: Click the search input in the top masthead navigation bar
- Live Filtering: Searches across page titles, excerpts, tags, categories, and author metadata in real-time
Theme & Dark Mode
The site features built-in theme toggle persistence supporting:
- Automatic System Preference: Matches your operating system’s light or dark mode on first visit
- User Toggle: Click the sun/moon icon in the masthead to toggle themes with zero page flicker
- Custom Design Tokens: Easily customize brand colors, backgrounds, and fonts in
src/styles/global.css
Buttons
Make any link stand out more by applying the .btn utility classes:
<a href="#" class="btn btn--primary">Primary Button</a>
<a href="#" class="btn btn--inverse">Inverse Button</a>
<a href="#" class="btn btn--info">Info Button</a>
<a href="#" class="btn btn--warning">Warning Button</a>
<a href="#" class="btn btn--danger">Danger Button</a>
<a href="#" class="btn btn--success">Success Button</a>
Notices
Notices and callout boxes provide high-visibility callouts:
<div class="notice notice--info">
<strong>Info Notice:</strong> Highlights helpful context or hints
</div>
Footnotes
Footnotes can be useful for clarifying points in the text, or citing information.1 Markdown support numeric footnotes, as well as text as long as the values are unique.2
This is the regular text.[^1] This is more regular text.[^note]
[^1]: This is the footnote itself.
[^note]: This is another footnote.
HTML Tags
Address Tag
1 Infinite LoopCupertino, CA 95014
United States
Anchor Tag (aka. Link)
This is an example of a link.
Abbreviation Tag
The abbreviation CSS stands for “Cascading Style Sheets”.
Cite Tag
“Code is poetry.” ---Automattic
Code Tag
You will learn later on in these tests that word-wrap: break-word; will be your best friend.
You can also write larger blocks of code with syntax highlighting supported for some languages, such as Python:
print('Hello World!')
or R:
print("Hello World!", quote = FALSE)
Details Tag (collapsible sections)
The HTML <details> tag works well with Markdown and allows you to include collapsible sections, see W3Schools for more information on how to use the tag.
Collapsed by default
This section was collapsed by default!The source code:
<details>
<summary>Collapsed by default</summary>
This section was collapsed by default!
</details>
Or, you can leave a section open by default by including the open attribute in the tag:
Open by default
This section is open by default thanks to open in the <details open> tag!Emphasize Tag
The emphasize tag should italicize text.
Insert Tag
This tag should denote inserted text.
Keyboard Tag
This scarcely known tag emulates keyboard text, which is usually styled like the <code> tag.
Preformatted Tag
This tag styles large blocks of code.
.post-title {
margin: 0 0 5px;
font-weight: bold;
font-size: 38px;
line-height: 1.2;
and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
}
Quote Tag
Developers, developers, developers…
–Steve Ballmer
Strike Tag
This tag will let you strikeout text.
Strong Tag
This tag shows bold text.
Subscript Tag
Getting our science styling on with H2O, which should push the “2” down.
Superscript Tag
Still sticking with science and Isaac Newton’s E = MC2, which should lift the 2 up.
Variable Tag
This allows you to denote variables.
Footnotes
The footnotes in the page will be returned following this line, return to the section on Markdown Footnotes.