A template repository for creating books with Quarto. This template provides everything you need to quickly start writing your own book.
- π Book-ready structure with sample chapters and references
- π¨ Customizable themes supporting light and dark modes
- π Automatic deployment to GitHub Pages via GitHub Actions
- π Automated link checking to ensure all URLs are reachable
- π Multiple output formats including HTML, PDF, EPUB, and DOCX
- π Bibliography support with BibTeX integration
- π’ Automatic numbering of sections and cross-references
- π Custom CSS for styling your book
- π PR Preview with change highlighting for pull requests
- β Automated checks including spell checking and linting
- π€ GitHub Copilot integration with custom setup steps
- π AI-powered issue summaries for new issues
- Click the βUse this templateβ button at the top of this repository
- Name your new repository and create it
- Clone your new repository to your local machine
git clone https://github.com/YOUR-USERNAME/YOUR-REPO.git
cd YOUR-REPOYou need to have Quarto installed. Download it from quarto.org/docs/get-started.
To verify Quarto is installed:
quarto --version-
Edit
_quarto.ymlto update:- Book title and author
- Repository URL
- Chapter list
- Theme and styling options
-
Modify
index.qmdto create your bookβs homepage/introduction -
Edit or create chapters (
.qmdfiles):- Modify
chapter1.qmdandchapter2.qmdas needed - Create new chapters and add them to the
chapterslist in_quarto.yml
- Modify
-
Add references to
references.bibin BibTeX format -
Customize styling in
styles.css
To preview your book with live reload during development:
quarto previewThis will open your book in a web browser and automatically refresh when you make changes.
To render the complete book:
quarto renderThe output will be generated in the docs/ directory.
This template includes a GitHub Actions workflow
(.github/workflows/publish.yml) that automatically builds and
publishes your book to GitHub Pages when you push to the main branch.
-
Enable GitHub Pages in your repository:
- Go to Settings β Pages
- Under βBuild and deploymentβ, set Source to βGitHub Actionsβ
-
Push to main branch:
git add . git commit -m "Initial book setup" git push origin main
-
Wait for the workflow to complete (check the Actions tab)
-
Access your book at:
https://YOUR-USERNAME.github.io/YOUR-REPO/
This template includes several automated workflows to enhance your development experience:
Automatically builds and deploys your book to GitHub Pages when you push to the main branch.
Triggers: Push to main branch, manual dispatch
Creates a preview deployment for pull requests with:
- Change detection and highlighting
- DOCX files with tracked changes
- Visual indicators for modified chapters
- Banner showing what changed in the PR
Triggers: PR opened, reopened, synchronized, closed, labeled, or unlabeled
Labels:
- Add
no-preview-highlightslabel to disable change highlighting if itβs glitchy
Runs automated spell checking on pushes and pull requests to maintain content quality.
Triggers: Push to main, pull requests
Checks R code style and quality using the lintr package.
Triggers: Push to main/master, pull requests
Note: Only runs if your project contains R code.
Configures the GitHub Copilot coding agentβs environment with Quarto and TinyTeX.
Triggers: Workflow dispatch, changes to the setup file
Automatically generates AI-powered summaries for newly opened issues.
Triggers: New issue opened
Permissions required: The models: read permission for AI inference
Validates that all books and articles in bibliography files meet DOI requirements:
- Every book and article must have a DOI field
- Every DOI must resolve to a valid URL
- Reference information is checked against DOI metadata for consistency
Triggers: Push to main, pull requests, manual dispatch
Note: This helps maintain high-quality bibliographic references and ensures all citations are properly traceable.
.
βββ _quarto.yml # Main configuration file
βββ index.qmd # Book homepage/introduction
βββ chapter1.qmd # Sample chapter 1
βββ chapter2.qmd # Sample chapter 2
βββ references.qmd # References page
βββ references.bib # BibTeX bibliography
βββ styles.css # Custom CSS styles
βββ lychee.toml # Link checker configuration
βββ .gitignore # Git ignore file
βββ LICENSE # CC0 1.0 Universal License
βββ README.md # This file
βββ .github/
βββ scripts/ # Scripts for workflows
β βββ add-home-banner.py
β βββ check-bibliography-dois.R
β βββ create-docx-tracked-changes.py
β βββ detect-changed-chapters.py
β βββ highlight-html-changes.py
β βββ inject-preview-metadata.py
βββ workflows/ # GitHub Actions workflows
βββ publish.yml # Build and deploy to GitHub Pages
βββ preview.yml # PR preview with change highlighting
βββ check-spelling.yaml # Spell checking
βββ lint-project.yaml # R code linting
βββ copilot-setup-steps.yml # GitHub Copilot setup
βββ summary.yml # AI-powered issue summaries
βββ check-links.yml # URL reachability checker workflow
βββ check-bibliography-dois.yml # Bibliography DOI validation
This template includes two GitHub Actions workflows:
Automatically builds and deploys your book to GitHub Pages when you push to the main branch.
Automatically checks that all URLs in your book are reachable:
- Runs on: Push to main, pull requests, weekly schedule (Mondays at 9:00 UTC), and manual trigger
- Checks: All links in
.qmd,.md, and.htmlfiles - Reports: Workflow fails if broken links are detected. Check the workflow logs for details on which links are broken.
- Configuration: Customize behavior in
lychee.toml - Manual override: Add the
links checked by handlabel to a PR to skip the automated link check
To manually trigger the link checker:
- Go to the Actions tab in your repository
- Select βCheck Linksβ workflow
- Click βRun workflowβ
Quarto uses markdown with extensions. Here are some quick tips:
# Chapter Title
## Section
### Subsection```python
print("Hello, World!")
```Inline: $E = mc^2$
Display:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$Reference a citation: @citationkey
Reference figures, tables, and sections using labels:
See @fig-example for details.For more details, see the Quarto documentation.
Edit the format.html.theme section in _quarto.yml:
format:
html:
theme:
light: cosmo # Try: cosmo, flatly, litera, minty, etc.
dark: darkly # Try: darkly, cyborg, slate, superhero, etc.- Create a new
.qmdfile (e.g.,chapter3.qmd) - Add it to the
chapterslist in_quarto.yml:
book:
chapters:
- index.qmd
- chapter1.qmd
- chapter2.qmd
- chapter3.qmd # Your new chapter
- references.qmdAdd your custom styles to styles.css. These will override the default
theme styles.
This template is released under the CC0 1.0 Universal License, which means you can freely use, modify, and distribute it without any restrictions.
This template is based on the structure of the UCD-SERG Lab Manual, which was adapted from the Benjamin-Chung Lab Manual.
Feel free to open issues or submit pull requests to improve this template!