Quarto Academic Website Examples and Tips
Building Professional Academic Websites with Quarto
Template Resources
| Template | Website | GitHub |
|---|---|---|
| Academic | Demo | Source |
| qtwAcademic | Docs | Source |
Fork the template repository rather than actual websites to avoid receiving notifications on every update. Remember to remove any Google Analytics or tracking IDs from forked templates.
Using Includes for Reusable Content
To streamline updates across your site, use Quarto’s includes feature for reusable elements like syllabus statements, social sharing options, academic badges, and other reusable materials.
{{< include _statement.qmd >}}Prefixing include file names with an underscore (_) ensures they will not be rendered directly by Quarto.
Example Use Cases
- Course descriptions reused in main page and syllabus
- Academic badges for publications
- Social sharing buttons
- Footer information
- Author bio sections
Academic Badges
Display academic badges like Dimensions Citation badge and Altmetric badge.
Embedding Badges
Replace YOUR-DOI-HERE with your actual DOI.
Custom Badges for Highly Cited Papers
You can also showcase highly cited and hot papers using custom badges with HTML/CSS styling.
The Art of Listing
Listings are a powerful tool in Quarto, offering flexibility for creating visually appealing and organized pages.
Listing Types
| Type | Description |
|---|---|
default |
Standard list view |
grid |
Grid layout with cards |
table |
Tabular format |
Listing Options
listing:
contents: posts
type: grid
grid-columns: 3
image-height: 150px
grid-item-align: center
fields: [image, title, date, description]
field-display-names:
title: "Title"
date: "Published"Listing Specific Categories
To display a subset of items, use the include and exclude options:
listing:
contents:
- publications.yml
include:
categories: "machine-learning"Here, publications.yml is a YAML file containing a list of publications with predefined categories.
Listing External Items
To list external resources with key metadata:
- path: https://www.nature.com/articles/example
image: /files/images/journal/nature.avif
title: "Article Title Here"
subtitle: "*Nature*"
description: "Brief description of the article."
date: "2024-10-26"For efficiency, store multiple items in a YAML (.yml) file and reference it in Quarto:
listing:
contents: publications.yml
type: defaultPublication Page Structure
Individual Publication Page
---
title: "Paper Title"
description: "Brief description"
subtitle: "*Journal Name*"
author:
- name: Author One
- name: Author Two
date: "2024-01-15"
categories: [paper, topic1, topic2]
image: "featured.jpg"
citation:
type: article-journal
container-title: "Journal Name"
doi: "10.xxxx/xxxxx"
volume: 1
issue: 1
page: 1-10
url: https://doi.org/10.xxxx/xxxxx
google-scholar: true
---Exporting Revealjs Slides to PDF
Revealjs’s default PDF Export omits footnotes. Use decktape instead:
decktape reveal https://your-slides-url.html output.pdfFixing Font Errors
If you encounter: > “Cannot extract the embedded font ‘BAAAAA+SourceSansPro-Regular’. Some characters may not display or print correctly.”
Solution:
- Open the PDF in Adobe Acrobat
- Go to
Use print production→Preflight→Analyze and fix it(default options) - Apply the necessary font correction
GitHub Actions for Auto-Deploy
name: Render and Publish
on:
push:
branches: [main]
jobs:
build-deploy:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2
- name: Render Quarto Project
uses: quarto-dev/quarto-actions/render@v2
- name: Publish to GitHub Pages
uses: quarto-dev/quarto-actions/publish@v2
with:
target: gh-pages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Useful Resources
| Resource | Link |
|---|---|
| Quarto Documentation | quarto.org |
| Quarto Websites Guide | Website Creation |
| Awesome Quarto | GitHub |
| Samantha Csik Tutorial | Creating Quarto Websites |
| Marvin Schmitt Tutorial | Complete Tutorial |
Quick Reference
Common YAML Options
project:
type: website
output-dir: docs
website:
title: "Site Title"
navbar:
left:
- text: "Home"
href: index.qmd
- text: "Publications"
href: publications.qmd
footer:
left: "© 2025 Your Name"
format:
html:
theme: cosmo
css: styles.css
toc: trueFreeze for Efficiency
execute:
freeze: autoThis prevents re-rendering of unchanged content, speeding up builds significantly.
- Use
freeze: autoto speed up rendering - Store publications in YAML files for easier management
- Create include files for reusable components
- Use categories for filtering content in listings
- Set up GitHub Actions for automatic deployment
Social Sharing
For easy setup of social sharing buttons, AddToAny is a simple solution.
Example Include File
Create
_social.qmd:Then include it in your pages: