# Amethyst Hugo Theme [![Hugo](https://img.shields.io/badge/hugo-0.79-blue.svg)](https://gohugo.io) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) Amethyst combines the navigational features of [hugo-book](https://github.com/alex-shpak/hugo-book) with the Obsidian integrations of [quartz](https://github.com/jackyzha0/quartz) to provide a hassle-free place to store and host personal notes or documentation. Insert screenshot here ## Features - Most of the features of the original themes (Quartz and Book) - Mobile-friendly - Multi-language support - Customizable - Dark Mode - LaTeX support - Obsidian-style back/forward links and page previews - Interactive graph view - Tab cards for practice problems ## Requirements - **Go 1.16 or higher**: [installation instructions](https://golang.org/doc/install) - **Hugo 0.93 or higher:** [installation instructions](https://gohugo.io/getting-started/installing/) - If installing on Ubuntu/Debian-based systems, this is a higher version than is available in apt at the time of writing. Install the extended version from the [releases page](https://github.com/gohugoio/hugo/releases) instead. - **Hugo-obsidian:** Run `go install github.com/jackyzha0/hugo-obsidian@latest`. - If you're getting a `command not found` error, [ensure that your PATH is configured properly so that binaries in the GOPATH can be executed](https://stackoverflow.com/questions/21001387/how-do-i-set-the-gopath-environment-variable-on-ubuntu-what-file-must-i-edit). ## Installation ### Install as git submodule Navigate to your hugo project root and run: ``` git submodule add https://github.com/64bitpandas/amethyst themes/amethyst ``` Then run hugo (or set `theme = "amethyst"`/`theme: amethyst` in configuration file) ``` hugo server --minify --theme amethyst ``` ### Install as hugo module You can also add this theme as a Hugo module instead of a git submodule. Start with initializing hugo modules, if not done yet: ``` hugo mod init github.com/repo/path ``` Navigate to your hugo project root and add [module] section to your `config.toml`: ```toml [module] [[module.imports]] path = 'github.com/alex-shpak/hugo-book' ``` Then, to load/update the theme module and run hugo: ```sh hugo mod get -u hugo server --minify ``` ### Creating site from scratch Below is an example on how to create a new site from scratch: ```sh hugo new site mydocs; cd mydocs git init git submodule add https://github.com/alex-shpak/hugo-book themes/hugo-book cp -R themes/hugo-book/exampleSite/content . ``` ```sh hugo server --minify --theme hugo-book ``` ## Configuration ### Site Configuration Most configuration can be done by creating a `config.yaml` file in the root directory and editing the parameters. You can start by copying the example [here](https://github.com/64bitpandas/amethyst/blob/main/config.yaml). Graph-specific configuration can be added to `data/graphConfig.yaml`. (Example [here](https://github.com/64bitpandas/amethyst/blob/main/data/graphConfig.yaml)) ### Multi-Language Support Theme supports Hugo's [multilingual mode](https://gohugo.io/content-management/multilingual/), just follow configuration guide there. You can also tweak search indexing configuration per language in `i18n` folder. ### Page Configuration You can specify additional params in the front matter of individual pages: ```toml # Set type to 'docs' if you want to render page outside of configured section or if you render section other than 'docs' type = 'docs' # Set page weight to re-arrange items in file-tree menu (if BookMenuBundle not set) weight = 10 # (Optional) Set to 'true' to mark page as flat section in file-tree menu (if BookMenuBundle not set) bookFlatSection = false # (Optional) Set to hide nested sections or pages at that level. Works only with file-tree menu mode bookCollapseSection = true # (Optional) Set true to hide page or section from side menu (if BookMenuBundle not set) bookHidden = false # (Optional) Set 'false' to hide ToC from page bookToC = true # (Optional) If you have enabled BookComments for the site, you can disable it for specific pages. bookComments = true # (Optional) Set to 'false' to exclude page from search index. bookSearchExclude = true # (Optional) Set explicit href attribute for this page in a menu (if BookMenuBundle not set) bookHref = '' ``` ### Partials There are layout partials available for you to easily override components of the theme in `layouts/partials/`. In addition to this, there are several empty partials you can override to easily add/inject code. | Empty Partial | Placement | | -------------------------------------------------- | ------------------------------------------- | | `layouts/partials/docs/inject/head.html` | Before closing `
` tag | | `layouts/partials/docs/inject/body.html` | Before closing `` tag | | `layouts/partials/docs/inject/footer.html` | After page footer content | | `layouts/partials/docs/inject/menu-before.html` | At the beginning of `