Agda-Material
Agda-Material automates the steps that the Agda back-end leaves to the user when generating a website with highlighted, hyperlinked listings of Agda code.
This is the README page for the repository pdmosses/agda-material. It explains how to create a repository for using Agda-Material.
See the About page for an overview of motivation and features.
See the User Guide for a summary of how to generate websites with Agda-Material.
Repository contents
The repository contains the following files:
agda: directory for Agda source codedocs: directory for generating a websitedocs/javascripts: directory for Javascript filesdocs/stylesheets: directory for CSS filesdocs/.nav.yml: configuration file for navigation panelsdocs/about.md: Markdown source for the About pagedocs/README.md: Markdown source for this README pagedocs/Library/index.md: Markdown source for the Library pagedocs/Test/index.md: Markdown source for the Test page
CHANGELOG.md: summary of significant bug-fixes and feature updatesMakefile: automation of website generationmkdocs.yml: configuration file for the generated websiteUNLICENSE: release into the public domain
The repository does not contain any generated files.
By default, Agda-Material creates generated files in the following directories:
docs/html: HTML pagesdocs/md: Markdown pagessite: built websitetemp: temporary files
The default directories for Agda source code and generated files can be changed
by editing the Makefile. This affects the URLs of the generated web pages:
by default, the URL of the HTML page generated from a module named A.B.C is
of the form .../html/A.B.C.html, and that of the corresponding MD page is
of the form .../md/A/B/C/, where ... is the website URL (including the
version identifier, if any).
The location of the directory docs can be configured by setting docs_dir in
mkdocs.yml; it does not affect the URLs.
Software dependencies
Agda-Material has been tested with the software versions listed below. It should produce similar results with other recent versions (although Material for MkDocs v9.7 has many more features than v9.6).
- Agda (2.8.0)
- Awesome-nav (3.3.0)
- GNU Make (3.81)
- Material for MkDocs (9.7.6)
- mike (2.0.0)
- MkDocs (1.6.1)
- pip (26.0.1)
- Python 3 (3.14.0)
- sd (1.0.0)
Tip
Starting in Material for Mkdocs 9.7.2, a warning is printed during a build about the upcoming MkDocs 2.0 changes. To disable this warning:
export NO_MKDOCS_2_WARNING=1
Platform dependencies
Agda-Material has been developed and tested on MacBook laptops with Apple M1 and M3 chips running macOS Tahoe (26.3) with CLI Tools.
Please report any issues with using Agda-Material on other platforms, including all relevant details. Pull requests for addressing such issues are welcome.
Installing Agda-Material
Check that you have installed all the relevant software dependencies.
Then:
Either create a fresh repository
- Click on the Use this template button (near the top of the page)
Locally:
- Clone the resulting repository
Or copy files to your existing repository
- Click on <> Code then Clone or Download
Locally:
-
Copy/merge the following files and directories from
agda-materialto your repository:Makefilemkdocs.ymlagda/*docs/*.gitignore
Testing Agda-Material
-
In a terminal from the root directory of your repository:
make check make web make serve -
Then in a web browser:
- Open
localhost:8000/agda-material - Check that the local site corresponds to the Agda-Material website on GitHub Pages (apart from the version selector)
- Open
-
In the terminal:
make clean-allCheck that the following generated directories do not exist:
docs/htmldocs/mdsitetemp
Preparing to use Agda-Material
Update the MkDocs settings
In mkdocs.yml, update the repository settings:
site_namesite_urlrepo_namerepo_url
Replace the Agda modules
- Remove the
agdadirectory. - Add a directory containing your own Agda modules.
-
In
Makefile:- set the value of
DIRto the directory containing your Agda modules; - set the value of
ROOTto the name of a module that imports all the other modules to be included in your website.
Both
DIRandROOTcan be a comma-separated list: web pages are generated for all modules in theROOTlist, and for all imported modules found either in the directories inDIRlist or in libraries. - set the value of
Update Markdown source files and navigation
Replace all docs/*.md files by your own Markdown file(s).
- Your website home page should be named
docs/index.mdordocs/README.md. - Update
docs/.nav.ymlto create your desired navigation hierarchy.1
See the User Guide for a summary of how to generate websites with Agda-Material.
Upgrading to the latest version
Compare the current contents of the following files in the main branch with
the copies in your fork or clone of this repository:
docs/javascripts/*.jsdocs/stylesheets/*.cssMakefilemkdocs.yml
Copy all changes that do not conflict with your own changes.
Contributing
Please report any issues with using Agda-Material, including all relevant details. Pull requests for addressing reported issues are welcome. Discussions may include queries, comments, and suggestions for improvement, announcements about Agda-Material, and links to websites generated using it.
Contact
Peter Mosses