Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/academicpages/academicpages.github.io/llms.txt

Use this file to discover all available pages before exploring further.

Every page on an Academic Pages site lives in the _pages/ directory as either a Markdown (.md) or HTML (.html) file. Jekyll discovers these files because _pages is listed in the include array of _config.yml, which tells Jekyll to process that non-standard directory alongside the rest of the site. Once a file exists in _pages/ with the right front matter, it becomes a published page at whatever permalink you specify — completely independent of any navigation menu.

Front Matter

Every page file must open with a YAML front matter block delimited by triple dashes (---). The fields below control how the page is rendered and where it lives.

Required fields

FieldDescription
permalinkThe URL path for the page (e.g. /about/).
titleThe page title shown in the browser tab and page header.

Commonly used fields

FieldTypeDescription
layoutstringThe Jekyll layout to use. Defaults to single for _pages (set in _config.yml).
author_profilebooleanWhether to display the author sidebar. Defaults to true for pages.
redirect_fromarrayOld URLs that should redirect to this page (requires jekyll-redirect-from plugin).
The _config.yml defaults block sets layout: single and author_profile: true for all pages in _pages/, so you only need to include those fields in front matter when you want to override the default.

Front matter examples

---
permalink: /
title: "Academic Pages is a ready-to-fork GitHub Pages template for academic personal websites"
author_profile: true
redirect_from:
  - /about/
  - /about.html
---
Setting permalink: / makes this page the site’s home page. The redirect_from list ensures visitors who bookmark /about/ are forwarded here automatically.

How Jekyll Includes _pages

By default, Jekyll only processes files in the repository root and a handful of well-known directories. Because _pages/ starts with an underscore, it would normally be ignored. The include key in _config.yml overrides this:
# _config.yml
include:
  - .htaccess
  - _pages
  - files
Any file placed in _pages/ is picked up by Jekyll on the next build and published to the URL given by its permalink.

Adding a Page to the Navigation

The top navigation bar is controlled entirely by _data/navigation.yml. Listing a page there does not affect whether it is built — it only determines whether a link appears in the header. To add your page:
1

Open _data/navigation.yml

Find the main: list, which contains all the header links in display order.
# _data/navigation.yml
main:
  - title: "Publications"
    url: /publications/

  - title: "CV"
    url: /cv/
2

Add your page entry

Append (or insert) a new entry with a title label and the url matching your page’s permalink:
main:
  - title: "Publications"
    url: /publications/

  - title: "My New Page"
    url: /my-new-page/

  - title: "CV"
    url: /cv/
3

Commit and push

Save navigation.yml and push to GitHub. GitHub Pages will rebuild the site and the new link will appear in the header.
The order of entries in navigation.yml is the order links appear in the header. Reorder them freely to match your preferred layout.

Non-Menu Pages

A page that exists in _pages/ but is not listed in navigation.yml is still fully built and accessible — it simply has no header link. The template includes non-menu-page.md as an explicit example of this pattern, demonstrating that you can publish content at a predictable URL (useful for supplementary material, hidden landing pages, or pages linked only from within your content) without cluttering the navigation bar. You can link to a non-menu page from anywhere in your site using its permalink:
See the [supplementary data](/non-menu-page/) for additional details.

Special Pages Already in the Template

The template ships with a set of pre-built _pages/ files. Most are wired into navigation.yml by default; a few serve infrastructure roles.
FilePermalinkPurpose
about.md/Home / about page
cv.md/cv/Markdown-based CV
cv-json.md/cv-json/JSON-based CV (commented out in navigation by default)
non-menu-page.md/non-menu-page/Example page not listed in navigation
markdown.md/markdown/Markdown and formatting guide
404.md/404.htmlCustom 404 error page
sitemap.md/sitemap/Human-readable sitemap listing all pages, posts, and collections
terms.md/terms/Terms and privacy policy
year-archive.html/year-archive/Blog posts grouped by year
category-archive.html/categories/Blog posts grouped by category
tag-archive.html/tags/Blog posts grouped by tag
collection-archive.html/collection-archive/All collection items grouped by collection
talkmap.html/talkmap.htmlInteractive map of talk locations

The 404 page

404.md is the only page that deliberately omits author_profile and most layout options. GitHub Pages serves it automatically whenever a visitor requests a URL that does not exist:
---
title: "Page Not Found"
sitemap: false
permalink: /404.html
---
Setting sitemap: false prevents it from appearing in the auto-generated XML sitemap.

Archive pages

The year, category, tag, and collection archive pages use the archive layout and contain Liquid loops that automatically pull in content from site.posts or site.collections — no manual updates needed when you add new posts.

The sitemap page

sitemap.md uses the archive layout and contains Liquid that iterates over site.pages, site.posts, and every collection to produce a complete human-readable index of the site. A machine-readable sitemap.xml is generated separately by the jekyll-sitemap plugin.

Creating a New Page

1

Create the file in _pages/

Add a new .md file. The filename does not affect the published URL — the permalink field does:
<!-- _pages/my-research.md -->
---
permalink: /my-research/
title: "My Research"
author_profile: true
---

Write your content here using standard Markdown.
2

Add to navigation (optional)

To show a link in the header, add an entry to _data/navigation.yml as described in the navigation section above.
3

Commit and push

GitHub Pages rebuilds automatically on every push to the default branch.
Every permalink in _pages/ must be unique. Two pages with the same permalink will cause one to silently overwrite the other during the Jekyll build.

Build docs developers (and LLMs) love