From ee43cedfbaef5b4d302daa5e5d9b546c7b41fe0b Mon Sep 17 00:00:00 2001 From: tengel Date: Wed, 20 Mar 2024 11:13:10 -0500 Subject: [PATCH] importing --- .gitignore | 1 + README.md | 125 +++++------ bin/debian_pandoc.sh | 15 ++ bin/generate_html.sh | 43 ++++ style/body_after.html | 5 + style/body_before.html | 15 ++ style/favicon.ico | Bin 0 -> 5430 bytes style/header_include.html | 6 + style/mdhtml.css | 453 ++++++++++++++++++++++++++++++++++++++ style/pandoc_html.tpl | 65 ++++++ 10 files changed, 662 insertions(+), 66 deletions(-) create mode 100644 .gitignore create mode 100644 bin/debian_pandoc.sh create mode 100644 bin/generate_html.sh create mode 100644 style/body_after.html create mode 100644 style/body_before.html create mode 100644 style/favicon.ico create mode 100644 style/header_include.html create mode 100644 style/mdhtml.css create mode 100644 style/pandoc_html.tpl diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..364fdec --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +public/ diff --git a/README.md b/README.md index 719d566..2185d9f 100644 --- a/README.md +++ b/README.md @@ -2,89 +2,82 @@ A simple static site generator leveraging markdown, pandoc and CI/CD automation -## Getting started +## Overview -To make it easy for you to get started with GitLab, here's a list of recommended next steps. +This is a Static Site Generator implementation which meets a few design choices: -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! + 1. All documents are authored in pure [GFM](https://github.github.com/gfm/) + 2. All processing is done with [Pandoc](https://pandoc.org) + 3. All stylistic elements are pure CSS, documents display w/o CSS if needed + 4. All viewport sizes scale up/down to the device (desktop, mobile, tablet) -## Add your files +The intent is KISS in nature - very few moving parts, portable to any system and easy to implement. All documents can be authored and proofed within the web interface of Gitlab/Github Markdown itself, which should result in identical HTML output when processed by Pandoc. -- [ ] [Create](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: +The CSS styling can be customized to display as desired without requiring any special markup within the documents themselves. The intent is to not embed any markup which does not comply with the GFM specification. + +## Document Requirements + +As the GFM spec does not support every possible HTML need, a few minor authoring requirements are required for best results: + + - All markdown documents live in the `src/` subdirectory + - Both `src/index.md` and `src/license.md` documents are expected to exist for basic navigation needs (HTML links in navigation template) + - The first line of each markdown document must begin with a single hash and space then title (`# Title`); this text will be extracted by the shell script and passed to Pandoc as the document's `title` HTML attribute + - Document references ending in `.md)` are transposed to `.html)`; store links to MD internally (e.g.: `[link](file.md)` becomes `[link](file.html)` on the fly) + +The processing rules for these requirements are located in `bin/generate_html.sh`; see the [Visual Design](#visual-design) section for additional files required for Pandoc processing to HTML. + +### Document Authoring Caveats + +In order to maintain compatibility with viewing the documents in both Gitlab/Github web interface _and_ generated HTML identically, a few caveats in document authoring. + + - Table of Contents must be manually maintained; while Pandoc can generate one, the desire is to also have a usable TOC within the Gitlab/Github web interface itself. Pandoc will generate the exact same HTML anchors using the same logic methods as Gitlab/Github; it's possible to have Pandoc generate a TOC for you and cut&paste it back in, or 3rd party web tools exist which can also generate a TOC quickly + - Citations require double documenting in order to display as a section as well as inline; the markdown spec ("collapsed reference link") doesn't create a section out of the link reference definitions themselves + +One example of Citations which will work inline and display as a section, other methods are possible: ``` -cd existing_repo -git remote add origin https://gitlab.com/tengel/caltema.git -git branch -M main -git push -uf origin main +## Some Section + +This is a citation [(1)][c1] link which will use [(2)][c2] the URLs inline when viewed. + +## Citations + + 1. + 2. + +[c1]: https://example.com +[c2]: https://foobar.com ``` -## Integrate with your tools +A few other template files are required, see below. -- [ ] [Set up project integrations](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/user/project/integrations/) +## Visual Design -## Collaborate with your team +The HTML generation is leveraging the Pandoc capabilities to include CSS and HTML templates around the generated document. The following are used: -- [ ] [Invite team members and collaborators](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Automatically merge when pipeline succeeds](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) + - `style/pandoc_html.tpl` - core Pandoc template used during processing, a slightly customized version of the Pandoc default to remove hard-coded CSS values + - `style/mdhtml.css` - the CSS used, copied to `./public/` and linked to every generated HTML file + - `style/body_before.html` - included before the document content; implements the navigation bar and core CSS containers (div, article, etc.) + - `style/body_after.html` - included after the document content; closes the container tags (div, article, etc.) + - `style/header_include.html` - HTML header elements to display favicon and other various HTML metadata + - `style/favicon.ico` - the website icon, copied to `./public/` and linked to every generated HTML file -## Test and Deploy +The document content generated by Pandoc has no CSS selectors used; the manipulation of visual style is handled by embedding the document content into a named container, then styling the container elements. The named files are used in `bin/generate_html.sh` and can be renamed easily. -Use the built-in continuous integration in GitLab. +## Static Site Generation -- [ ] [Get started with GitLab CI/CD](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://docs.gitlab.com/ee/user/clusters/agent/) +The static site generation is managed by CI/CD: -*** + - Debian latest docker image is used + - Latest [pandoc DEB download](https://github.com/jgm/pandoc/releases) is used -# Editing this README +The process is designed to allow for local desktop development without a git commit, the CI/CD runs shell scripts to perform the work: -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://gitlab.com/-/experiment/new_project_readme_content:820b5e9c7c957edea33e394a28664e23?https://www.makeareadme.com/) for this template. + - `bin/debian_pandoc.sh` - prepares the image with the very latest Pandoc download available + - `bin/generate_html.sh` - builds the finished HTML+CSS into `./build/` -## Suggestions for a good README -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. +Commits to `master` trigger CI/CD to publish new Pages in it's entirety using the included Gitlab `.gitlab-ci.yml` configuration, which runs the above shell scripts. -## Name -Choose a self-explaining name for your project. +For desktop development, it's only needed to set up Pandoc once, then use `bin/generate_html.sh` from the top level directory to regenerate the output for proofing. All output goes into the `public/` subdirectory which is excluded from git operations (`.gitignore`), one can `rm -rf ./public` routinely. -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. - -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. - -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. - -## Contributing -State if you are open to contributions and what your requirements are for accepting them. - -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. - -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. - -## License -For open source projects, say how it is licensed. - -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. +SPDX-License-Identifier: MIT diff --git a/bin/debian_pandoc.sh b/bin/debian_pandoc.sh new file mode 100644 index 0000000..cabc3ef --- /dev/null +++ b/bin/debian_pandoc.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# +# SPDX-License-Identifier: MIT + +export DEBCONF_NOWARNINGS="yes" +echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections +apt-get -qq update +apt-get -qq -y install curl pandoc + +_VER=$(curl -s "https://api.github.com/repos/jgm/pandoc/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")') + +curl -sLo "pandoc-${_VER}-1-amd64.deb" "https://github.com/jgm/pandoc/releases/download/${_VER}/pandoc-${_VER}-1-amd64.deb" + +apt-get -qq -y install "./pandoc-${_VER}-1-amd64.deb" +apt-get -qq -y autoremove diff --git a/bin/generate_html.sh b/bin/generate_html.sh new file mode 100644 index 0000000..842a24d --- /dev/null +++ b/bin/generate_html.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# +# SPDX-License-Identifier: MIT + +# gitlab-ci looks here +[[ ! -d ./public ]] && mkdir ./public + +# copy our CSS - +_CSS="mdhtml.css" +cp "./style/${_CSS}" ./public/ + +# icon +_FAV="favicon.ico" +cp "./style/${_FAV}" ./public/ + +# ./src/foo.md -> ./public/foo.html +for file in ./src/*.md; do + _FILE="${file##*/}" + _HTML="./public/${_FILE%.*}.html" + echo "Processing $file to $_HTML" + + # metadata for pandoc + _TITLE=$(grep -m1 "^# " "$file" | sed -r 's/# //') + + # [foo](foo.md) -> [foo](foo.html) + # sed -i -r 's/(\[.*?\])\((.*?)\.md\)/\1(\2.html)/' "$file" + # sed does not support non-greedy (.*?) like perl, we have to hack it + sed -i -r \ + -e ':loop' \ + -e 's/(\[.*\])\((.*)\.md\)/\1(\2.html)/g' \ + -e 't loop' $file + + pandoc -s \ + -f gfm+gfm_auto_identifiers-ascii_identifiers \ + -t html \ + --template="./style/pandoc_html.tpl" \ + --include-in-header="./style/header_include.html" \ + --include-before-body="./style/body_before.html" \ + --include-after-body="./style/body_after.html" \ + --metadata pagetitle="$_TITLE" \ + --css="${_CSS}" \ + -o "${_HTML}" "$file" +done diff --git a/style/body_after.html b/style/body_after.html new file mode 100644 index 0000000..ce57c13 --- /dev/null +++ b/style/body_after.html @@ -0,0 +1,5 @@ + + + + + diff --git a/style/body_before.html b/style/body_before.html new file mode 100644 index 0000000..10f437c --- /dev/null +++ b/style/body_before.html @@ -0,0 +1,15 @@ + + +
+ +
+ +
+
+ diff --git a/style/favicon.ico b/style/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c7d5e5c5b123f2d8d894aee0c5f0af29fc6dba34 GIT binary patch literal 5430 zcmeH~TZoNO6vy|uKe(L9!3#B~l#o*78V!>a4=zbblBYpK$>jkL2hs4rgmM`%c~BH0 z@gU_gk!w;)$~4aKph=9GX*$L<+y6gj?P=S6W6n9g)6BzJ^=qxQ*ZS7_&i=k{?|qaC zsGuq0od~lr~@BC8XN{GFb8XA1DR8i za0>5qOcE=g`HY8@Xv`{U#@)4ncJL5)On#MvdZj*vvUJyC65oIo*=u+m*O??(2)G`V zq%;Hh&Oj&>3g@}T=iB0+`H4g#fP}B03%rX&B0=YZT@q`8<||(eIgO(DqI%c8-u=&N zGGAhhS6kzLn#-&n8|}ifFLOO+f3B;(3!Z-hMSB2y)O$4GzQ9;Z5#N;$(xWjNjk@mu z_XGAPmB0_-yEMb%B5c;@Jj}xH9BzQWNMeld#y1mz?h}4PeNOJiYowar^uL%jTsuf5PsEX0?Z&C=tUM~$@-<2_V(#QhjLDLsD6+H2S38L>;?p5eQo z=U6ZXXA7>$B`M87!84#8=}BqbGqPN3Lp-i^O5oy6SQW@Y}Y#DG=uvG1-Nk- literal 0 HcmV?d00001 diff --git a/style/header_include.html b/style/header_include.html new file mode 100644 index 0000000..5ce28b4 --- /dev/null +++ b/style/header_include.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/style/mdhtml.css b/style/mdhtml.css new file mode 100644 index 0000000..90c454d --- /dev/null +++ b/style/mdhtml.css @@ -0,0 +1,453 @@ +article { + display: block; +} + +a { + background-color: initial; + color: #0366d6; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +a:active,a:hover { + outline-width: 0; +} + +body { + font-family: Futura, Verdana, "Liberation Sans", sans-serif; + background: #484f55; +} + +strong { + font-weight: inherit; + font-weight: 600; +} + +* { + box-sizing: border-box; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td,th { + padding: 0; +} + +h1,h2,h3,h4,h5,h6 { + margin-bottom: 0; + margin-top: 0; +} + +h1 { + margin-left: 0; + margin-right: 0; + font-size: 32px; +} + +h1,h2 { + font-weight: 600; +} + +h2 { + font-size: 24px; +} + +h3 { + font-size: 20px; +} + +h3,h4 { + font-weight: 600; +} + +h4 { + font-size: 16px; +} + +h5 { + font-size: 14px; +} + +h5,h6 { + font-weight: 600; +} + +h6 { + font-size: 12px; +} + +p { + margin-bottom: 10px; + margin-top: 0; +} + +ul { + margin-bottom: 0; + margin-top: 0; + padding-left: 0; +} + +blockquote { + margin: 0; +} + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +@media (min-width:1160px) { + .container { + max-width: 1140px; + } +} + +@media (max-width:1024px) { + .container { + padding: 0px 2px; + } +} + +.container-fluid { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +.container:after,.container:before { + content: ""; + display: table; +} + +.container:after { + clear: both; +} + +.markdown-body { + font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body:after,.markdown-body:before { + content: ""; + display: table; +} + +.markdown-body:after { + clear: both; +} + +.markdown-body>:first-child { + margin-top: 0!important; +} + +.markdown-body>:last-child { + margin-bottom: 0!important; +} + +.markdown-body .anchor { + float: left; + line-height: 1; + margin-left: -20px; + padding-right: 4px; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body blockquote,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul { + margin-bottom: 16px; + margin-top: 0; +} + +.markdown-body blockquote { + border-left: .25em solid #dfe2e5; + color: #41464d; + padding: 0 1em; +} + +.markdown-body blockquote>:first-child { + margin-top: 0; +} + +.markdown-body blockquote>:last-child { + margin-bottom: 0; +} + +.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6 { + font-weight: 600; + line-height: 1.25; + margin-bottom: 16px; + margin-top: 24px; +} + +.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1 { + font-size: 2em; +} + +.markdown-body h1,.markdown-body h2 { + padding-bottom: .3em; +} + +.markdown-body h2 { + border-bottom: 1px solid #eaecef; + font-size: 1.5em; +} + +.markdown-body h3 { + font-size: 1.25em; +} + +.markdown-body h4 { + font-size: 1em; +} + +.markdown-body h5 { + font-size: .875em; +} + +.markdown-body h6 { + color: #6a737d; + font-size: .85em; +} + +.markdown-body ul { + padding-left: 2em; +} + +.markdown-body ul ul { + margin-bottom: 0; + margin-top: 0; +} + +.markdown-body li { + word-wrap: break-all; +} + +.markdown-body li+li { + margin-top: .25em; +} + +.markdown-body table { + display: block; + overflow: auto; + width: 100%; +} + +.markdown-body table th { + font-weight: 600; + background-color: #f4f6f8; +} + +.markdown-body table td,.markdown-body table th { + border: 1px solid #dfe2e5; + padding: 6px 13px; +} + +.markdown-body table tr { + background-color: #fff; + border-top: 1px solid #c6cbd1; +} + +.markdown-body table tr:nth-child(2n) { + background-color: #f6f8fa; +} + +.markdown-body code { + background-color: rgba(27,31,35,.05); + border-radius: 3px; + font-size: 85%; + margin: 0; + padding: .2em .4em; +} + +.markdown-body pre { + word-wrap: normal; +} + +.markdown-body pre>code { + background: transparent; + border: 0; + font-size: 100%; + margin: 0; + padding: 0; + white-space: pre; + word-break: normal; +} + +.markdown-body pre { + background-color: #f6f8fa; + border-radius: 3px; + font-size: 85%; + line-height: 1.45; + overflow: auto; + padding: 16px; +} + +.markdown-body pre code { + background-color: initial; + border: 0; + display: inline; + line-height: inherit; + margin: 0; + max-width: auto; + overflow: visible; + padding: 0; + word-wrap: normal; +} + +p { + page-break-inside: avoid; +} + +.markdown-body h2 { + page-break-after: avoid; +} + +.markdown-body pre>code { + white-space: pre-wrap; +} + +.container .markdown-body { + background-color: #fff; + border: 0; + border-radius: 0; + padding: 25px 45px; + word-wrap: break-word; +} + +@media (max-width:640px) { + .container .markdown-body { + padding: 10px 15px; + } +} + +@media (max-width:1024px) { + .container .markdown-body { + padding: 15px 20px; + } +} + +nav { + display:block; +} + +.navbar { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; +} + +.navbar>.container { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; +} + +.navbar-brand { + display: inline-block; + font-weight: 600; + line-height: inherit; + white-space: nowrap; +} + +.navbar-brand:focus,.navbar-brand:hover { + text-decoration: none; +} + +.navbar-title { + display: block; + padding: .4rem 1rem; +} + +.navbar-nav { + display: flex; + flex-direction: row; + padding-left: 0; + margin-bottom: 0; + list-style: none; + margin-left:auto!important; +} + +.navbar-nav>:last-child { + border-left: 1px solid #bbbbbb; +} + +.navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; +} + +.nav-link { + display: block; + padding: .4rem 1rem; +} + +.nav-link:focus,.nav-link:hover { + text-decoration: none; +} + +.navbar-dark { + background-color: #343a40 !important; +} + +.navbar-dark .navbar-brand { + color: #fff; +} + +.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover { + color: #fff; +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255,255,255,.75); +} + +.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover { + color: rgba(255,255,255,.95); +} + +@media (max-width:991.98px) { + .navbar-expand-lg>.container { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width:992px) { + .navbar-expand-lg { + flex-flow: row nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; + } + .navbar-expand-lg>.container { + flex-wrap: nowrap; + } +} diff --git a/style/pandoc_html.tpl b/style/pandoc_html.tpl new file mode 100644 index 0000000..b7f0827 --- /dev/null +++ b/style/pandoc_html.tpl @@ -0,0 +1,65 @@ + + + + + + +$for(author-meta)$ + +$endfor$ +$if(date-meta)$ + +$endif$ +$if(keywords)$ + +$endif$ + $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ +$if(quotes)$ + +$endif$ +$if(highlighting-css)$ + +$endif$ +$for(css)$ + +$endfor$ +$if(math)$ + $math$ +$endif$ +$for(header-includes)$ + $header-includes$ +$endfor$ + + +$for(include-before)$ +$include-before$ +$endfor$ +$if(title)$ +
+

$title$

+$if(subtitle)$ +

$subtitle$

+$endif$ +$for(author)$ +

$author$

+$endfor$ +$if(date)$ +

$date$

+$endif$ +
+$endif$ +$if(toc)$ + +$endif$ +$body$ +$for(include-after)$ +$include-after$ +$endfor$ + +