├── .gitignore ├── docs ├── index_foot.html ├── thumb │ ├── basic.png │ ├── hyde.png │ ├── tufte.png │ ├── vela.png │ ├── jemdoc.png │ ├── lanyon.png │ ├── pure-sm.png │ ├── sandbox.png │ ├── hypertext.png │ ├── just-the-docs.png │ └── minimal-mistakes.png ├── index_head.html └── make.jl ├── src ├── templates │ ├── common │ │ ├── .gitignore │ │ ├── _layout │ │ │ ├── head_katex.html │ │ │ ├── head_highlight.html │ │ │ ├── foot_highlight.html │ │ │ ├── foot_katex.html │ │ │ ├── foot.html │ │ │ ├── page_foot.html │ │ │ └── tag.html │ │ ├── _assets │ │ │ ├── favicon.png │ │ │ ├── rndimg.jpg │ │ │ ├── scripts │ │ │ │ ├── output │ │ │ │ │ └── script1.out │ │ │ │ ├── script2.jl │ │ │ │ ├── script1.jl │ │ │ │ └── generate_results.jl │ │ │ └── hamburger.svg │ │ ├── _libs │ │ │ ├── katex │ │ │ │ ├── fonts │ │ │ │ │ ├── KaTeX_AMS-Regular.ttf │ │ │ │ │ ├── KaTeX_Main-Bold.ttf │ │ │ │ │ ├── KaTeX_Main-Bold.woff │ │ │ │ │ ├── KaTeX_Main-Bold.woff2 │ │ │ │ │ ├── KaTeX_Main-Italic.ttf │ │ │ │ │ ├── KaTeX_Math-Italic.ttf │ │ │ │ │ ├── KaTeX_AMS-Regular.woff │ │ │ │ │ ├── KaTeX_AMS-Regular.woff2 │ │ │ │ │ ├── KaTeX_Fraktur-Bold.ttf │ │ │ │ │ ├── KaTeX_Fraktur-Bold.woff │ │ │ │ │ ├── KaTeX_Main-Italic.woff │ │ │ │ │ ├── KaTeX_Main-Italic.woff2 │ │ │ │ │ ├── KaTeX_Main-Regular.ttf │ │ │ │ │ ├── KaTeX_Main-Regular.woff │ │ │ │ │ ├── KaTeX_Math-Italic.woff │ │ │ │ │ ├── KaTeX_Math-Italic.woff2 │ │ │ │ │ ├── KaTeX_Size1-Regular.ttf │ │ │ │ │ ├── KaTeX_Size2-Regular.ttf │ │ │ │ │ ├── KaTeX_Size3-Regular.ttf │ │ │ │ │ ├── KaTeX_Size4-Regular.ttf │ │ │ │ │ ├── KaTeX_Caligraphic-Bold.ttf │ │ │ │ │ ├── KaTeX_Fraktur-Bold.woff2 │ │ │ │ │ ├── KaTeX_Fraktur-Regular.ttf │ │ │ │ │ ├── KaTeX_Fraktur-Regular.woff │ │ │ │ │ ├── KaTeX_Main-BoldItalic.ttf │ │ │ │ │ ├── KaTeX_Main-BoldItalic.woff │ │ │ │ │ ├── KaTeX_Main-Regular.woff2 │ │ │ │ │ ├── KaTeX_Math-BoldItalic.ttf │ │ │ │ │ ├── KaTeX_Math-BoldItalic.woff │ │ │ │ │ ├── KaTeX_SansSerif-Bold.ttf │ │ │ │ │ ├── KaTeX_SansSerif-Bold.woff │ │ │ │ │ ├── KaTeX_SansSerif-Bold.woff2 │ │ │ │ │ ├── KaTeX_SansSerif-Italic.ttf │ │ │ │ │ ├── KaTeX_Script-Regular.ttf │ │ │ │ │ ├── KaTeX_Script-Regular.woff │ │ │ │ │ ├── KaTeX_Script-Regular.woff2 │ │ │ │ │ ├── KaTeX_Size1-Regular.woff │ │ │ │ │ ├── KaTeX_Size1-Regular.woff2 │ │ │ │ │ ├── KaTeX_Size2-Regular.woff │ │ │ │ │ ├── KaTeX_Size2-Regular.woff2 │ │ │ │ │ ├── KaTeX_Size3-Regular.woff │ │ │ │ │ ├── KaTeX_Size3-Regular.woff2 │ │ │ │ │ ├── KaTeX_Size4-Regular.woff │ │ │ │ │ ├── KaTeX_Size4-Regular.woff2 │ │ │ │ │ ├── KaTeX_Caligraphic-Bold.woff │ │ │ │ │ ├── KaTeX_Caligraphic-Bold.woff2 │ │ │ │ │ ├── KaTeX_Fraktur-Regular.woff2 │ │ │ │ │ ├── KaTeX_Main-BoldItalic.woff2 │ │ │ │ │ ├── KaTeX_Math-BoldItalic.woff2 │ │ │ │ │ ├── KaTeX_SansSerif-Italic.woff │ │ │ │ │ ├── KaTeX_SansSerif-Italic.woff2 │ │ │ │ │ ├── KaTeX_SansSerif-Regular.ttf │ │ │ │ │ ├── KaTeX_SansSerif-Regular.woff │ │ │ │ │ ├── KaTeX_Typewriter-Regular.ttf │ │ │ │ │ ├── KaTeX_Caligraphic-Regular.ttf │ │ │ │ │ ├── KaTeX_Caligraphic-Regular.woff │ │ │ │ │ ├── KaTeX_Caligraphic-Regular.woff2 │ │ │ │ │ ├── KaTeX_SansSerif-Regular.woff2 │ │ │ │ │ ├── KaTeX_Typewriter-Regular.woff │ │ │ │ │ └── KaTeX_Typewriter-Regular.woff2 │ │ │ │ └── auto-render.min.js │ │ │ └── highlight │ │ │ │ └── github.min.css │ │ ├── .gitlab-ci.yml │ │ ├── utils.jl │ │ ├── config.md │ │ ├── .github │ │ │ └── workflows │ │ │ │ └── deploy.yml │ │ ├── menu1.md │ │ ├── menu3.md │ │ ├── menu2.md │ │ ├── _css │ │ │ └── franklin.css │ │ └── index.md │ ├── just-the-docs │ │ ├── _layout │ │ │ ├── style.html │ │ │ ├── foot.html │ │ │ ├── head.html │ │ │ ├── tag.html │ │ │ └── pgwrap.html │ │ └── _assets │ │ │ └── favicon.ico │ ├── sandbox-extended │ │ ├── config.md │ │ ├── Project.toml │ │ ├── gr.md │ │ ├── literate.md │ │ ├── _layout │ │ │ └── head.html │ │ ├── index.md │ │ ├── hyperscript.md │ │ ├── _literate │ │ │ └── ex1.jl │ │ ├── mdpad.md │ │ ├── _libs │ │ │ └── mdpad │ │ │ │ ├── mdpad.min.js │ │ │ │ └── mdpad-mithril.js │ │ ├── pyplot.md │ │ └── plotly.md │ ├── sandbox │ │ ├── config.md │ │ ├── _layout │ │ │ └── head.html │ │ └── index.md │ ├── jemdoc │ │ ├── _layout │ │ │ ├── style.html │ │ │ ├── foot.html │ │ │ ├── head.html │ │ │ ├── tag.html │ │ │ └── table.html │ │ └── _css │ │ │ └── jemdoc.css │ ├── hypertext │ │ ├── _layout │ │ │ ├── style.html │ │ │ ├── header.html │ │ │ ├── tag.html │ │ │ └── head.html │ │ └── _css │ │ │ └── hypertext.css │ ├── minimal-mistakes │ │ ├── _assets │ │ │ └── minimal-mistakes │ │ │ │ ├── zenobia.png │ │ │ │ ├── mm-free-feature.png │ │ │ │ ├── mm-home-page-feature.jpg │ │ │ │ ├── mm-responsive-feature.png │ │ │ │ └── mm-customizable-feature.png │ │ ├── _layout │ │ │ ├── style.html │ │ │ ├── head.html │ │ │ ├── masthead.html │ │ │ ├── body_layout.html │ │ │ ├── foot.html │ │ │ └── tag.html │ │ ├── _css │ │ │ └── adjust.css │ │ └── index.html │ ├── vela │ │ ├── _layout │ │ │ ├── style.html │ │ │ ├── foot.html │ │ │ ├── head.html │ │ │ ├── tag.html │ │ │ └── nav.html │ │ └── _libs │ │ │ └── vela │ │ │ ├── init_metisMenu.js │ │ │ ├── metisMenu.min.js │ │ │ └── slideout.min.js │ ├── lanyon │ │ ├── _layout │ │ │ ├── style.html │ │ │ ├── foot.html │ │ │ ├── head.html │ │ │ ├── tag.html │ │ │ └── sidebar.html │ │ └── _css │ │ │ ├── adjust.css │ │ │ └── poole_lanyon.css │ ├── tufte │ │ ├── _assets │ │ │ └── et-book │ │ │ │ ├── et-book-bold-line-figures │ │ │ │ ├── et-book-bold-line-figures.eot │ │ │ │ ├── et-book-bold-line-figures.ttf │ │ │ │ └── et-book-bold-line-figures.woff │ │ │ │ ├── et-book-roman-line-figures │ │ │ │ ├── et-book-roman-line-figures.eot │ │ │ │ ├── et-book-roman-line-figures.ttf │ │ │ │ └── et-book-roman-line-figures.woff │ │ │ │ ├── et-book-roman-old-style-figures │ │ │ │ ├── et-book-roman-old-style-figures.eot │ │ │ │ ├── et-book-roman-old-style-figures.ttf │ │ │ │ └── et-book-roman-old-style-figures.woff │ │ │ │ ├── et-book-semi-bold-old-style-figures │ │ │ │ ├── et-book-semi-bold-old-style-figures.eot │ │ │ │ ├── et-book-semi-bold-old-style-figures.ttf │ │ │ │ └── et-book-semi-bold-old-style-figures.woff │ │ │ │ └── et-book-display-italic-old-style-figures │ │ │ │ ├── et-book-display-italic-old-style-figures.eot │ │ │ │ ├── et-book-display-italic-old-style-figures.ttf │ │ │ │ └── et-book-display-italic-old-style-figures.woff │ │ ├── _layout │ │ │ ├── style.html │ │ │ ├── nav.html │ │ │ ├── foot.html │ │ │ ├── head.html │ │ │ └── tag.html │ │ └── _css │ │ │ ├── latex.css │ │ │ └── adjust.css │ ├── hyde │ │ ├── _layout │ │ │ ├── foot.html │ │ │ ├── tag.html │ │ │ ├── head.html │ │ │ ├── style.html │ │ │ └── sidebar.html │ │ └── _css │ │ │ └── poole_hyde.css │ ├── pure-sm │ │ ├── _layout │ │ │ ├── foot.html │ │ │ ├── style.html │ │ │ ├── head.html │ │ │ ├── tag.html │ │ │ └── sidebar.html │ │ ├── _libs │ │ │ └── pure │ │ │ │ └── ui.min.js │ │ └── _css │ │ │ └── side-menu.css │ └── basic │ │ ├── _layout │ │ ├── header.html │ │ ├── tag.html │ │ └── head.html │ │ └── _css │ │ └── basic.css ├── FranklinTemplates.jl └── utils.jl ├── Project.toml ├── .github └── workflows │ └── TagBot.yml ├── deploy.jl ├── LICENSE.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *DS_Store 2 | docs/build/ 3 | junk/ 4 | -------------------------------------------------------------------------------- /docs/index_foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/thumb/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/basic.png -------------------------------------------------------------------------------- /docs/thumb/hyde.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/hyde.png -------------------------------------------------------------------------------- /docs/thumb/tufte.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/tufte.png -------------------------------------------------------------------------------- /docs/thumb/vela.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/vela.png -------------------------------------------------------------------------------- /src/templates/common/.gitignore: -------------------------------------------------------------------------------- 1 | __site/ 2 | .DS_Store 3 | franklin 4 | franklin.pub 5 | node_modules/ 6 | -------------------------------------------------------------------------------- /src/templates/common/_layout/head_katex.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/thumb/jemdoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/jemdoc.png -------------------------------------------------------------------------------- /docs/thumb/lanyon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/lanyon.png -------------------------------------------------------------------------------- /docs/thumb/pure-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/pure-sm.png -------------------------------------------------------------------------------- /docs/thumb/sandbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/sandbox.png -------------------------------------------------------------------------------- /docs/thumb/hypertext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/hypertext.png -------------------------------------------------------------------------------- /src/templates/common/_layout/head_highlight.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/thumb/just-the-docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/just-the-docs.png -------------------------------------------------------------------------------- /docs/thumb/minimal-mistakes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/docs/thumb/minimal-mistakes.png -------------------------------------------------------------------------------- /src/templates/common/_assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_assets/favicon.png -------------------------------------------------------------------------------- /src/templates/common/_assets/rndimg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_assets/rndimg.jpg -------------------------------------------------------------------------------- /src/templates/common/_assets/scripts/output/script1.out: -------------------------------------------------------------------------------- 1 | *---------1.3 2 | **--------1.3 3 | ***-------1.3 4 | ****------1.3 5 | *****-----1.3 6 | -------------------------------------------------------------------------------- /src/templates/just-the-docs/_layout/style.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/templates/just-the-docs/_assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/just-the-docs/_assets/favicon.ico -------------------------------------------------------------------------------- /src/templates/sandbox-extended/config.md: -------------------------------------------------------------------------------- 1 | @def author = "The Oracle" 2 | 3 | @def hasplotly = false 4 | @def hasmdpad = false 5 | 6 | @def generate_rss = false 7 | -------------------------------------------------------------------------------- /src/templates/sandbox/config.md: -------------------------------------------------------------------------------- 1 | @def author = "The Oracle" 2 | 3 | \newcommand{\R}{\mathbb R} 4 | \newcommand{\scal}[1]{\langle #1 \rangle} 5 | 6 | @def generate_rss = false 7 | -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_AMS-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_AMS-Regular.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-Bold.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-Bold.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-Italic.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Math-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Math-Italic.ttf -------------------------------------------------------------------------------- /src/templates/common/_assets/scripts/script2.jl: -------------------------------------------------------------------------------- 1 | using PyPlot 2 | x = range(0, stop=1, length=50) 3 | plot(x, sin.(2x).*exp.(-x/3)) 4 | savefig(joinpath(@__DIR__, "output", "script2.svg")) 5 | -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_AMS-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_AMS-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Bold.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Bold.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-Italic.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-Regular.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Math-Italic.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size1-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size1-Regular.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size2-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size2-Regular.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size3-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size3-Regular.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size4-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size4-Regular.ttf -------------------------------------------------------------------------------- /src/templates/jemdoc/_layout/style.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Bold.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Regular.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-BoldItalic.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-BoldItalic.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Math-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Math-BoldItalic.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Math-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Math-BoldItalic.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Bold.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Bold.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Italic.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Script-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Script-Regular.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Script-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Script-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size1-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size1-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size2-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size3-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size4-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/hypertext/_layout/style.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/templates/common/_layout/foot_highlight.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Bold.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Math-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Math-BoldItalic.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Italic.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Regular.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Typewriter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Typewriter-Regular.ttf -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_assets/minimal-mistakes/zenobia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/minimal-mistakes/_assets/minimal-mistakes/zenobia.png -------------------------------------------------------------------------------- /Project.toml: -------------------------------------------------------------------------------- 1 | name = "FranklinTemplates" 2 | uuid = "3a985190-f512-4703-8d38-2a7944ed5916" 3 | authors = ["Thibaut Lienart "] 4 | version = "0.7.2" 5 | 6 | [compat] 7 | julia = "^1.1" 8 | -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Regular.ttf -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Typewriter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Typewriter-Regular.woff -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/common/_libs/katex/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /src/templates/common/_layout/foot_katex.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_assets/minimal-mistakes/mm-free-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/minimal-mistakes/_assets/minimal-mistakes/mm-free-feature.png -------------------------------------------------------------------------------- /src/templates/common/.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | pages: 2 | stage: deploy 3 | script: 4 | - mv __site public 5 | artifacts: 6 | paths: 7 | - public 8 | only: 9 | - master 10 | -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_assets/minimal-mistakes/mm-home-page-feature.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/minimal-mistakes/_assets/minimal-mistakes/mm-home-page-feature.jpg -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_assets/minimal-mistakes/mm-responsive-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/minimal-mistakes/_assets/minimal-mistakes/mm-responsive-feature.png -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_assets/minimal-mistakes/mm-customizable-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/minimal-mistakes/_assets/minimal-mistakes/mm-customizable-feature.png -------------------------------------------------------------------------------- /src/templates/vela/_layout/style.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/templates/lanyon/_layout/style.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-bold-line-figures/et-book-bold-line-figures.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-bold-line-figures/et-book-bold-line-figures.ttf -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-bold-line-figures/et-book-bold-line-figures.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-bold-line-figures/et-book-bold-line-figures.woff -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-roman-line-figures/et-book-roman-line-figures.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-roman-line-figures/et-book-roman-line-figures.ttf -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-roman-line-figures/et-book-roman-line-figures.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-roman-line-figures/et-book-roman-line-figures.woff -------------------------------------------------------------------------------- /src/templates/common/_layout/foot.html: -------------------------------------------------------------------------------- 1 | 2 | {{ if hasmath }} 3 | {{ insert foot_katex.html }} 4 | {{ end }} 5 | {{ if hascode }} 6 | {{ insert foot_highlight.html }} 7 | {{ end }} 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.ttf -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.woff -------------------------------------------------------------------------------- /.github/workflows/TagBot.yml: -------------------------------------------------------------------------------- 1 | name: TagBot 2 | on: 3 | schedule: 4 | - cron: 0 * * * * 5 | jobs: 6 | TagBot: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: JuliaRegistries/TagBot@v1 10 | with: 11 | token: ${{ secrets.GITHUB_TOKEN }} 12 | -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.eot -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.ttf -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-semi-bold-old-style-figures/et-book-semi-bold-old-style-figures.woff -------------------------------------------------------------------------------- /src/templates/common/_layout/page_foot.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /src/templates/common/_assets/scripts/script1.jl: -------------------------------------------------------------------------------- 1 | using LinearAlgebra # HIDE 2 | using Random:seed! # HIDE 3 | seed!(0) # HIDE 4 | # HIDE 5 | x = randn(5) 6 | y = randn(5) 7 | 8 | for i in 1:5 9 | println(rpad("*"^i, 10, '-'), round(dot(x, y), digits=1)) 10 | end 11 | -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.ttf -------------------------------------------------------------------------------- /src/templates/tufte/_assets/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/findmyway/FranklinTemplates.jl/master/src/templates/tufte/_assets/et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.woff -------------------------------------------------------------------------------- /src/templates/sandbox-extended/Project.toml: -------------------------------------------------------------------------------- 1 | [deps] 2 | GR = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" 3 | Hyperscript = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" 4 | Literate = "98b081ad-f1c9-55d3-8b20-4c87d4299306" 5 | Plotly = "58dd65bb-95f3-509e-9936-c39a10fdeae7" 6 | PyPlot = "d330b81b-6aea-500a-939a-2ce795aea3ee" 7 | -------------------------------------------------------------------------------- /src/templates/hypertext/_layout/header.html: -------------------------------------------------------------------------------- 1 |
2 |

Hypertext Theme

3 | 9 |
10 | -------------------------------------------------------------------------------- /src/templates/hyde/_layout/foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ if hasmath }} 4 | {{ insert foot_katex.html }} 5 | {{ end }} 6 | {{ if hascode }} 7 | {{ insert foot_highlight.html }} 8 | {{ end }} 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/templates/jemdoc/_layout/foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ if hasmath }} 6 | {{ insert foot_katex.html }} 7 | {{ end }} 8 | {{ if hascode }} 9 | {{ insert foot_highlight.html }} 10 | {{ end }} 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/templates/tufte/_layout/style.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/templates/tufte/_layout/nav.html: -------------------------------------------------------------------------------- 1 |
2 | 10 |
11 | -------------------------------------------------------------------------------- /src/templates/tufte/_layout/foot.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | {{ if hasmath }} 5 | {{ insert foot_katex.html }} 6 | {{ end }} 7 | {{ if hascode }} 8 | {{ insert foot_highlight.html }} 9 | {{ end }} 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/templates/pure-sm/_layout/foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ if hasmath }} 6 | {{ insert foot_katex.html }} 7 | {{ end }} 8 | {{ if hascode }} 9 | {{ insert foot_highlight.html }} 10 | {{ end }} 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/templates/vela/_layout/foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ if hasmath }} 6 | {{ insert foot_katex.html }} 7 | {{ end }} 8 | {{ if hascode }} 9 | {{ insert foot_highlight.html }} 10 | {{ end }} 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/templates/basic/_layout/header.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 12 |
13 | -------------------------------------------------------------------------------- /src/templates/lanyon/_layout/foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ if hasmath }} 5 | {{ insert foot_katex.html }} 6 | {{ end }} 7 | {{ if hascode }} 8 | {{ insert foot_highlight.html }} 9 | {{ end }} 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/templates/just-the-docs/_layout/foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ if hasmath }} 6 | {{ insert foot_katex.html }} 7 | {{ end }} 8 | {{ if hascode }} 9 | {{ insert foot_highlight.html }} 10 | {{ end }} 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/templates/common/utils.jl: -------------------------------------------------------------------------------- 1 | function hfun_bar(vname) 2 | val = Meta.parse(vname[1]) 3 | return round(sqrt(val), digits=2) 4 | end 5 | 6 | function hfun_m1fill(vname) 7 | var = vname[1] 8 | return pagevar("index", var) 9 | end 10 | 11 | function lx_baz(com, _) 12 | # keep this first line 13 | brace_content = Franklin.content(com.braces[1]) # input string 14 | # do whatever you want here 15 | return uppercase(brace_content) 16 | end 17 | -------------------------------------------------------------------------------- /src/templates/hyde/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{insert style.html}} 7 | Tag: {{fill fd_tag}} 8 | 9 | 10 | {{insert sidebar.html}} 11 |
12 |

Tag: {{fill fd_tag}}

13 | {{taglist}} 14 | {{insert page_foot.html}} 15 |
16 | 17 | 18 | -------------------------------------------------------------------------------- /src/templates/hypertext/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{insert style.html}} 7 | Tag: {{fill fd_tag}} 8 | 9 | 10 | {{insert header.html}} 11 |
12 |

Tag: {{fill fd_tag}}

13 | {{taglist}} 14 | {{insert page_foot.html}} 15 |
16 | 17 | 18 | -------------------------------------------------------------------------------- /src/templates/pure-sm/_layout/style.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | -------------------------------------------------------------------------------- /src/templates/hyde/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | {{insert style.html}} 9 | {{isdef title}} {{fill title}} {{end}} 10 | 11 | 12 | {{insert sidebar.html}} 13 | 14 | -------------------------------------------------------------------------------- /src/templates/lanyon/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | {{insert style.html}} 9 | {{isdef title}} {{fill title}} {{end}} 10 | 11 | 12 | {{insert sidebar.html}} 13 | 14 | -------------------------------------------------------------------------------- /src/templates/vela/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | 9 | {{insert style.html}} 10 | 11 | Franklin Example | Vela 12 | 13 | 14 | {{insert nav.html}} 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/templates/jemdoc/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | {{insert style.html}} 9 | {{isdef title}} {{fill title}} {{end}} 10 | 11 | 12 | {{insert table.html}} 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/templates/sandbox/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | 9 | {{isdef title}} {{fill title}} {{end}} 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/templates/hypertext/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | {{insert style.html}} 9 | {{isdef title}} {{fill title}} {{end}} 10 | 11 | 12 | {{insert header.html}} 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/templates/pure-sm/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | {{insert style.html}} 9 | {{isdef title}} {{fill title}} {{end}} 10 | 11 | 12 | {{insert sidebar.html}} 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/templates/sandbox-extended/gr.md: -------------------------------------------------------------------------------- 1 | # Franklin + GR 2 | 3 | ## Examples 4 | 5 | ### animation 6 | 7 | * This example is taken from [GR.jl/examples/anim.ipynb](https://github.com/jheinen/GR.jl/blob/master/examples/anim.ipynb). 8 | 9 | ```julia:gr 10 | using GR 11 | 12 | GR.inline("mov") 13 | x = collect(0:0.01:2*pi) 14 | for i = 1:100 15 | GR.plot(x, sin.(x .+ i / 10.0), size=(400,300)) 16 | end 17 | 18 | s = GR.show() 19 | println("~~~$(s.s)~~~") # hide 20 | ``` 21 | 22 | \textoutput{gr} 23 | -------------------------------------------------------------------------------- /src/templates/pure-sm/_libs/pure/ui.min.js: -------------------------------------------------------------------------------- 1 | !function(e,n){var t=n.getElementById("layout"),i=n.getElementById("menu"),c=n.getElementById("menuLink"),a=n.getElementById("main");function l(e,n){for(var t=e.className.split(/\s+/),i=t.length,c=0;c 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | {{insert style.html}} 9 | {{isdef title}} {{fill title}} {{end}} 10 | 11 | 12 | 13 | {{insert nav.html}} 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/templates/sandbox-extended/literate.md: -------------------------------------------------------------------------------- 1 | @def hascode = true 2 | @def showall = true 3 | 4 | # Franklin + Literate 5 | 6 | * [back home](/) 7 | 8 | You can write tutorials using [Literate.jl](https://github.com/fredrikekre/Literate.jl) and simply plug them in Franklin where they will be (re)evaluated and the output of code blocks shown assuming you've written `@def showall = true` on the page. 9 | Here's an example: 10 | 11 | \literate{/_literate/ex1.jl} 12 | -------------------------------------------------------------------------------- /src/templates/basic/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Tag: {{fill fd_tag}} 9 | 10 | 11 | {{insert header.html}} 12 |
13 |

Tag: {{fill fd_tag}}

14 | {{taglist}} 15 | {{insert page_foot.html}} 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_layout/style.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 19 | -------------------------------------------------------------------------------- /src/FranklinTemplates.jl: -------------------------------------------------------------------------------- 1 | module FranklinTemplates 2 | 3 | export newsite, addtemplate, modify 4 | 5 | const FRANKLIN_PATH = dirname(pathof(FranklinTemplates)) 6 | const TEMPL_PATH = joinpath(FRANKLIN_PATH, "templates") 7 | const LIST_OF_TEMPLATES = ( 8 | "sandbox", 9 | "sandbox-extended", 10 | "basic", 11 | "jemdoc", 12 | "just-the-docs", 13 | "hyde", 14 | "hypertext", 15 | "lanyon", 16 | "minimal-mistakes", 17 | "pure-sm", 18 | "tufte", 19 | "vela") 20 | 21 | include("utils.jl") 22 | 23 | end # module 24 | -------------------------------------------------------------------------------- /src/templates/jemdoc/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{insert style.html}} 7 | Tag: {{fill fd_tag}} 8 | 9 | 10 | {{insert table.html}} 11 |
12 |

Tag: {{fill fd_tag}}

13 | {{taglist}} 14 | {{insert page_foot.html}} 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/templates/just-the-docs/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | {{insert style.html}} 9 | {{isdef title}} {{fill title}} {{end}} 10 | 11 | 12 | {{insert pgwrap.html}} 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/templates/tufte/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{insert style.html}} 7 | Tag: {{fill fd_tag}} 8 | 9 | 10 | {{insert nav.html}} 11 |
12 |

Tag: {{fill fd_tag}}

13 | {{taglist}} 14 | {{insert page_foot.html}} 15 |
16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/templates/hyde/_layout/style.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 15 | -------------------------------------------------------------------------------- /src/templates/lanyon/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{insert style.html}} 7 | Tag: {{fill fd_tag}} 8 | 9 | 10 | {{insert sidebar.html}} 11 |
12 |

Tag: {{fill fd_tag}}

13 | {{taglist}} 14 | {{insert page_foot.html}} 15 |
16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/templates/pure-sm/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{insert style.html}} 7 | Tag: {{fill fd_tag}} 8 | 9 | 10 | {{insert sidebar.html}} 11 |
12 |

Tag: {{fill fd_tag}}

13 | {{taglist}} 14 | {{insert page_foot.html}} 15 |
16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/templates/basic/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | 9 | 10 | 11 | {{isdef title}} {{fill title}} {{end}} 12 | 13 | 14 | {{insert header.html}} 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/templates/common/_assets/hamburger.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/templates/lanyon/_css/adjust.css: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: 17px; 3 | } 4 | 5 | .franklin-content { 6 | position: relative; 7 | padding-left: 0; 8 | padding-right: 0; 9 | line-height: 1.35em; } 10 | 11 | /* on wide screens, fix content width to a max value */ 12 | @media (min-width: 940px) { 13 | .franklin-content { 14 | width: 100%; 15 | margin-left: auto; 16 | margin-right: auto; } 17 | } 18 | 19 | /* on narrow device, reduce margins */ 20 | @media (max-width: 768px) { 21 | .franklin-content { 22 | padding-left: 6%; 23 | padding-right: 6%; } 24 | } 25 | -------------------------------------------------------------------------------- /src/templates/hypertext/_css/hypertext.css: -------------------------------------------------------------------------------- 1 | /* Simple css to follow the geometry of franklin-content (see franklin.css) */ 2 | 3 | header { 4 | margin-top: 75px; 5 | position: relative; 6 | padding-left: 12.5%; 7 | padding-right: 12.5%; 8 | margin-bottom: 50px; } 9 | 10 | /* on wide screens, fix content width to a max value */ 11 | @media (min-width: 940px) { 12 | header { 13 | width: 705px; 14 | margin-left: auto; 15 | margin-right: auto; } 16 | } 17 | 18 | /* on narrow device, reduce margins */ 19 | @media (max-width: 480px) { 20 | header { 21 | padding-left: 6%; 22 | padding-right: 6%; } 23 | } 24 | -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_css/adjust.css: -------------------------------------------------------------------------------- 1 | /* on narrow device, reduce margins */ 2 | @media (min-width: 940px) { 3 | .franklin-content { 4 | width: 100%;} 5 | } 6 | 7 | @media (min-width: 1024px) { 8 | .franklin-content { 9 | width: 80%; 10 | padding-left: 12.5%; 11 | padding-right: 7%; 12 | } 13 | } 14 | 15 | pre { 16 | font-size: 17px; 17 | } 18 | 19 | .franklin-content code { 20 | font-size: 70%; 21 | } 22 | 23 | .franklin-content .hljs { 24 | font-size: 90%; 25 | } 26 | 27 | blockquote { 28 | font-size: 90%; 29 | } 30 | 31 | .fndef-content { 32 | line-height: 1.5em; 33 | } 34 | -------------------------------------------------------------------------------- /src/templates/jemdoc/_layout/table.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | -------------------------------------------------------------------------------- /src/templates/vela/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{insert style.html}} 7 | Tag: {{fill fd_tag}} 8 | 9 | 10 | {{insert nav.html}} 11 |
12 |

Tag: {{fill fd_tag}}

13 | {{taglist}} 14 | {{insert page_foot.html}} 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/templates/just-the-docs/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{insert style.html}} 7 | Tag: {{fill fd_tag}} 8 | 9 | 10 | {{insert pgwrap.html}} 11 |
12 |

Tag: {{fill fd_tag}}

13 | {{taglist}} 14 | {{insert page_foot.html}} 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/templates/common/_assets/scripts/generate_results.jl: -------------------------------------------------------------------------------- 1 | # Parent file to run all scripts which may generate 2 | # some output that you want to display on the website. 3 | # this can be used as a tester to check that all the code 4 | # on your website runs properly. 5 | 6 | dir = @__DIR__ 7 | 8 | """ 9 | genplain(s) 10 | 11 | Small helper function to run some code and redirect the output (stdout) to a file. 12 | """ 13 | function genplain(s::String) 14 | open(joinpath(dir, "output", "$(splitext(s)[1]).txt"), "w") do outf 15 | redirect_stdout(outf) do 16 | include(joinpath(dir, s)) 17 | end 18 | end 19 | end 20 | 21 | # output 22 | 23 | genplain("script1.jl") 24 | 25 | # plots 26 | 27 | include("script2.jl") 28 | -------------------------------------------------------------------------------- /src/templates/hyde/_layout/sidebar.html: -------------------------------------------------------------------------------- 1 | 16 |
17 | -------------------------------------------------------------------------------- /deploy.jl: -------------------------------------------------------------------------------- 1 | include(joinpath("docs", "make.jl")) 2 | 3 | cd(@__DIR__) 4 | 5 | # fix all links to prepend them with `FranklinTemplates.jl/` 6 | for (root, _, files) ∈ walkdir(joinpath(@__DIR__, "docs", "build")) 7 | for file ∈ files 8 | endswith(file, ".html") || continue 9 | path = joinpath(root, file) 10 | htmls = read(path, String) 11 | htmls = replace(htmls, "href=\"/" => "href=\"/FranklinTemplates.jl/") 12 | htmls = replace(htmls, "src=\"/" => "src=\"/FranklinTemplates.jl/") 13 | write(path, htmls) 14 | end 15 | end 16 | 17 | using NodeJS 18 | 19 | const JS_GHP = """ 20 | var ghpages = require('gh-pages'); 21 | ghpages.publish('docs/build', function(err) {}); 22 | """ 23 | run(`$(NodeJS.nodejs_cmd()) -e $JS_GHP`) 24 | -------------------------------------------------------------------------------- /src/templates/sandbox-extended/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if hasmath}} {{insert head_katex.html }} {{end}} 7 | {{if hascode}} {{insert head_highlight.html }} {{end}} 8 | {{if hasplotly}} {{end}} 9 | {{if hasmdpad}} 10 | 11 | 12 | 13 | {{end}} 14 | 15 | {{isdef title}} {{fill title}} {{end}} 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_layout/head.html: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | {{if hasmath}} {{insert head_katex.html }} {{end}} 13 | {{if hascode}} {{insert head_highlight.html }} {{end}} 14 | {{insert style.html}} 15 | {{isdef title}} {{fill title}} {{end}} 16 | 17 | 18 | {{insert body_layout.html}} 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/templates/common/_libs/highlight/github.min.css: -------------------------------------------------------------------------------- 1 | .hljs{display:block;overflow-x:auto;padding:0.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:bold}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:#008080}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:bold}.hljs-subst{font-weight:normal}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:bold}.hljs-attribute,.hljs-name,.hljs-tag{color:#000080;font-weight:normal}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:bold}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} 2 | -------------------------------------------------------------------------------- /src/templates/sandbox/index.md: -------------------------------------------------------------------------------- 1 | @def title = "Franklin Sandbox" 2 | @def hasmath = true 3 | @def hascode = true 4 | 5 | 6 | # Franklin syntax sandbox 7 | 8 | This page is meant as a sandbox for Franklin Syntax so that you can quickly practice or experience things. 9 | 10 | ## Sandbox 11 | 12 | Write whatever you want here to practice Franklin Syntax: 13 | 14 | ```julia:./ex1 15 | using LinearAlgebra, Random 16 | Random.seed!(135) 17 | a, b = randn(50), randn(50) 18 | println(dot(a, b)) 19 | println(sum(ai * bi for (ai, bi) ∈ zip(a, b))) 20 | ``` 21 | 22 | \output{./ex1} 23 | 24 | (yet another example that floating point arithmetics can be complicated). 25 | 26 | $$ \forall x \in \R:\quad \scal{x, x} \ge 0 $$ 27 | 28 | \newcommand{\E}{\mathbb E} 29 | 30 | Surely some people remember the ordering, but I always forget: 31 | 32 | $$ \varphi(\E[X]) \le \E[\varphi(X)] $$ 33 | 34 | for $\varphi$ convex. 35 | -------------------------------------------------------------------------------- /src/templates/sandbox-extended/index.md: -------------------------------------------------------------------------------- 1 | @def title = "Franklin Sandbox" 2 | @def hasmath = true 3 | @def hascode = true 4 | 5 | 6 | # Franklin extended sandbox 7 | 8 | This is meant as a collection of simple examples of how you can use Franklin with other Julia libraries. It's assumed you're already familiar with the syntax (otherwise, please try the `sandbox` template). 9 | 10 | * [literate](/literate/) 11 | * [plotly](/plotly/) 12 | * [hyperscript](/hyperscript/) 13 | * [pyplot](/pyplot/) 14 | * [mdpad](/mdpad/) 15 | * [gr](/gr/) 16 | 17 | ## KaTeX numbering on/off 18 | 19 | ~~~ 20 | 26 | ~~~ 27 | 28 | This is numbered 29 | $$ 1+1 = 2 $$ 30 | 31 | This isn't 32 | 33 | @@no-number 34 | $$ 2+2 = 4 $$ 35 | and 36 | $$ 3+3 = 7-1 $$ 37 | @@ 38 | 39 | Numbered again 40 | $$ 7 + 1 = 8 $$ 41 | -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_layout/masthead.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 18 |
19 |
20 |
21 | -------------------------------------------------------------------------------- /src/templates/vela/_layout/nav.html: -------------------------------------------------------------------------------- 1 | 21 | 22 |
23 |
24 |
25 |
26 |
27 |
28 |

{{isdef title}}{{fill title}}{{end}}

29 |
30 | -------------------------------------------------------------------------------- /src/templates/common/config.md: -------------------------------------------------------------------------------- 1 | 6 | @def website_title = "Franklin Template" 7 | @def website_descr = "Example website using Franklin" 8 | @def website_url = "https://tlienart.github.io/FranklinTemplates.jl/" 9 | 10 | @def author = "Septimia Zenobia" 11 | 12 | @def mintoclevel = 2 13 | 14 | 19 | @def ignore = ["node_modules/", "franklin", "franklin.pub"] 20 | 21 | 27 | \newcommand{\R}{\mathbb R} 28 | \newcommand{\scal}[1]{\langle #1 \rangle} 29 | -------------------------------------------------------------------------------- /src/templates/sandbox-extended/hyperscript.md: -------------------------------------------------------------------------------- 1 | @def hascode = true 2 | 3 | # Franklin + Hyperscript 4 | 5 | * [back home](/) 6 | 7 | If you like using [Hyperscript.jl](https://github.com/yurivish/Hyperscript.jl) and would like to use it to include raw HTML, it's pretty easy, you just need to ensure that the resulting HTML is plugged in between `~~~`. 8 | 9 | ```julia:ini 10 | #hideall 11 | using Hyperscript 12 | ``` 13 | 14 | ## Examples 15 | 16 | ### Basic 17 | 18 | First example: 19 | 20 | ```julia:ex1 21 | #hideall 22 | h = m("div", class="entry", 23 | m("h4", "An Important Announcement")) 24 | println("~~~$h~~~") 25 | ``` 26 | \textoutput{ex1} 27 | 28 | pretty easy... 29 | 30 | ### Useful trick 31 | 32 | You could just define a function to plug things in `~~~`: 33 | 34 | ```julia:fun 35 | #hideall 36 | html(s) = println("~~~$s~~~") 37 | ``` 38 | 39 | which is then easy to use: 40 | 41 | ```julia:ex2 42 | #hideall 43 | @tags p 44 | @tags_noescape style 45 | 46 | s1 = Style(css("p", fontWeight="bold", color="red")) 47 | style(styles(s1)) |> html 48 | s1(p("hello")) |> html 49 | ``` 50 | \textoutput{ex2} 51 | -------------------------------------------------------------------------------- /src/templates/pure-sm/_layout/sidebar.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 15 |
16 |
17 |

{{fill title}}

18 |

Using the Pure/Side-Menu template

19 |
20 | -------------------------------------------------------------------------------- /src/templates/tufte/_css/latex.css: -------------------------------------------------------------------------------- 1 | .latex-sub, .latex-sup { text-transform: uppercase; 2 | font-size: smaller; 3 | position: relative; } 4 | 5 | .latex-sub { top: 0.2rem; 6 | margin-left: -0.1667rem; 7 | margin-right: -0.125rem; } 8 | 9 | .latex-sup { top: -0.2rem; 10 | margin-left: -0.36rem; 11 | margin-right: -0.15rem; 12 | text-shadow: none; } 13 | 14 | .latex::selection, .latex span:not(.latex-sup)::selection { text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe; 15 | background: #b4d5fe; } 16 | 17 | .latex::-moz-selection, .latex span:not(.latex-sup)::-moz-selection { text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe; 18 | background: #b4d5fe; } 19 | -------------------------------------------------------------------------------- /src/templates/sandbox-extended/_literate/ex1.jl: -------------------------------------------------------------------------------- 1 | # ## Literate example 2 | # 3 | # Whatever is in comment can be Franklin-markdown, so for instance you can 4 | # write maths in much the same way: 5 | # 6 | # $$ \exp(i\tau) = 1 $$ 7 | # 8 | # This is Euler's identity following the [$\tau$ day manifesto](https://tauday.com/tau-manifesto). 9 | # 10 | # Code: 11 | 12 | a = 5 13 | a^2 14 | 15 | # Any valid code basically: 16 | 17 | v = ["Thom", "Martha", "Smith", "John"] 18 | f = first.(v) 19 | 20 | # So the workflow is to just write a standard Literate document using 21 | # Franklin markdown in the comments and normal code. 22 | # You can also hide lines: 23 | 24 | using Random # hide 25 | Random.seed!(1) # hide 26 | randn() 27 | 28 | # Or hide everything (note that for the line to be taken as comment for the 29 | # code block there should be no whitespace between the `#` and the `h`). 30 | 31 | #hideall 32 | using LinearAlgebra 33 | a = dot(randn(5), randn(5)) 34 | 35 | # It still shows the result though since `showall = true`! If you want to 36 | # suppress it, just use a `;` on the last line: 37 | 38 | #hideall 39 | using LinearAlgebra 40 | a = dot(randn(5), randn(5)); 41 | 42 | # That's basically it. 43 | 44 | println("done!") 45 | -------------------------------------------------------------------------------- /src/templates/vela/_libs/vela/init_metisMenu.js: -------------------------------------------------------------------------------- 1 | //initialize metismenu 2 | $("#metismenu").metisMenu(); 3 | //initialize slideout 4 | var slideout = new Slideout({ 5 | 'panel': document.getElementById('panel'), 6 | 'menu': document.getElementById('menu'), 7 | 'padding': 300, 8 | 'tolerance': 70 9 | }); 10 | //for closing menu on page click 11 | function close(eve) { 12 | eve.preventDefault(); 13 | slideout.close(); 14 | } 15 | //make the hamburger animation correct when using touch events 16 | slideout 17 | .on('beforeopen', function() { 18 | this.panel.classList.add('panel-open'); 19 | $(".hamburger").toggleClass("is-active"); 20 | $(".header-hamburger").toggleClass("fixed-open"); 21 | }) 22 | .on('open', function() { 23 | this.panel.addEventListener('click', close); 24 | }) 25 | .on('beforeclose', function() { 26 | this.panel.classList.remove('panel-open'); 27 | this.panel.removeEventListener('click', close); 28 | $(".hamburger").removeClass("is-active"); 29 | $(".header-hamburger").removeClass("fixed-open"); 30 | }); 31 | // Toggle button 32 | $('.toggle-button').on('click', function() { 33 | slideout.toggle(); 34 | }); 35 | -------------------------------------------------------------------------------- /src/templates/common/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | 22 | Tag: {{fill fd_tag}} 23 | 24 | 25 |
26 |

Tag: {{fill fd_tag}}

27 | {{taglist}} 28 | {{insert page_foot.html}} 29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The FranklinTemplates.jl package is licensed under the MIT "Expat" License: 2 | 3 | > Copyright (c) 2018-2020: Thibaut Lienart. 4 | > 5 | > Permission is hereby granted, free of charge, to any person obtaining a copy 6 | > of this software and associated documentation files (the "Software"), to deal 7 | > in the Software without restriction, including without limitation the rights 8 | > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | > copies of the Software, and to permit persons to whom the Software is 10 | > furnished to do so, subject to the following conditions: 11 | > 12 | > The above copyright notice and this permission notice shall be included in all 13 | > copies or substantial portions of the Software. 14 | > 15 | > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | > SOFTWARE. 22 | > 23 | -------------------------------------------------------------------------------- /src/templates/lanyon/_layout/sidebar.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | 21 |
22 |
23 |
24 |

25 | Lanyon 26 | Description of your site 27 |

28 |
29 |
30 | 31 |
32 | -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_layout/body_layout.html: -------------------------------------------------------------------------------- 1 | 2 | {{ insert masthead.html }} 3 |
4 |
5 | 25 | -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_layout/foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 | 6 | 20 | 21 | 22 | 23 | 24 | {{ if hasmath }} 25 | {{ insert foot_katex.html }} 26 | {{ end }} 27 | {{ if hascode }} 28 | {{ insert foot_highlight.html }} 29 | {{ end }} 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/templates/just-the-docs/_layout/pgwrap.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 26 | 27 |
28 |
29 |
30 | Franklin on GitHub 31 |
32 | -------------------------------------------------------------------------------- /src/templates/tufte/_css/adjust.css: -------------------------------------------------------------------------------- 1 | /* adjustments for Franklin */ 2 | 3 | .franklin-content code { font-size: 75% !important; } 4 | .franklin-content { font-size: 1.4rem; } 5 | 6 | #main { 7 | float:left; 8 | } 9 | #menu ul { 10 | text-align: center; 11 | margin: 0; 12 | padding: 0 13 | } 14 | #menu ul li { 15 | margin: 0 0 20px 0; 16 | padding: 0; 17 | list-style: none 18 | } 19 | #menu ul li a { 20 | color: #111; 21 | text-decoration: none; 22 | position: relative; 23 | padding: 10px 10px 24 | } 25 | #menu ul li a:after { 26 | content: ""; 27 | position: absolute; 28 | height: 2px; 29 | bottom: 7px; 30 | left: 10px; 31 | right: 10px; 32 | background-color: rgba(17, 17, 17, 0.7); 33 | visibility: hidden; 34 | transform: scaleX(0); 35 | transition: all .3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 36 | } 37 | #menu ul li a:hover { 38 | text-decoration: none 39 | } 40 | #menu ul li a:hover:after { 41 | visibility: visible; 42 | transform: scaleX(1) 43 | } 44 | 45 | .franklin-content { padding-left: 10%;} 46 | .franklin-content { padding-right: 5%;} 47 | 48 | @media (max-width: 940px){ 49 | /* narrow display: menu is at the top */ 50 | #menu { 51 | width: 100%; 52 | margin-top: 75px; 53 | margin-bottom:25px; 54 | } 55 | #menu li { 56 | display: inline-block; 57 | line-height: 30px; 58 | } 59 | #main { 60 | float: none; 61 | width: 100%; 62 | } 63 | } 64 | @media (min-width: 940px) { 65 | #menu { 66 | margin-top: 100px; 67 | float: left; 68 | width: 100px; 69 | text-align: right; 70 | } 71 | .franklin-content {width: 600px;} 72 | } 73 | @media (min-width: 1000px) { 74 | .franklin-content {width: 660px;} 75 | } 76 | -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/_layout/tag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{insert style.html}} 7 | Tag: {{fill fd_tag}} 8 | 9 | {{insert body_layout.html}} 10 | 11 |
12 |

Tag: {{fill fd_tag}}

13 | {{taglist}} 14 | {{insert page_foot.html}} 15 |
16 | 17 | 18 | 19 |
20 |
21 | 22 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/templates/common/.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Build and Deploy 2 | on: 3 | push: 4 | # NOTE: 5 | # For a **project** site (username.github.io/project/), push things 6 | # to the **master** branch and make sure to set the line below to 7 | # ` - master`; also, at the end of the file, change to `BRANCH: gh-pages` 8 | # 9 | # For a **personal** site (username.github.io/), push things to a **dev** 10 | # branch and make sure to set the line below to `- dev` this is 11 | # because for user pages GitHub pages **requires** the deployment to be 12 | # on the master branch; also, at the end of the file, change to 13 | # `BRANCH: master` 14 | branches: 15 | - master 16 | jobs: 17 | build-and-deploy: 18 | runs-on: ubuntu-latest 19 | steps: 20 | - name: Checkout 21 | uses: actions/checkout@v2 22 | with: 23 | persist-credentials: false 24 | - name: Install SSH Client 25 | continue-on-error: true 26 | uses: webfactory/ssh-agent@v0.2.0 27 | with: 28 | ssh-private-key: ${{ secrets.FRANKLIN_PRIV }} 29 | # NOTE 30 | # Python is necessary for pre-rendering steps as well as to install 31 | # matplotlib which is necessary if you intend to use PyPlot. If you do 32 | # not, then you can remove the `run: pip install matplotlib` line. 33 | - name: Install python 34 | uses: actions/setup-python@v1 35 | with: 36 | python-version: '3.x' 37 | - run: pip install matplotlib # if you use PyPlot this is needed 38 | - name: Install Julia 39 | uses: julia-actions/setup-julia@v1 40 | with: 41 | version: 1.4.1 42 | # NOTE 43 | # The steps below ensure that NodeJS and Franklin are loaded then it 44 | # installs highlight.js which is needed for the prerendering step. 45 | # Then the environment is activated and instantiated to install all 46 | # Julia packages which may be required to successfully build your site. 47 | # 48 | # The last line should be `optimize()` though you may want to give it 49 | # specific arguments, see the documentation or ?optimize in the REPL. 50 | - run: julia -e ' 51 | using Pkg; Pkg.add(["NodeJS", "Franklin"]); 52 | using NodeJS; run(`$(npm_cmd()) install highlight.js`); 53 | using Franklin; 54 | Pkg.activate("."); Pkg.instantiate(); 55 | optimize()' 56 | - name: Build and Deploy 57 | uses: JamesIves/github-pages-deploy-action@releases/v3 58 | with: 59 | SSH: true 60 | # NOTE 61 | # Set this to `BRANCH: gh-pages` for a **project** page and to 62 | # `BRANCH: master` for a **personal** page 63 | BRANCH: gh-pages 64 | FOLDER: __site 65 | -------------------------------------------------------------------------------- /src/templates/sandbox-extended/mdpad.md: -------------------------------------------------------------------------------- 1 | @def hasmdpad = true 2 | @def hasplotly = true 3 | @def reeval = true 4 | 5 | # Franklin + mpad 6 | 7 | * [home](/) 8 | 9 | ## *mdpad* example with Hyperscript.jl inputs and Mithril outputs 10 | 11 | This is an example [mdpad](https://mdpad.netlify.com) page. 12 | The inputs and outputs are generated using the [mdpad-mithril](https://github.com/tshort/mdpad-js/blob/master/src/mdpad-mithril.js) helper functions. 13 | These helper functions rely on [Mithril](https://mithril.js.org/) and Bootstrap. 14 | 15 | ```julia:inputs 16 | #hideall 17 | using Hyperscript 18 | @tags div label input select option 19 | 20 | function minput(; 21 | title = "", 22 | mdpad = "", 23 | type = "number", 24 | step = 1, 25 | min = 0, 26 | value = 0, 27 | ) 28 | return div.formGroup( 29 | label."control-label"(title), 30 | input."form-control"(mdpad=mdpad, type=type, step=step, min=min, value=value)) 31 | end 32 | 33 | function mselect(; 34 | title = "", 35 | mdpad = "", 36 | options = "", 37 | selected = "", 38 | ) 39 | options = (option(x, selected = x == selected) for x in options) 40 | return div."form-group"( 41 | label."control-label"(title), 42 | select."form-control"(mdpad=mdpad, options...)) 43 | end 44 | print("~~~") 45 | print( 46 | div.row( 47 | div."col-md-6"( 48 | minput(title="Number A", mdpad="A", value=3.3), 49 | mselect(title="Fruit", mdpad="fruit", options=["apple", "banana", "orange"]), 50 | ))) 51 | print("~~~") 52 | ``` 53 | 54 | \textoutput{inputs} 55 | 56 | ## Results 57 | 58 | Here are some results. As the inputs above change, the outputs should adjust accordingly. 59 | The plot is done with [Plotly-js](https://plot.ly/javascript/). 60 | 61 | 62 | ~~~ 63 |
64 | ~~~ 65 | 66 | 67 | ~~~ 68 | 71 | ~~~ 72 | 73 | 74 | ~~~ 75 | 93 | ~~~ 94 | -------------------------------------------------------------------------------- /src/templates/sandbox-extended/_libs/mdpad/mdpad.min.js: -------------------------------------------------------------------------------- 1 | mdpad=function(){var use_url=true;var replace_url=false;var variable_defaults={};function enable_url(){use_url=true}function disable_url(){use_url=false}function enable_replace_url(){replace_url=true}function disable_replace_url(){replace_url=false}function ready(fn){if(document.readyState!="loading"){fn()}else{document.addEventListener("DOMContentLoaded",fn)}}ready(function(){Promise.resolve().then(init).then(update_forms).then(calculate).then(setup_listeners)});function init(){if("mdpad_init"in window)mdpad_init();calculate_forms();variable_defaults=Object.assign({},mdpad)}function update_forms(){if(use_url){var url=new URL(window.location);var params=new URLSearchParams(url.search);Object.keys(variable_defaults).forEach(function(key){var el=document.querySelector("[mdpad="+key+"]");if(el)set_element_value(el,variable_defaults[key])});url.searchParams.forEach(function(value,key){var el=document.querySelector("[mdpad="+key+"]");if(el)set_element_value(el,value)})}}function setup_listeners(){if(!("mdpad_update"in window))return;document.addEventListener("keyup",function(event){if(event.target.matches("input, textarea, datalist, button")&&event.target.getAttribute("mdpad")&&event.key=="Enter"){update_element(event.target);calculate()}},false);document.addEventListener("change",function(event){if(event.target.matches("select, input, textarea, datalist")&&event.target.getAttribute("mdpad")){update_element(event.target);calculate()}},false);window.addEventListener("popstate",function(event){update_forms();calculate()},true)}function update_element(el){name=el.getAttribute("mdpad");if(name&&use_url){var url=new URL(window.location);var params=new URLSearchParams(url.search);params.set(name,element_value(el));if(replace_url){window.history.replaceState({},"",`${location.pathname}?${params}`)}else{window.history.pushState({},"",`${location.pathname}?${params}`)}}}function set_element_value(el,value){if(el.type=="checkbox"){el.checked=value}else if(el.type=="radio"){document.querySelectorAll("[mdpad="+el.getAttribute("mdpad")+"]").forEach(el=>{el.checked=el.value==value})}else{el.value=value}}function element_value(x){if(x.type=="text"){return x.value}else if(x.type=="number"){return Number(x.value)}else if(x.type=="radio"&&x.checked){return x.value}else if(x.type=="checkbox"){return x.checked}else if(x.nodeName.toLowerCase()=="select"){return x[x.selectedIndex].value}else if(x.nodeName.toLowerCase()=="textarea"){return x.value}return undefined}function read_form(x,i,a){var name=x.getAttribute("mdpad");var val=element_value(x);if(name&&typeof val!=="undefined")mdpad[name]=val}function calculate_forms(){document.querySelectorAll("input, select, textarea, datalist").forEach(read_form)}function calculate(){calculate_forms();if("mdpad_update"in window)mdpad_update()}return{api:{calculate:calculate,enable_url:enable_url,disable_url:disable_url,enable_replace_url:enable_replace_url,disable_replace_url:disable_replace_url}}}(); 2 | -------------------------------------------------------------------------------- /src/templates/common/_libs/katex/auto-render.min.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),a=function(e,t,r){for(var n=r,o=0,a=e.length;n 73 | 74 | 75 | these scripts can be run in such a way that their output is also saved to file, see `scripts/generate_results.jl` for instance, and you can then also input the results: 76 | 77 | \output{/_assets/scripts/script1.jl} 78 | 79 | which is convenient if you're presenting code. 80 | 81 | **Note**: paths specification matters, see [the docs](https://tlienart.github.io/franklindocs/code/index.html#more_on_paths) for details. 82 | 83 | Using this approach with the `generate_results.jl` file also makes sure that all the code on your website works and that all results match the code which makes maintenance easier. 84 | -------------------------------------------------------------------------------- /src/templates/common/menu3.md: -------------------------------------------------------------------------------- 1 | @def title = "Menu 3" 2 | 3 | # Working with tags 4 | 5 | **Example**: 6 | 7 | * page with tag [`syntax`](/tag/syntax/) 8 | * page with tag [`image`](/tag/image/) 9 | * page with tag [`code`](/tag/code/) 10 | 11 | \toc 12 | 13 | ## Indicating tags 14 | 15 | To mark a page with tags, add: 16 | 17 | ```markdown 18 | @def tags = ["tag1", "tag2"] 19 | ``` 20 | 21 | then that page, along with all others that have the tag `tag1` will be listed at `/tag/tag1/`. 22 | 23 | ## Customising tag pages 24 | 25 | You can change how a `/tag/...` page looks like by modifying the `_layout/tag.html`. An important note is that you can **only** use **global** page variables (defined in `config.md`). 26 | 27 | There are three "exceptions": 28 | 29 | 1. you can still use `{{ispage /tag/tagname/}} ... {{end}}` (or `{{isnotpage ...}}`) to have a different layout depending on the tag, 30 | 1. you can use the `fd_tag` variable which contains the name of the tag so `{{fill fd_tag}}` will input the tag string as is, 31 | 1. you can use `{{fill varname path/to/page}}` to exploit a page variable defined in a specific page. 32 | 33 | ## Customising tag lists 34 | 35 | By default the tag list is very simple: it just collects all pages that match the tags and it shows them in a simple list by anti-chronological order (more recent at the top). 36 | 37 | You can customise this by defining your own `hfun_custom_taglist` function in the `utils.jl` file. The commented blueprint for the simple default setting is below and should give you an idea of how to write your own generator. 38 | 39 | Assuming you've defined such a function, don't forget to use `{{custom_taglist}}` in the `_layout/tag.html` instead of the default `{{taglist}}`. 40 | 41 | ```julia 42 | function hfun_custom_taglist()::String 43 | # ----------------------------------------- 44 | # Part1: Retrieve all pages associated with 45 | # the tag & sort them 46 | # ----------------------------------------- 47 | # retrieve the tag string 48 | tag = locvar(:fd_tag) 49 | # recover the relative paths to all pages that have that 50 | # tag, these are paths like /blog/page1 51 | rpaths = globvar("fd_tag_pages")[tag] 52 | # you might want to sort these pages by chronological order 53 | # you could also only show the most recent 5 etc... 54 | sorter(p) = begin 55 | # retrieve the "date" field of the page if defined, otherwise 56 | # use the date of creation of the file 57 | pvd = pagevar(p, :date) 58 | if isnothing(pvd) 59 | return Date(Dates.unix2datetime(stat(p * ".md").ctime)) 60 | end 61 | return pvd 62 | end 63 | sort!(rpaths, by=sorter, rev=true) 64 | 65 | # -------------------------------- 66 | # Part2: Write the HTML to plug in 67 | # -------------------------------- 68 | # instantiate a buffer in which we will write the HTML 69 | # to plug in the tag page 70 | c = IOBuffer() 71 | write(c, "...1...") 72 | # go over all paths 73 | for rpath in rpaths 74 | # recover the url corresponding to the rpath 75 | url = get_url(rpath) 76 | # recover the title of the page if there is one defined, 77 | # if there isn't, fallback on the path to the page 78 | title = pagevar(rpath, "title") 79 | if isnothing(title) 80 | title = "/$rpath/" 81 | end 82 | # write some appropriate HTML 83 | write(c, "...2...") 84 | end 85 | # finish the HTML 86 | write(c, "...3...") 87 | # return the HTML string 88 | return String(take!(c)) 89 | end 90 | ``` 91 | 92 | For instance the default uses: 93 | 94 | ```html 95 | 96 |
    ...
97 | 98 |
  • $title
  • 99 | ``` 100 | -------------------------------------------------------------------------------- /src/templates/basic/_css/basic.css: -------------------------------------------------------------------------------- 1 | /* ================================================================== 2 | Header and Nav 3 | ================================================================== */ 4 | 5 | nav { 6 | width: 64%; 7 | display: inline-block; } 8 | 9 | nav ul { 10 | padding-left: 0; 11 | margin-top: 0; 12 | margin-bottom: 0; } 13 | 14 | nav li { 15 | display: inline-block; } 16 | 17 | nav li a { 18 | color: #004de6; 19 | text-decoration: none; 20 | font-size: 18px; 21 | font-weight: bold; 22 | display: inline-block; 23 | float: center; 24 | padding-top: 10px; 25 | padding-right:2px; 26 | padding-left:2px; 27 | padding-bottom:5px; 28 | margin-left:7px; 29 | margin-right:7px; 30 | border-bottom: 2px solid #4C9CF1; 31 | transition: color 0.3s ease; } 32 | 33 | header { 34 | text-align: right; 35 | margin-top: 50px; 36 | margin-bottom: 50px; 37 | display: flex; 38 | align-items: center; } 39 | 40 | header .blog-name { 41 | width: 35%; 42 | display: inline-block; 43 | text-align: left; 44 | font-size: 18px; 45 | font-family: "Lucida Console", Monaco, monospace; 46 | padding-top: 10px;} 47 | 48 | header .blog-name a { 49 | color: #a6a2a0; 50 | text-decoration: none; } 51 | 52 | header li a:hover { 53 | color: black; 54 | border-bottom: 2px solid black; } 55 | 56 | 57 | #menu-icon { 58 | display: none; } 59 | 60 | @media (max-width: 480px) { 61 | header { 62 | padding-left: 6%; 63 | padding-right:6%; 64 | } 65 | } 66 | 67 | @media (min-width: 481px) { 68 | header { 69 | padding-left: 12.5%; 70 | padding-right: 12.5%; } 71 | } 72 | 73 | /* wide display: enforce maximum width of header to match content */ 74 | @media (min-width: 940px) { 75 | header { 76 | width: 705px; 77 | margin-left: auto; 78 | margin-right: auto; } 79 | } 80 | 81 | /* 82 | medium display: nav goes under name 83 | */ 84 | @media (max-width: 760px) { 85 | header { display: block; } 86 | header .blog-name { 87 | display: block; 88 | width: 100%; 89 | padding-bottom: 10px; } 90 | nav { 91 | width: 100%; } 92 | } 93 | 94 | /* 95 | narrow display: collapse the header (don't show the menu items) 96 | instead, display a burger menu. 97 | */ 98 | @media (max-width: 500px) { 99 | header { 100 | height: 35px; 101 | display: flex; 102 | align-items: center; } 103 | header .blog-name { 104 | display: inline-block; 105 | width: 70%; } 106 | nav { 107 | display: inline-block; 108 | width: 27%; } 109 | nav ul, nav:active ul { 110 | display: none; 111 | position: absolute; 112 | /* padding: 20px; */ 113 | background: #fff; 114 | border: 1px solid #444; 115 | right: 50px; 116 | top: 60px; 117 | width: 30%; 118 | border-radius: 4px 0 4px 4px; 119 | z-index: 1;} 120 | nav li { 121 | text-align: left; 122 | display: block; 123 | padding: 0; 124 | margin: 0; } 125 | header li a { border-bottom: none; } 126 | header li a:hover { border-bottom: none; } 127 | nav:hover ul{ 128 | display: block; } 129 | #menu-icon { 130 | display: inline-block; 131 | margin-right: 10px; 132 | margin-top: 5px; } 133 | } 134 | 135 | table { 136 | line-height:1em; 137 | margin-left:auto; 138 | margin-right:auto; 139 | border-collapse:collapse; 140 | text-align:center; 141 | margin-bottom:1.5em 142 | } 143 | tr:first-of-type { 144 | background:#eae9f4 145 | } 146 | tr:first-of-type>th { 147 | text-align:center 148 | } 149 | tr, 150 | th, 151 | td { 152 | padding:10px; 153 | border:1px solid lightgray 154 | } 155 | table tbody tr td { 156 | border:1px solid lightgray 157 | } 158 | -------------------------------------------------------------------------------- /docs/index_head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 142 | 143 | 144 |

    Franklin themes

    145 | 146 |

    To get started with a theme, simply do

    147 |
    julia> using Franklin
    148 | julia> newsite("NameOfSite", template="basic")
    149 | 
    150 |

    replacing basic by the name of the template of your choice.

    151 |

    Remember that these themes are provided as a way to get started, most likely you will need to tweak the template a little bit to suit your taste. However, if you spot a problem with a template or if you would like to suggest improvements (or even a new template), please open an issue on the FranklinTemplates repo.

    152 | 153 |
    154 | -------------------------------------------------------------------------------- /src/templates/sandbox-extended/_libs/mdpad/mdpad-mithril.js: -------------------------------------------------------------------------------- 1 | function minput({ 2 | title = "", 3 | mdpad = "", 4 | type = "number", 5 | step = 1, 6 | min = 0, 7 | value = 0, 8 | groupclass = "", 9 | labelclass = "", 10 | }={}) { 11 | return m(".form-group." + groupclass, 12 | m("label.control-label." + labelclass, title), 13 | m("input.form-control", {mdpad:mdpad, type:type, step:step, min:min, value:value})); 14 | } 15 | 16 | function mselect({ 17 | title = "", 18 | mdpad = "", 19 | options = "", 20 | selected = "", 21 | groupclass = "", 22 | labelclass = "", 23 | }={}) { 24 | var options = options.map(x => m("option", (x == selected) ? {selected: "selected"} : {}, x)); 25 | return m(".form-group." + groupclass, 26 | m("label.control-label." + labelclass, title), 27 | m("select.form-control", {mdpad:mdpad}, options)); 28 | } 29 | 30 | function mcheckbox({ 31 | title = "", 32 | mdpad = "", 33 | checked = "checked", 34 | groupclass = "", 35 | labelclass = "", 36 | }={}) { 37 | return m(".form-check" + groupclass, 38 | m("input.form-check-input", {mdpad:mdpad, type:"checkbox", checked:checked}), 39 | m("label.form-check-label." + labelclass, title)); 40 | } 41 | 42 | function mdatatable(tbl, { 43 | tableclass = "table-striped", 44 | theadclass = "", 45 | }={}) { 46 | var keys = Object.getOwnPropertyNames(tbl); 47 | var idx = Array(keys.length).fill() 48 | var rows = [] 49 | for (i = 0; i < tbl[keys[1]].length; i++) { 50 | var cells = [] 51 | for (j = 0; j < keys.length; j++) { 52 | cells.push(m("td", tbl[keys[j]][i])) 53 | } 54 | rows.push(m("tr", cells)) 55 | } 56 | return m("table.table." + tableclass, 57 | m("thead." + theadclass, 58 | m("tr", keys.map((x) => m("th", x)))), 59 | m("tbody", 60 | rows)) 61 | } 62 | 63 | function mcoltable(tbl, colheadings, rowheadings, { 64 | tableclass = "table-striped", 65 | theadclass = "", 66 | }={}) { 67 | var keys = Object.getOwnPropertyNames(tbl); 68 | var rows = [] 69 | var hasrowheadings = rowheadings && rowheadings.length > 0; 70 | var hascolheadings = colheadings && colheadings.length > 0; 71 | for (i = 0; i < tbl[0].length; i++) { 72 | var cells = [] 73 | hasrowheadings && 74 | cells.push(m("th", rowheadings[i])) 75 | for (j = 0; j < tbl.length; j++) { 76 | cells.push(m("td", tbl[j][i])) 77 | } 78 | rows.push(m("tr", cells)) 79 | } 80 | return m("table.table." + tableclass, 81 | m("thead." + theadclass, 82 | hascolheadings && m("tr", hasrowheadings ? m("th") : "", colheadings.map((x) => m("th", x)))), 83 | m("tbody", 84 | rows)) 85 | } 86 | 87 | function mrowtable(tbl, rowheadings, colheadings, { 88 | tableclass = "table-striped", 89 | theadclass = "", 90 | }={}) { 91 | var keys = Object.getOwnPropertyNames(tbl); 92 | var rows = []; 93 | var hasrowheadings = rowheadings && rowheadings.length > 0; 94 | var hascolheadings = colheadings && colheadings.length > 0; 95 | for (i = 0; i < tbl.length; i++) { 96 | var cells = []; 97 | hasrowheadings && 98 | cells.push(m("th", rowheadings[i])) 99 | for (j = 0; j < tbl[0].length; j++) { 100 | cells.push(m("td", tbl[i][j])); 101 | } 102 | rows.push(m("tr", cells)); 103 | } 104 | return m("table.table." + tableclass, 105 | m("thead." + theadclass, 106 | hascolheadings && m("tr", hasrowheadings ? m("th") : "", colheadings.map((x) => m("th", x)))), 107 | m("tbody", 108 | rows)); 109 | } 110 | 111 | function mplotly(data, layout, config) { 112 | return m({ 113 | oncreate: function(vnode) { 114 | Plotly.newPlot(vnode.dom, data, layout, config); 115 | }, 116 | onremove: function(vnode) { 117 | Plotly.purge(vnode.dom); 118 | }, 119 | onupdate: function(vnode) { // it's not using this 120 | Plotly.react(vnode.dom, data, layout, config); 121 | }, 122 | view: function() { 123 | return m('div') 124 | } 125 | }) 126 | } 127 | -------------------------------------------------------------------------------- /src/templates/minimal-mistakes/index.html: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | Minimal Mistakes 12 | 13 | 16 | 17 | 18 | 32 | 33 | 34 | 35 | 36 | 37 | {{ insert masthead.html }} 38 | 39 |
    40 |
    42 |
    43 |

    Minimal Mistakes

    44 |

    A flexible two-column theme
    developed by Michael Rose.

    45 |
    46 |
    47 | 48 |
    49 |
    50 | 51 |
    52 |
    53 |
    54 |
    55 |
    56 | customizable 57 |
    58 |
    59 |

    Franklin

    60 |
    61 |

    Minimal mistakes works with Franklin too!

    62 |
    63 |

    Learn more

    64 |
    65 |
    66 |
    67 |
    68 |
    69 |
    70 | fully responsive 71 |
    72 |
    73 |

    Responsive

    74 |
    75 |

    Built with HTML5 + CSS3. All layouts are fully responsive with helpers to augment your content.

    76 |
    77 |

    Learn more

    78 |
    79 |
    80 |
    81 |
    82 |
    83 |
    84 | 100% free 85 |
    86 |
    87 |

    100% free

    88 |
    89 |

    Free to use however you want under the MIT License. Clone it, fork it, customize it… whatever!

    90 |
    91 |

    Learn more

    92 |
    93 |
    94 |
    95 |
    96 |
    97 |
    98 | 99 | {{ insert foot.html }} 100 | -------------------------------------------------------------------------------- /src/templates/sandbox-extended/plotly.md: -------------------------------------------------------------------------------- 1 | @def title = "Franklin + Plotly" 2 | @def hascode = true 3 | @def hasplotly = true 4 | 5 | # Franklin + Plotly 6 | 7 | * [back home](/) 8 | 9 | The convenience function `fdplotly` helps to extract the relevant HTML from a plotly plot via `json` (don't forget `json`! see examples); you can then place it using `\textoutput` (see examples). The `fdplotly` function takes two optional keyword arguments: 10 | 11 | * `id`: the name of the div in which the plot should be placed (randomly generated by default), 12 | * `style`: a CSS string specifying the style of the div, by default `"width:600px;height:350px"` 13 | 14 | We show some examples drawn from the [PlotlyJS examples](https://github.com/sglyon/PlotlyJS.jl/tree/master/examples). 15 | 16 | ```julia:init 17 | # hideall 18 | using PlotlyJS 19 | ``` 20 | 21 | ## Examples 22 | 23 | ### Line scatter 24 | 25 | [Original file](https://github.com/sglyon/PlotlyJS.jl/blob/master/examples/line_scatter.jl) 26 | 27 | ```julia:lines_pre 28 | #hideall 29 | function linescatter1() 30 | trace1 = scatter(;x=1:4, y=[10, 15, 13, 17], mode="markers") 31 | trace2 = scatter(;x=2:5, y=[16, 5, 11, 9], mode="lines") 32 | trace3 = scatter(;x=1:4, y=[12, 9, 15, 12], mode="lines+markers") 33 | plot([trace1, trace2, trace3]) 34 | end 35 | function batman() 36 | σ(x) = @. √(1-x^2) 37 | el(x) = @. 3*σ(x/7) 38 | s(x) = @. 4.2 - 0.5*x - 2.0*σ(0.5*x-0.5) 39 | b(x) = @. σ(abs(2-x)-1) - x^2/11 + 0.5x - 3 40 | c(x) = [1.7, 1.7, 2.6, 0.9] 41 | 42 | p(i, f; kwargs...) = scatter(; x=[-i; 0.0; i], y=[f(i); NaN; f(i)], 43 | marker_color="black", showlegend=false, 44 | kwargs...) 45 | traces = vcat(p(3:0.1:7, el; name="wings 1"), 46 | p(4:0.1:7, t->-el(t); name="wings 2"), 47 | p(1:0.1:3, s; name="Shoulders"), 48 | p(0:0.1:4, b; name="Bottom"), 49 | p([0, 0.5, 0.8, 1], c; name="head")) 50 | 51 | plot(traces, Layout(title="Batman")) 52 | end 53 | ``` 54 | 55 | ```julia:lines1 56 | plt = linescatter1() 57 | fdplotly(json(plt), style="width:400px;height:250px;margin-left:auto;margin-right:auto;") 58 | ``` 59 | \textoutput{lines1} 60 | 61 | ```julia:batman 62 | plt = batman() 63 | fdplotly(json(plt)) 64 | ``` 65 | \textoutput{batman} 66 | 67 | ### Ternary 68 | 69 | [Original file](https://github.com/sglyon/PlotlyJS.jl/blob/master/examples/ternary.jl) 70 | 71 | ```julia:ternary 72 | #hideall 73 | function make_ax(title, tickangle) 74 | attr(title=title, titlefont_size=20, tickangle=tickangle, 75 | tickfont_size=15, tickcolor="rgba(0, 0, 0, 0)", ticklen=5, 76 | showline=true, showgrid=true) 77 | end 78 | 79 | raw_data = [ 80 | Dict(:journalist=>75, :developer=>:25, :designer=>0, :label=>"point 1"), 81 | Dict(:journalist=>70, :developer=>:10, :designer=>20, :label=>"point 2"), 82 | Dict(:journalist=>75, :developer=>:20, :designer=>5, :label=>"point 3"), 83 | Dict(:journalist=>5, :developer=>:60, :designer=>35, :label=>"point 4"), 84 | Dict(:journalist=>10, :developer=>:80, :designer=>10, :label=>"point 5"), 85 | Dict(:journalist=>10, :developer=>:90, :designer=>0, :label=>"point 6"), 86 | Dict(:journalist=>20, :developer=>:70, :designer=>10, :label=>"point 7"), 87 | Dict(:journalist=>10, :developer=>:20, :designer=>70, :label=>"point 8"), 88 | Dict(:journalist=>15, :developer=>:5, :designer=>80, :label=>"point 9"), 89 | Dict(:journalist=>10, :developer=>:10, :designer=>80, :label=>"point 10"), 90 | Dict(:journalist=>20, :developer=>:10, :designer=>70, :label=>"point 11") 91 | ] 92 | 93 | t = scatterternary( 94 | mode="markers", 95 | a=[d[:journalist] for d in raw_data], 96 | b=[d[:developer] for d in raw_data], 97 | c=[d[:designer] for d in raw_data], 98 | text=[d[:label] for d in raw_data], 99 | marker=attr(symbol=100, color="#DB7365", size=14, line_width=2) 100 | ) 101 | layout = Layout( 102 | ternary=attr( 103 | sum=100, 104 | aaxis=make_ax("Journalist", 0), 105 | baxis=make_ax("Developer", 45), 106 | caxis=make_ax("Designer", -45), 107 | bgcolor="#fff1e0", 108 | ), annotations=attr( 109 | showarrow=false, 110 | text="Replica of Tom Pearson's block", 111 | x=1.0, y=1.3, font_size=15 112 | ), 113 | paper_bgcolor="#fff1e0" 114 | ) 115 | plt = plot(t, layout) 116 | 117 | fdplotly(json(plt)) 118 | ``` 119 | 120 | \textoutput{ternary} 121 | -------------------------------------------------------------------------------- /src/templates/vela/_libs/vela/metisMenu.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * metismenu - v2.7.9 3 | * A jQuery menu plugin 4 | * https://github.com/onokumus/metismenu#readme 5 | * 6 | * Made by Osman Nuri Okumus (https://github.com/onokumus) 7 | * Under MIT License 8 | */ 9 | !function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):n.metisMenu=e(n.jQuery)}(this,function(n){"use strict";function a(s){for(var n=1;n add Franklin 54 | shell> blah 55 | julia> 1+1 56 | (Sandbox) pkg> resolve 57 | ``` 58 | 59 | you can tune the colouring in the CSS etc via the following classes: 60 | 61 | * `.hljs-meta` (for `julia>`) 62 | * `.hljs-metas` (for `shell>`) 63 | * `.hljs-metap` (for `...pkg>`) 64 | 65 | ## More customisation 66 | 67 | Franklin, by design, gives you a lot of flexibility to define how you want stuff be done, this includes doing your own parsing/processing and your own HTML generation using Julia code. 68 | 69 | In order to do this, you can define two types of functions in a `utils.jl` file which will complement your `config.md` file: 70 | 71 | * `hfun_*` allow you to plug custom-generated HTML somewhere 72 | * `lx_*` allow you to do custom parsing of markdown and generation of HTML 73 | 74 | The former (`hfun_*`) is most likely to be useful. 75 | 76 | ### Custom "hfun" 77 | 78 | If you define a function `hfun_bar` in the `utils.jl` then you have access to a new template function `{{bar ...}}`. The parameters are passed as a list of strings, for instance variable names but it could just be strings as well. 79 | 80 | For instance: 81 | 82 | ```julia 83 | function hfun_bar(vname) 84 | val = Meta.parse(vname[1]) 85 | return round(sqrt(val), digits=2) 86 | end 87 | ``` 88 | 89 | ~~~ 90 | .hf {background-color:black;color:white;font-weight:bold;} 91 | ~~~ 92 | 93 | Can be called with `{{bar 4}}`: **{{bar 4}}**. 94 | 95 | Usually you will want to pass variable name (either local or global) and collect their value via one of `locvar`, `globvar` or `pagevar` depending on your use case. 96 | Let's have another toy example: 97 | 98 | ```julia 99 | function hfun_m1fill(vname) 100 | var = vname[1] 101 | return pagevar("menu1", var) 102 | end 103 | ``` 104 | 105 | Which you can use like this `{{m1fill title}}`: **{{m1fill title}}**. Of course in this specific case you could also have used `{{fill title menu1}}`: **{{fill title menu1}}**. 106 | 107 | Of course these examples are not very useful, in practice you might want to use it to generate actual HTML in a specific way using Julia code. 108 | For instance you can use it to customise how [tag pages look like](/menu3/#customising_tag_pages). 109 | 110 | A nice example of what you can do is in the [SymbolicUtils.jl manual](https://juliasymbolics.github.io/SymbolicUtils.jl/api/) where they use a `hfun_` to generate HTML encapsulating the content of code docstrings, in a way doing something similar to what Documenter does. See [how they defined it](https://github.com/JuliaSymbolics/SymbolicUtils.jl/blob/website/utils.jl). 111 | 112 | **Note**: the output **will not** be reprocessed by Franklin, if you want to generate markdown which should be processed by Franklin, then use `return fd2html(markdown, internal=true)` at the end. 113 | 114 | ### Custom "lx" 115 | 116 | These commands will look the same as latex commands but what they do with their content is now entirely controlled by your code. 117 | You can use this to do your own parsing of specific chunks of your content if you so desire. 118 | 119 | The definition of `lx_*` commands **must** look like this: 120 | 121 | ```julia 122 | function lx_baz(com, _) 123 | # keep this first line 124 | brace_content = Franklin.content(com.braces[1]) # input string 125 | # do whatever you want here 126 | return uppercase(brace_content) 127 | end 128 | ``` 129 | 130 | You can call the above with `\baz{some string}`: \baz{some string}. 131 | 132 | **Note**: the output **will be** reprocessed by Franklin, if you want to avoid this, then escape the output by using `return "~~~" * s * "~~~"` and it will be plugged in as is in the HTML. 133 | -------------------------------------------------------------------------------- /docs/make.jl: -------------------------------------------------------------------------------- 1 | using FranklinTemplates, Franklin 2 | 3 | descr = Dict{String,String}( 4 | "sandbox" => """ 5 | sandbox 6 |

    Simplest one-page layout, meant for practicing or testing Franklin syntax.

    7 | """, 8 | "sandbox-extended" => """ 9 | sandbox-extended 10 |

    Simplest one-page layout, meant for practising interaction between Franklin and other packages.

    11 | """, 12 | "basic" => """ 13 | basic 14 |

    Barebone responsive theme with a top navigation bar, no extra javascript and a simple stylesheet.

    15 | """, 16 | "jemdoc" => """ 17 | jemdoc 18 |

    Simple theme with a side navigation bar, no extra javascript and a simple stylesheet. (Adapted from the original Jemdoc theme.)

    19 | """, 20 | "just-the-docs" => """ 21 | just-the-docs 22 |

    Simple documentation theme with a side navigation bar, and no extra javascript (Adapted from the Jekyll theme.)

    23 | """, 24 | "hyde" => """ 25 | hyde 26 |

    A neat two-column responsive theme with a side navigation bar, no extra javascript and a simple stylesheet. (Adapted from the Jekyll theme.)

    27 | """, 28 | "hypertext" => """ 29 | hypertext 30 |

    Barebone responsive theme with a simple top navigation bar, no extra javascript and a simple stylesheet. (Adapted from the Grav theme.)

    31 | """, 32 | "lanyon" => """ 33 | lanyon 34 |

    A neat single-column theme with a sliding menu-bar, no extra javascript and a simple stylesheet. (Adapted from the Jekyll theme.)

    35 | """, 36 | "minimal-mistakes" => """ 37 | minimal-mistakes 38 |

    A responsive two-column theme with a nice landing page, extra javascript for the responsiveness. (Adapted from the Jekyll theme.)

    39 | """, 40 | "pure-sm" => """ 41 | pure-sm 42 |

    Single-column theme with a sliding menu-bar, a simple stylesheet and some javascript for the menu bar. (Adapted from the Pure CSS theme.)

    43 | """, 44 | "tufte" => """ 45 | tufte 46 |

    A neat single-column theme adapted from tufte.css with a focus on clarity and nice typesetting, no extra javascript and a sophisticated stylesheet.

    47 | """, 48 | "vela" => """ 49 | vela 50 |

    A single-column theme with a sliding menu-bar, a simple stylesheet and extra javascript for the menu-bar. (Adapted from the Grav theme.)

    51 | """, 52 | ) 53 | 54 | 55 | build = joinpath(@__DIR__, "build") 56 | 57 | isdir(build) || mkdir(build) 58 | 59 | function fixdir(τ::String) 60 | for name in readdir(τ; join=true) 61 | occursin("__site", name) && continue 62 | rm(name, recursive=true) 63 | end 64 | for name in readdir(joinpath(τ, "__site"); join=true) 65 | cp(name, replace(name, "__site" => "")) 66 | end 67 | rm(joinpath(τ, "__site"), recursive=true) 68 | # 2. fix links in index.html etc 69 | html_files = String[] 70 | for (root, _, files) ∈ walkdir(τ) 71 | for file ∈ files 72 | endswith(file, ".html") || continue 73 | fp = joinpath(root, file) 74 | html = read(fp, String) 75 | html = replace(html, "href=\"/" => "href=\"/templates/$τ/") 76 | html = replace(html, "src=\"/" => "src=\"/templates/$τ/") 77 | write(fp, html) 78 | end 79 | end 80 | return 81 | end 82 | 83 | # make a template folder with a subfolder for each template 84 | # compile each template with a fullpass of Franklin 85 | begin 86 | # first clean up the directory to avoid clashes etc 87 | begin 88 | cd(build) 89 | isdir("templates") && rm("templates", recursive=true) 90 | cd("..") 91 | end 92 | # make the template folder 93 | templates = mkpath(joinpath(build, "templates")) 94 | cd(templates) 95 | for τ ∈ FranklinTemplates.LIST_OF_TEMPLATES 96 | println("🍏 template: $τ") 97 | FranklinTemplates.newsite(τ; template=τ, changedir=true, verbose=false) 98 | optimize(minify=(τ ∉ ("vela", "sandbox-extended"))) # see issue #7 99 | cd("..") 100 | fixdir(τ) 101 | end 102 | # copy over the thumb folder 103 | cp(joinpath(dirname(build), "thumb"), joinpath(build, "thumb"), force=true) 104 | end 105 | 106 | # build the index page 107 | begin 108 | html = IOBuffer() 109 | write(html, read(joinpath(@__DIR__, "index_head.html"), String)) 110 | 111 | # One card per template 112 | for τ ∈ FranklinTemplates.LIST_OF_TEMPLATES 113 | c = """ 114 | 115 |
    116 |
    117 | $(descr[τ]) 118 |
    119 |
    120 |
    121 | """ 122 | write(html, c) 123 | end 124 | write(html, read(joinpath(@__DIR__, "index_foot.html"), String)) 125 | write(joinpath(build, "index.html"), take!(html)) 126 | end 127 | 128 | cd(dirname(dirname(pathof(FranklinTemplates)))) 129 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Franklin Templates 2 | 3 | Templates for [Franklin](https://github.com/tlienart/Franklin.jl), the static-site generator in Julia. 4 | 5 | Most of these templates are adapted from existing, popular templates with minor modifications to accommodate Franklin's content. 6 | 7 | **NOTE**: these templates should be seen as _starting points_, they are far from perfect. PRs to help improve them will be very welcome, thanks! Most importantly they are designed to be simple to adjust to your needs. 8 | 9 | ## List of templates 10 | 11 | Get an idea for which template you like using [this preview](https://tlienart.github.io/FranklinTemplates.jl/). 12 | The grid below keeps track of their name, license, the kind of navbar they have and whether they require Javascript. 13 | 14 | | Name | Source | License | Navbar | JS | 15 | | ---- | ------ | ------- | ----- | --- | 16 | | `"sandbox"` | N/A | MIT | N/A | No | 17 | | `"sandbox-extended"` | N/A | MIT | N/A | No | 18 | | `"basic"` | N/A | MIT | Top | No | 19 | | `"jemdoc"` | [jemdoc](https://github.com/jem/jemdoc) | N/A | Side | No | 20 | | `"hypertext"` | [grav theme hypertext](https://github.com/artofthesmart/hypertext) | [MIT](https://github.com/artofthesmart/hypertext/blob/master/LICENSE) | Top | No | 21 | | `"pure-sm"` | [pure css](https://purecss.io/layouts/side-menu/) | [Yahoo BSD](https://github.com/pure-css/pure-site/blob/master/LICENSE.md) | Side | No | 22 | | `"vela"` | [grav theme vela](https://github.com/danzinger/grav-theme-vela) | [MIT](https://github.com/danzinger/grav-theme-vela/blob/develop/LICENSE) | Side (collapsable) | Yes | 23 | | `"tufte"` | [Tufte CSS](https://github.com/edwardtufte/tufte-css), and a bit of [Lawler.io](https://github.com/Eiriksmal/lawler-dot-io) for the menu | [both](https://github.com/edwardtufte/tufte-css/blob/gh-pages/LICENSE) [MIT](https://github.com/Eiriksmal/lawler-dot-io/blob/main/license.md) | Side | No | 24 | | `"hyde"` | [Hyde](https://github.com/poole/hyde) | [MIT](https://github.com/poole/hyde/blob/master/LICENSE.md) | Side | No | 25 | | `"lanyon"` | [Lanyon](https://github.com/poole/lanyon) | [MIT](https://github.com/poole/lanyon/blob/master/LICENSE.md) | Side (collapsable) | No | 26 | | `"just-the-docs"` | [Just the docs](https://github.com/pmarsceill/just-the-docs) | [MIT](https://github.com/pmarsceill/just-the-docs/blob/master/LICENSE.txt) | Side/Top | No | 27 | | `"minimal-mistakes"` | [Minimal mistakes](https://github.com/mmistakes/minimal-mistakes) | [MIT](https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE) | Side/Top | No | 28 | 29 | ## Fixing/Adding a template 30 | 31 | The package now contains a few utils to make it easier to add / fix templates. 32 | 33 | 1. clone a fork of this package wherever you usually do things, typically `~/.julia/dev/` 34 | 1. checkout the package in development mode with `] dev FranklinTemplates` 35 | 1. `cd` to a sensible workspace and do one of 36 | 1. `using FranklinTemplates; newsite("newTemplate")` to start working on `newTemplate` more or less from scratch, 37 | 1. `using FranklinTemplates; newsite("newTemplate", template="jemdoc")` to start working on `newTemplate` using some other template as starting point, 38 | 1. `using FranklinTemplates; modify("jemdoc")` to quickly start working on an existing template in order to fix it. 39 | 1. change things, fix things, etc. 40 | 1. bring your changes into your fork with `addtemplate("path/to/your/work")` 41 | 1. if the template doesn't exist, it will just add the folder removing things that are duplicate from `templates/common/`. 42 | 1. if the template exists, it will just adjust what needs to be adjusted. 43 | 44 | Now if it was just a bunch of fixes to an existing template, you can just push those changes to your fork and open a PR. 45 | 46 | If it's a new template that you're working on, you can also do that but there's a few extra things you need to do: 47 | 48 | 1. in `FranklinTemplates/src/FranklinTemplates.jl` add the name of your template in the list 49 | 1. in `FranklinTemplates/docs/make.jl` add the name of your template with a description in the list 50 | 1. in `FranklinTemplates/docs/thumb` add a screenshot of your template in `png` format with **exactly** an 850x850 dimension 51 | 1. in `FranklinTemplates/docs/index_head.html` add a CSS block following the other examples 52 | 53 | Thanks!! 54 | 55 | ## Misc 56 | 57 | * Current version of KaTeX: 0.11.1 58 | * Current version of highlight: v9.18.1 (with `css`, `C/AL`, `C++`, `yaml`, `bash`, `ini,TOML`, `markdown`, `html,xml`, `r`, `julia`, `julia-repl`, `plaintext`, `python` and the minified `github` theme). 59 | 60 | ## Notes: 61 | 62 | This package contains a copy of the relevant KaTeX files and highlight.js files; 63 | - the KaTeX files are basically provided "as is", completely unmodified; you could download your own version of the files from the [original repo](https://github.com/KaTeX/KaTeX) and replace the files in `_libs/katex`, 64 | - the Highlight.js files are _essentially_ provided "as is" for a set of languages, there is a small modification in the `highlight.pack.js` file to highlight julia shell and pkg prompt (see next section). You can also download your own version of files from the [original source](https://highlightjs.org) where you might want to 65 | - specify languages you want to highlight if other than the default list above 66 | - specify the "style" (we use github but you could use another sheet) 67 | 68 | **Note**: in Franklin's `optimize` pass, by default the **full library** `highlight.js` is called to pre-render highlighting; this bypasses the `highlight.pack.js` file and, in particular, supports highlighting for **all** languages. In other words, the `highlight.pack.js` file is relevant only when you preview your site locally with `serve()` or if you don't intend to apply the prerendering step. 69 | 70 | ### Maintenance 71 | 72 | - if update `highlight.pack.js`, look for `julia>`, replace (so that pkg and shell are recognised) 73 | 74 | ``` 75 | hljs.registerLanguage("julia-repl",function(e){return{c:[{cN:"meta",b:/^julia>/,relevance:10,starts:{e:/^(?![ ]{6})/,sL:"julia"},aliases:["jldoctest"]}]}}); 76 | ``` 77 | 78 | by 79 | 80 | ``` 81 | hljs.registerLanguage("julia-repl",function(e){return{c:[{cN:"meta",b:/^julia>/,relevance:10,starts:{e:/^(?![ ]{6})/,sL:"julia"}},{cN:"metas",b:/^shell>/,relevance:10,starts:{e:/^(?![ ]{6})/,sL:"bash"}},{cN:"metap",b:/^\(.*\)\spkg>/,relevance:10,starts:{e:/^(?![ ]{6})/,sL:"julia"}}]}}); 82 | ``` 83 | -------------------------------------------------------------------------------- /src/templates/pure-sm/_css/side-menu.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: #fff; 3 | color: #363636; 4 | } 5 | 6 | .header h2 { 7 | text-align: center; 8 | } 9 | 10 | .pure-img-responsive { 11 | max-width: 100%; 12 | height: auto; 13 | } 14 | 15 | /* 16 | Add transition to containers so they can push in and out. 17 | */ 18 | #layout, 19 | #menu, 20 | .menu-link { 21 | -webkit-transition: all 0.2s ease-out; 22 | -moz-transition: all 0.2s ease-out; 23 | -ms-transition: all 0.2s ease-out; 24 | -o-transition: all 0.2s ease-out; 25 | transition: all 0.2s ease-out; 26 | } 27 | 28 | /* 29 | This is the parent `
    ` that contains the menu and the content area. 30 | */ 31 | #layout { 32 | position: relative; 33 | left: 0; 34 | padding-left: 0; 35 | } 36 | #layout.active #menu { 37 | left: 150px; 38 | width: 150px; 39 | } 40 | 41 | #layout.active .menu-link { 42 | left: 150px; 43 | } 44 | /* 45 | The content `
    ` is where all your content goes. 46 | */ 47 | .content { 48 | margin: 0 auto; 49 | padding: 0 2em; 50 | max-width: 800px; 51 | margin-bottom: 50px; 52 | line-height: 1.6em; 53 | } 54 | 55 | .header { 56 | margin: 0; 57 | color: #333; 58 | text-align: center; 59 | padding: 2.5em 2em 0; 60 | border-bottom: 1px solid #eee; 61 | } 62 | .header h1 { 63 | margin: 0.2em 0; 64 | font-size: 3em; 65 | font-weight: 300; 66 | } 67 | .header h2 { 68 | font-weight: 300; 69 | color: #ccc; 70 | padding: 0; 71 | margin-top: 0; 72 | } 73 | 74 | .content-subhead { 75 | margin: 50px 0 20px 0; 76 | font-weight: 300; 77 | color: #888; 78 | } 79 | 80 | 81 | 82 | /* 83 | The `#menu` `
    ` is the parent `
    ` that contains the `.pure-menu` that 84 | appears on the left side of the page. 85 | */ 86 | 87 | #menu { 88 | margin-left: -150px; /* "#menu" width */ 89 | width: 150px; 90 | position: fixed; 91 | top: 0; 92 | left: 0; 93 | bottom: 0; 94 | z-index: 1000; /* so the menu or its navicon stays above all content */ 95 | background: #191818; 96 | overflow-y: auto; 97 | -webkit-overflow-scrolling: touch; 98 | } 99 | /* 100 | All anchors inside the menu should be styled like this. 101 | */ 102 | #menu a { 103 | color: #999; 104 | border: none; 105 | padding: 0.6em 0 0.6em 0.6em; 106 | } 107 | 108 | /* 109 | Remove all background/borders, since we are applying them to #menu. 110 | */ 111 | #menu .pure-menu, 112 | #menu .pure-menu ul { 113 | border: none; 114 | background: transparent; 115 | } 116 | 117 | /* 118 | Add that light border to separate items into groups. 119 | */ 120 | #menu .pure-menu ul, 121 | #menu .pure-menu .menu-item-divided { 122 | border-top: 1px solid #333; 123 | } 124 | /* 125 | Change color of the anchor links on hover/focus. 126 | */ 127 | #menu .pure-menu li a:hover, 128 | #menu .pure-menu li a:focus { 129 | background: #333; 130 | } 131 | 132 | /* 133 | This styles the selected menu item `
  • `. 134 | */ 135 | #menu .pure-menu-selected, 136 | #menu .pure-menu-heading { 137 | background: #1f8dd6; 138 | } 139 | /* 140 | This styles a link within a selected menu item `
  • `. 141 | */ 142 | #menu .pure-menu-selected a { 143 | color: #fff; 144 | } 145 | 146 | /* 147 | This styles the menu heading. 148 | */ 149 | #menu .pure-menu-heading { 150 | font-size: 110%; 151 | color: #fff; 152 | margin: 0; 153 | } 154 | 155 | /* -- Dynamic Button For Responsive Menu -------------------------------------*/ 156 | 157 | /* 158 | The button to open/close the Menu is custom-made and not part of Pure. Here's 159 | how it works: 160 | */ 161 | 162 | /* 163 | `.menu-link` represents the responsive menu toggle that shows/hides on 164 | small screens. 165 | */ 166 | .menu-link { 167 | position: fixed; 168 | display: block; /* show this only on small screens */ 169 | top: 0; 170 | left: 0; /* "#menu width" */ 171 | background: #000; 172 | background: rgba(0,0,0,0.7); 173 | font-size: 10px; /* change this value to increase/decrease button size */ 174 | z-index: 10; 175 | width: 2em; 176 | height: auto; 177 | padding: 2.1em 1.6em; 178 | } 179 | 180 | .menu-link:hover, 181 | .menu-link:focus { 182 | background: #000; 183 | } 184 | 185 | .menu-link span { 186 | position: relative; 187 | display: block; 188 | } 189 | 190 | .menu-link span, 191 | .menu-link span:before, 192 | .menu-link span:after { 193 | background-color: #fff; 194 | width: 100%; 195 | height: 0.2em; 196 | } 197 | 198 | .menu-link span:before, 199 | .menu-link span:after { 200 | position: absolute; 201 | margin-top: -0.6em; 202 | content: " "; 203 | } 204 | 205 | .menu-link span:after { 206 | margin-top: 0.6em; 207 | } 208 | 209 | 210 | /* -- Responsive Styles (Media Queries) ------------------------------------- */ 211 | 212 | /* 213 | Hides the menu at `48em`, but modify this based on your app's needs. 214 | */ 215 | @media (min-width: 48em) { 216 | 217 | .header, 218 | .content { 219 | padding-left: 2em; 220 | padding-right: 2em; 221 | } 222 | 223 | #layout { 224 | padding-left: 150px; /* left col width "#menu" */ 225 | left: 0; 226 | } 227 | #menu { 228 | left: 150px; 229 | } 230 | 231 | .menu-link { 232 | position: fixed; 233 | left: 150px; 234 | display: none; 235 | } 236 | 237 | #layout.active .menu-link { 238 | left: 150px; 239 | } 240 | } 241 | 242 | @media (max-width: 48em) { 243 | /* Only apply this when the window is small. Otherwise, the following 244 | case results in extra padding on the left: 245 | * Make the window small. 246 | * Tap the menu to trigger the active state. 247 | * Make the window large again. 248 | */ 249 | #layout.active { 250 | position: relative; 251 | left: 150px; 252 | } 253 | } 254 | -------------------------------------------------------------------------------- /src/templates/hyde/_css/poole_hyde.css: -------------------------------------------------------------------------------- 1 | /* 2 | * ___ 3 | * /\_ \ 4 | * _____ ___ ___\//\ \ __ 5 | * /\ '__`\ / __`\ / __`\\ \ \ /'__`\ 6 | * \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/ 7 | * \ \ ,__/\ \____/\ \____//\____\ \____\ 8 | * \ \ \/ \/___/ \/___/ \/____/\/____/ 9 | * \ \_\ 10 | * \/_/ 11 | * 12 | * Designed, built, and released under MIT license by @mdo. Learn more at 13 | * https://github.com/poole/poole. 14 | */ 15 | 16 | 17 | /* 18 | * Contents 19 | * 20 | * Body resets 21 | * Custom type 22 | * Messages 23 | * Container 24 | * Masthead 25 | * Posts and pages 26 | * Pagination 27 | * Reverse layout 28 | * Themes 29 | */ 30 | 31 | 32 | /* 33 | * Body resets 34 | * 35 | * Update the foundational and global aspects of the page. 36 | */ 37 | 38 | * { 39 | -webkit-box-sizing: border-box; 40 | -moz-box-sizing: border-box; 41 | box-sizing: border-box; 42 | } 43 | 44 | html, 45 | body { 46 | margin: 0; 47 | padding: 0; 48 | } 49 | 50 | html { 51 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 52 | font-size: 16px; 53 | line-height: 1.5; 54 | } 55 | @media (min-width: 38em) { 56 | html { 57 | font-size: 20px; 58 | } 59 | } 60 | 61 | body { 62 | color: #515151; 63 | background-color: #fff; 64 | -webkit-text-size-adjust: 100%; 65 | -ms-text-size-adjust: 100%; 66 | } 67 | 68 | /* No `:visited` state is required by default (browsers will use `a`) */ 69 | a { 70 | color: #268bd2; 71 | text-decoration: none; 72 | } 73 | a strong { 74 | color: inherit; 75 | } 76 | /* `:focus` is linked to `:hover` for basic accessibility */ 77 | a:hover, 78 | a:focus { 79 | text-decoration: underline; 80 | } 81 | 82 | /* Headings */ 83 | h1, h2, h3, h4, h5, h6 { 84 | margin-bottom: .5rem; 85 | font-weight: bold; 86 | line-height: 1.25; 87 | color: #313131; 88 | text-rendering: optimizeLegibility; 89 | } 90 | h1 { 91 | font-size: 2rem; 92 | } 93 | h2 { 94 | margin-top: 1rem; 95 | font-size: 1.5rem; 96 | } 97 | h3 { 98 | margin-top: 1.5rem; 99 | font-size: 1.25rem; 100 | } 101 | h4, h5, h6 { 102 | margin-top: 1rem; 103 | font-size: 1rem; 104 | } 105 | 106 | /* Body text */ 107 | p { 108 | margin-top: 0; 109 | margin-bottom: 1rem; 110 | } 111 | 112 | strong { 113 | color: #303030; 114 | } 115 | 116 | 117 | /* Lists */ 118 | ul, ol, dl { 119 | margin-top: 0; 120 | margin-bottom: 1rem; 121 | } 122 | 123 | dt { 124 | font-weight: bold; 125 | } 126 | dd { 127 | margin-bottom: .5rem; 128 | } 129 | 130 | /* Misc */ 131 | hr { 132 | position: relative; 133 | margin: 1.5rem 0; 134 | border: 0; 135 | border-top: 1px solid #eee; 136 | border-bottom: 1px solid #fff; 137 | } 138 | 139 | abbr { 140 | font-size: 85%; 141 | font-weight: bold; 142 | color: #555; 143 | text-transform: uppercase; 144 | } 145 | abbr[title] { 146 | cursor: help; 147 | border-bottom: 1px dotted #e5e5e5; 148 | } 149 | 150 | /* Quotes */ 151 | blockquote { 152 | padding: .5rem 1rem; 153 | margin: .8rem 0; 154 | color: #7a7a7a; 155 | border-left: .25rem solid #e5e5e5; 156 | } 157 | blockquote p:last-child { 158 | margin-bottom: 0; 159 | } 160 | @media (min-width: 30em) { 161 | blockquote { 162 | padding-right: 5rem; 163 | padding-left: 1.25rem; 164 | } 165 | } 166 | 167 | img { 168 | display: block; 169 | max-width: 100%; 170 | margin: 0 0 1rem; 171 | border-radius: 5px; 172 | } 173 | 174 | /* Tables */ 175 | table { 176 | margin-bottom: 1rem; 177 | width: 100%; 178 | border: 1px solid #e5e5e5; 179 | border-collapse: collapse; 180 | } 181 | td, 182 | th { 183 | padding: .25rem .5rem; 184 | border: 1px solid #e5e5e5; 185 | } 186 | tbody tr:nth-child(odd) td, 187 | tbody tr:nth-child(odd) th { 188 | background-color: #f9f9f9; 189 | } 190 | 191 | /* 192 | * __ __ 193 | * /\ \ /\ \ 194 | * \ \ \___ __ __ \_\ \ __ 195 | * \ \ _ `\/\ \/\ \ /'_` \ /'__`\ 196 | * \ \ \ \ \ \ \_\ \/\ \_\ \/\ __/ 197 | * \ \_\ \_\/`____ \ \___,_\ \____\ 198 | * \/_/\/_/`/___/> \/__,_ /\/____/ 199 | * /\___/ 200 | * \/__/ 201 | * 202 | * Designed, built, and released under MIT license by @mdo. Learn more at 203 | * https://github.com/poole/hyde. 204 | */ 205 | 206 | 207 | /* 208 | * Contents 209 | * 210 | * Global resets 211 | * Sidebar 212 | * Container 213 | * Reverse layout 214 | * Themes 215 | */ 216 | 217 | 218 | /* 219 | * Global resets 220 | * 221 | * Update the foundational and global aspects of the page. 222 | */ 223 | 224 | html { 225 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 226 | } 227 | 228 | /* 229 | * Sidebar 230 | * 231 | * Flexible banner for housing site name, intro, and "footer" content. Starts 232 | * out above content in mobile and later moves to the side with wider viewports. 233 | */ 234 | 235 | .sidebar { 236 | text-align: center; 237 | padding: 2rem 1rem; 238 | color: rgba(255,255,255,.5); 239 | background-color: #202020; 240 | } 241 | @media (min-width: 768px) { 242 | .sidebar { 243 | position: fixed; 244 | top: 0; 245 | left: 0; 246 | bottom: 0; 247 | width: 15rem; 248 | text-align: left; 249 | } 250 | } 251 | 252 | /* Sidebar links */ 253 | .sidebar a { 254 | color: #fff; 255 | } 256 | 257 | /* About section */ 258 | .sidebar-about h1 { 259 | color: #fff; 260 | margin-top: 0; 261 | font-family: "Abril Fatface", serif; 262 | font-size: 3.25rem; 263 | } 264 | 265 | /* Sidebar nav */ 266 | .sidebar-nav { 267 | margin-bottom: 1rem; 268 | } 269 | .sidebar-nav-item { 270 | display: block; 271 | line-height: 1.75; 272 | } 273 | a.sidebar-nav-item:hover, 274 | a.sidebar-nav-item:focus { 275 | text-decoration: underline; 276 | } 277 | .sidebar-nav-item.active { 278 | font-weight: bold; 279 | } 280 | 281 | /* Sticky sidebar 282 | * 283 | * Add the `sidebar-sticky` class to the sidebar's container to affix it the 284 | * contents to the bottom of the sidebar in tablets and up. 285 | */ 286 | 287 | @media (min-width: 768px) { 288 | .sidebar-sticky { 289 | position: absolute; 290 | right: 1rem; 291 | bottom: 1rem; 292 | left: 1rem; 293 | } 294 | } 295 | 296 | 297 | /* Container 298 | * 299 | * Align the contents of the site above the proper threshold with some margin-fu 300 | * with a 25%-wide `.sidebar`. 301 | */ 302 | 303 | .content { 304 | padding-top: 4rem; 305 | padding-bottom: 4rem; 306 | } 307 | 308 | @media (min-width: 768px) { 309 | .content { 310 | max-width: 45rem; 311 | margin-left: 15rem; 312 | margin-right: 2rem; 313 | } 314 | } 315 | -------------------------------------------------------------------------------- /src/templates/vela/_libs/vela/slideout.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * slideout.js 3 | * https://github.com/mango/slideout 4 | * MIT License 5 | */ 6 | !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Slideout=t()}}(function(){var t,e,n;return function i(t,e,n){function o(r,a){if(!e[r]){if(!t[r]){var u=typeof require=="function"&&require;if(!a&&u)return u(r,!0);if(s)return s(r,!0);var l=new Error("Cannot find module '"+r+"'");throw l.code="MODULE_NOT_FOUND",l}var h=e[r]={exports:{}};t[r][0].call(h.exports,function(e){var n=t[r][1][e];return o(n?n:e)},h,h.exports,i,t,e,n)}return e[r].exports}var s=typeof require=="function"&&require;for(var r=0;rt._tolerance?t.open():t.close()}t._moved=false};this.panel.addEventListener(h.end,this._onTouchEndFn);this._onTouchMoveFn=function(e){if(r||t._preventOpen||typeof e.touches==="undefined"||d(e.target)){return}var n=e.touches[0].clientX-t._startOffsetX;var i=t._currentOffsetX=n;if(Math.abs(i)>t._padding){return}if(Math.abs(n)>20){t._opening=true;var o=n*t._orientation;if(t._opened&&o>0||!t._opened&&o<0){return}if(!t._moved){t.emit("translatestart")}if(o<=0){i=n+t._padding*t._orientation;t._opening=false}if(!(t._moved&&u.classList.contains("slideout-open"))){u.classList.add("slideout-open")}t.panel.style[f+"transform"]=t.panel.style.transform="translateX("+i+"px)";t.emit("translate",i);t._moved=true}};this.panel.addEventListener(h.move,this._onTouchMoveFn);return this};_.prototype.enableTouch=function(){this._touch=true;return this};_.prototype.disableTouch=function(){this._touch=false;return this};_.prototype.destroy=function(){this.close();a.removeEventListener(h.move,this._preventMove);this.panel.removeEventListener(h.start,this._resetTouchFn);this.panel.removeEventListener("touchcancel",this._onTouchCancelFn);this.panel.removeEventListener(h.end,this._onTouchEndFn);this.panel.removeEventListener(h.move,this._onTouchMoveFn);a.removeEventListener("scroll",this._onScrollFn);this.open=this.close=function(){};return this};e.exports=_},{decouple:2,emitter:3}],2:[function(t,e,n){"use strict";var i=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}();function o(t,e,n){var o,s=false;function r(t){o=t;a()}function a(){if(!s){i(u);s=true}}function u(){n.call(t,o);s=false}t.addEventListener(e,r,false);return r}e.exports=o},{}],3:[function(t,e,n){"use strict";var i=function(t,e){if(!(t instanceof e)){throw new TypeError("Cannot call a class as a function")}};n.__esModule=true;var o=function(){function t(){i(this,t)}t.prototype.on=function e(t,n){this._eventCollection=this._eventCollection||{};this._eventCollection[t]=this._eventCollection[t]||[];this._eventCollection[t].push(n);return this};t.prototype.once=function n(t,e){var n=this;function i(){n.off(t,i);e.apply(this,arguments)}i.listener=e;this.on(t,i);return this};t.prototype.off=function o(t,e){var n=undefined;if(!this._eventCollection||!(n=this._eventCollection[t])){return this}n.forEach(function(t,i){if(t===e||t.listener===e){n.splice(i,1)}});if(n.length===0){delete this._eventCollection[t]}return this};t.prototype.emit=function s(t){var e=this;for(var n=arguments.length,i=Array(n>1?n-1:0),o=1;op in rd, ("_css", "_layout", "_libs")) 107 | error("The directory $path does not contain a `_css`, `_layout` and " * 108 | "a `_libs` folder and so will be ignored.") 109 | end 110 | 111 | # Add the folder at the right place in FranklinTemplates 112 | # 113 | # does it exist? 114 | d, tname = splitdir(path) 115 | isempty(tname) && (tname = splitdir(d)[2]) # it ended with separator 116 | 117 | dest = joinpath(TEMPL_PATH, tname, "") 118 | common = joinpath(TEMPL_PATH, "common", "") 119 | 120 | if tname ∉ readdir(TEMPL_PATH) 121 | cp(path, dest) 122 | else 123 | # it exists already --> merge the folders 124 | mergefolders(path, dest) 125 | end 126 | 127 | # postprocess 128 | if isdir(joinpath(dest, "__site")) 129 | rm(joinpath(dest, "__site"), recursive=true, force=true) 130 | end 131 | # remove duplicates 132 | deduplicate(common, dest) 133 | return nothing 134 | end 135 | 136 | """ 137 | mergefolders(src, dst) 138 | 139 | Internal function to looks at what's inside `src/` and put it in `dst/`. If 140 | there are paths that match, the files are merged. It is assumed that files will 141 | not clash, if they clash files in `dst` are replaced. 142 | See also [`newsite`](@ref). 143 | """ 144 | function mergefolders(src, dst) 145 | for (root, _, files) ∈ walkdir(src) 146 | for file ∈ files 147 | newpath = replace(root, Regex("^$(escape_string(src))")=>"$dst") 148 | isdir(newpath) || mkpath(newpath) 149 | newpathfile = joinpath(newpath, file) 150 | cp(joinpath(root, file), newpathfile; force=true) 151 | end 152 | end 153 | end 154 | 155 | """ 156 | deduplicate(src, dest) 157 | 158 | Consider the files provided by `src` and remove all identical files from `dest` 159 | to avoid duplication. 160 | """ 161 | function deduplicate(src, dest) 162 | # Post processs by removing files which are already provided by src 163 | dest = joinpath(dest, "") # ensure it has a separator at the end 164 | for (root, _, files) in walkdir(dest) 165 | for file in files 166 | fpath = joinpath(root, file) 167 | rpath = replace(fpath, dest => "") 168 | cpath = joinpath(src, rpath) 169 | isfile(cpath) || continue 170 | if filecmp(fpath, cpath) 171 | rm(fpath) 172 | end 173 | end 174 | end 175 | # there may be empty folders (these would be ignored by GitHub anyway) 176 | emptydirs = [] 177 | for (root, dirs, _) in walkdir(dest) 178 | for dir in dirs 179 | dpath = joinpath(root, dir) 180 | if isdir(dpath) && isempty(readdir(dpath)) 181 | push!(emptydirs, dpath) 182 | end 183 | end 184 | end 185 | for dpath in emptydirs 186 | try; rm(dpath, recursive=true); catch; end 187 | end 188 | return nothing 189 | end 190 | 191 | """ 192 | filecmp(path1, path2) 193 | 194 | Take 2 absolute paths and check if the files are different (return false if 195 | different and true otherwise). 196 | This code was suggested by Steven J. Johnson on discourse: 197 | https://discourse.julialang.org/t/how-to-obtain-the-result-of-a-diff-between-2-files-in-a-loop/23784/4 198 | """ 199 | function filecmp(path1::AbstractString, path2::AbstractString) 200 | stat1, stat2 = stat(path1), stat(path2) 201 | if !(isfile(stat1) && isfile(stat2)) || filesize(stat1) != filesize(stat2) 202 | return false 203 | end 204 | stat1 == stat2 && return true # same file 205 | open(path1, "r") do file1 206 | open(path2, "r") do file2 207 | buf1 = Vector{UInt8}(undef, 32768) 208 | buf2 = similar(buf1) 209 | while !eof(file1) && !eof(file2) 210 | n1 = readbytes!(file1, buf1) 211 | n2 = readbytes!(file2, buf2) 212 | n1 != n2 && return false 213 | 0 != Base._memcmp(buf1, buf2, n1) && return false 214 | end 215 | return eof(file1) == eof(file2) 216 | end 217 | end 218 | end 219 | -------------------------------------------------------------------------------- /src/templates/common/_css/franklin.css: -------------------------------------------------------------------------------- 1 | /* ================================================================== 2 | DEFAULT FONT AND LAYOUT 3 | ================================================================== */ 4 | 5 | html { 6 | font-family: Helvetica, Arial, sans-serif; 7 | font-size : 17px; 8 | color: #1c1c1c; 9 | } 10 | 11 | /* ================================================================== 12 | BASIC GRID FOR PROFILE PIC 13 | ================================================================== */ 14 | 15 | .franklin-content .row { 16 | display: block; } 17 | 18 | .franklin-content .left { 19 | float: left; 20 | margin-right: 15px; } 21 | 22 | .franklin-content .right { 23 | float: right; } 24 | 25 | .franklin-content .container img { 26 | width: auto; 27 | padding-left: 0; 28 | border-radius: 10px; } 29 | 30 | .franklin-content .footnote { 31 | position: relative; 32 | top: -0.5em; 33 | font-size: 70%; 34 | } 35 | 36 | /* ================================================================== 37 | FOOT / COPYRIGHT 38 | ================================================================== */ 39 | 40 | .franklin-content .page-foot a { 41 | text-decoration: none; 42 | color: #a6a2a0; 43 | text-decoration: underline; } 44 | 45 | .page-foot { 46 | font-size: 80%; 47 | font-family: Arial, serif; 48 | color: #a6a2a0; 49 | text-align: center; 50 | margin-top: 6em; 51 | border-top: 1px solid lightgrey; 52 | padding-top: 2em; 53 | margin-bottom: 4em; } 54 | 55 | /* ================================================================== 56 | TEXT GEOMETRY 57 | ================================================================== */ 58 | 59 | .franklin-content { 60 | position: relative; 61 | padding-left: 12.5%; 62 | padding-right: 12.5%; 63 | line-height: 1.35em; } 64 | 65 | /* on wide screens, fix content width to a max value */ 66 | @media (min-width: 940px) { 67 | .franklin-content { 68 | width: 705px; 69 | margin-left: auto; 70 | margin-right: auto; } 71 | } 72 | 73 | /* on narrow device, reduce margins */ 74 | @media (max-width: 480px) { 75 | .franklin-content { 76 | padding-left: 6%; 77 | padding-right: 6%; } 78 | } 79 | 80 | /* ================================================================== 81 | TITLES 82 | ================================================================== */ 83 | 84 | .franklin-content h1 { font-size: 24px; } 85 | .franklin-content h2 { font-size: 22px; } 86 | .franklin-content h3 { font-size: 20px; } 87 | 88 | .franklin-content h1, h2, h3, h4, h5, h6 { 89 | text-align: left; } 90 | 91 | .franklin-content h1 { 92 | padding-bottom: 0.5em; 93 | border-bottom: 3px double lightgrey; 94 | margin-top: 1.5em; 95 | margin-bottom: 1em; } 96 | 97 | .franklin-content h2 { 98 | padding-bottom: 0.3em; 99 | border-bottom: 1px solid lightgrey; 100 | margin-top: 2em; 101 | margin-bottom: 1em; } 102 | 103 | .franklin-content h1 a { color: inherit; } 104 | .franklin-content h1 a:hover {text-decoration: none;} 105 | .franklin-content h2 a { color: inherit; } 106 | .franklin-content h2 a:hover {text-decoration: none;} 107 | .franklin-content h3 a { color: inherit; } 108 | .franklin-content h3 a:hover {text-decoration: none;} 109 | .franklin-content h4 a { color: inherit; } 110 | .franklin-content h4 a:hover {text-decoration: none;} 111 | .franklin-content h5 a { color: inherit; } 112 | .franklin-content h5 a:hover {text-decoration: none;} 113 | .franklin-content h6 a { color: inherit; } 114 | .franklin-content h6 a:hover {text-decoration: none;} 115 | 116 | .franklin-content table { 117 | margin-left: auto; 118 | margin-right: auto; 119 | border-collapse: collapse; 120 | text-align: center;} 121 | .franklin-content th, td{ 122 | padding: 10px; 123 | border: 1px solid black;} 124 | 125 | .franklin-content blockquote { 126 | background: #eeeeee; 127 | border-left: 7px solid #a8a8a8; 128 | margin: 1.5em 10px; 129 | padding: 0.5em 10px; 130 | font-style: italic;} 131 | 132 | .franklin-content blockquote p { 133 | display: inline; } 134 | 135 | /* ================================================================== 136 | GENERAL FORMATTING 137 | ================================================================== */ 138 | 139 | /* spacing between bullet points */ 140 | .franklin-content li p { 141 | margin: 10px 0; } 142 | 143 | .franklin-content a { 144 | color: #004de6; 145 | text-decoration: none; } 146 | 147 | .franklin-content a:hover { 148 | text-decoration: underline; } 149 | 150 | /* ================================================================== 151 | HYPERREFS AND FOOTNOTES 152 | ================================================================== */ 153 | 154 | .franklin-content .eqref a { color: green; } 155 | .franklin-content .bibref a { color: green; } 156 | 157 | .franklin-content sup { 158 | font-size: 70%; 159 | vertical-align: super; 160 | line-height: 0; } 161 | 162 | .franklin-content table.fndef { 163 | margin: 0; 164 | margin-bottom: 10px;} 165 | .franklin-content .fndef tr, td { 166 | padding: 0; 167 | border: 0; 168 | text-align: left;} 169 | .franklin-content .fndef tr { 170 | border-left: 2px solid lightgray; 171 | } 172 | .franklin-content .fndef td.fndef-backref { 173 | vertical-align: top; 174 | font-size: 70%; 175 | padding-left: 5px;} 176 | .franklin-content .fndef td.fndef-content { 177 | font-size: 80%; 178 | padding-left: 10px;} 179 | 180 | /* ================================================================== 181 | IMAGES in CONTENT 182 | ================================================================== */ 183 | 184 | .franklin-content img { 185 | width: 70%; 186 | text-align: center; 187 | padding-left: 10%; } 188 | 189 | .franklin-content .img-small img { 190 | width: 50%; 191 | text-align: center; 192 | padding-left: 20%; } 193 | 194 | /* ================================================================== 195 | KATEX 196 | ================================================================== */ 197 | 198 | body { counter-reset: eqnum; } 199 | 200 | .katex { font-size: 1em !important; } 201 | 202 | .katex-display .katex { 203 | display: inline-block; } /* overwrite katex settings */ 204 | 205 | .katex-display::after { 206 | counter-increment: eqnum; 207 | content: "(" counter(eqnum) ")"; 208 | position: relative; 209 | float: right; 210 | padding-right: 5px; } 211 | 212 | /* ================================================================== 213 | CODE & HIGHLIGHT.JS 214 | ================================================================== */ 215 | 216 | code { 217 | background-color: rgba(27,31,35,0.05); 218 | padding: 0.1em 0.2em; 219 | border-radius: 2px; 220 | font-size: 90%; 221 | } 222 | 223 | /* .franklin-content code { */ 224 | /* background-color: rgba(27,31,35,0.05); */ 225 | /* padding: 0.1em 0.2em; */ 226 | /* border-radius: 2px; */ 227 | /* font-size: 90%; } */ 228 | 229 | .hljs { 230 | font-size: 90%; 231 | line-height: 1.35em; 232 | border-radius: 10px; } 233 | 234 | .hljs-meta, .hljs-metas, .hljs-metap { font-weight: bold; } 235 | 236 | .hljs-meta { color: rgb(25, 179, 51); } 237 | 238 | .hljs-metas { color: red; } 239 | 240 | .hljs-metap { color: rgb(51, 131, 231); } 241 | 242 | /* ================================================================== 243 | BOXES 244 | ================================================================== */ 245 | 246 | .franklin-content .colbox-blue { 247 | background-color: #EEF3F5; 248 | padding-top: 5px; 249 | padding-right: 10px; 250 | padding-left: 10px; 251 | padding-bottom: 5px; 252 | margin-left: 5px; 253 | margin-top: 5px; 254 | margin-bottom: 5px; 255 | border-radius: 0 10px 10px 0; 256 | border-left: 5px solid #4C9CF1; } 257 | -------------------------------------------------------------------------------- /src/templates/jemdoc/_css/jemdoc.css: -------------------------------------------------------------------------------- 1 | /* Default css file for jemdoc. */ 2 | 3 | table#tlayout { 4 | border: none; 5 | border-collapse: separate; 6 | background: white; 7 | } 8 | 9 | body { 10 | background: white; 11 | font-family: Georgia, serif; 12 | padding-bottom: 8px; 13 | margin: 0; 14 | } 15 | 16 | #layout-menu { 17 | background: #f6f6f6; 18 | border: 1px solid #dddddd; 19 | padding-top: 0.5em; 20 | padding-left: 15px; 21 | padding-right: 25px; 22 | font-size: 1.0em; 23 | width: auto; 24 | white-space: nowrap; 25 | text-align: left; 26 | vertical-align: top; 27 | } 28 | 29 | #layout-menu td { 30 | background: #f4f4f4; 31 | vertical-align: top; 32 | } 33 | 34 | #layout-content { 35 | padding-top: 0.0em; 36 | padding-left: 1.0em; 37 | padding-right: 1.0em; 38 | border: none; 39 | background: white; 40 | text-align: left; 41 | vertical-align: top; 42 | } 43 | 44 | #layout-menu a { 45 | line-height: 1.5em; 46 | margin-left: 0.5em; 47 | } 48 | 49 | tt { 50 | background: #ffffdd; 51 | } 52 | 53 | pre, tt { 54 | font-size: 90%; 55 | font-family: monaco, monospace; 56 | } 57 | 58 | a, a > tt { 59 | color: #224b8d; 60 | text-decoration: none; 61 | } 62 | 63 | a:hover { 64 | border-bottom: 1px gray dotted; 65 | } 66 | 67 | #layout-menu a.current:link, #layout-menu a.current:visited { 68 | color: #022b6d; 69 | border-bottom: 1px gray solid; 70 | } 71 | #layout-menu a:link, #layout-menu a:visited, #layout-menu a:hover { 72 | color: #527bbd; 73 | text-decoration: none; 74 | } 75 | #layout-menu a:hover { 76 | text-decoration: none; 77 | } 78 | 79 | #layout-menu .current > a { 80 | border-bottom: 1px gray solid; 81 | } 82 | 83 | div.menu-category { 84 | border-bottom: 1px solid gray; 85 | margin-top: 0.8em; 86 | padding-top: 0.2em; 87 | padding-bottom: 0.1em; 88 | font-weight: bold; 89 | } 90 | 91 | div.menu-item { 92 | padding-left: 16px; 93 | text-indent: -16px; 94 | } 95 | 96 | div#toptitle { 97 | padding-bottom: 0.2em; 98 | margin-bottom: 1.5em; 99 | border-bottom: 3px double gray; 100 | } 101 | 102 | /* Reduce space if we begin the page with a title. */ 103 | div#toptitle + h2, div#toptitle + h3 { 104 | margin-top: -0.7em; 105 | } 106 | 107 | div#subtitle { 108 | margin-top: 0.0em; 109 | margin-bottom: 0.0em; 110 | padding-top: 0em; 111 | padding-bottom: 0.1em; 112 | } 113 | 114 | em { 115 | font-style: italic; 116 | } 117 | 118 | strong { 119 | font-weight: bold; 120 | } 121 | 122 | 123 | h1, h2, h3 { 124 | color: #527bbd; 125 | margin-top: 0.7em; 126 | margin-bottom: 0.3em; 127 | padding-bottom: 0.2em; 128 | line-height: 1.0; 129 | padding-top: 0.5em; 130 | border-bottom: 1px solid #aaaaaa; 131 | } 132 | 133 | h1 { 134 | font-size: 165%; 135 | padding-top: 2em; 136 | } 137 | 138 | h2 { 139 | padding-top: 0.8em; 140 | font-size: 125%; 141 | } 142 | 143 | h2 + h3 { 144 | padding-top: 0.2em; 145 | } 146 | 147 | h3 { 148 | font-size: 110%; 149 | border-bottom: none; 150 | } 151 | 152 | p { 153 | margin-top: 0.0em; 154 | margin-bottom: 0.8em; 155 | padding: 0; 156 | line-height: 1.3; 157 | } 158 | 159 | /* pre { 160 | padding: 0; 161 | margin: 0; 162 | } */ 163 | 164 | div#footer { 165 | font-size: small; 166 | border-top: 1px solid #c0c0c0; 167 | padding-top: 0.1em; 168 | margin-top: 4.0em; 169 | color: #c0c0c0; 170 | } 171 | 172 | div#footer a { 173 | color: #80a0b0; 174 | } 175 | 176 | div#footer-text { 177 | float: left; 178 | padding-bottom: 8px; 179 | } 180 | 181 | ul, ol, dl { 182 | margin-top: 0.2em; 183 | padding-top: 0; 184 | margin-bottom: 0.8em; 185 | } 186 | 187 | dt { 188 | margin-top: 0.5em; 189 | margin-bottom: 0; 190 | } 191 | 192 | dl { 193 | margin-left: 20px; 194 | } 195 | 196 | dd { 197 | color: #222222; 198 | } 199 | 200 | dd > *:first-child { 201 | margin-top: 0; 202 | } 203 | 204 | ul { 205 | list-style-position: outside; 206 | list-style-type: square; 207 | } 208 | 209 | p + ul, p + ol { 210 | margin-top: -0.5em; 211 | } 212 | 213 | li ul, li ol { 214 | margin-top: -0.3em; 215 | } 216 | 217 | ol { 218 | list-style-position: outside; 219 | list-style-type: decimal; 220 | } 221 | 222 | li p, dd p { 223 | margin-bottom: 0.3em; 224 | } 225 | 226 | 227 | ol ol { 228 | list-style-type: lower-alpha; 229 | } 230 | 231 | ol ol ol { 232 | list-style-type: lower-roman; 233 | } 234 | 235 | p + div.codeblock { 236 | margin-top: -0.6em; 237 | } 238 | 239 | div.codeblock, div.infoblock { 240 | margin-right: 0%; 241 | margin-top: 1.2em; 242 | margin-bottom: 1.3em; 243 | } 244 | 245 | div.blocktitle { 246 | font-weight: bold; 247 | color: #cd7b62; 248 | margin-top: 1.2em; 249 | margin-bottom: 0.1em; 250 | } 251 | 252 | div.blockcontent { 253 | border: 1px solid silver; 254 | padding: 0.3em 0.5em; 255 | } 256 | 257 | div.infoblock > div.blockcontent { 258 | background: #ffffee; 259 | } 260 | 261 | div.blockcontent p + ul, div.blockcontent p + ol { 262 | margin-top: 0.4em; 263 | } 264 | 265 | div.infoblock p { 266 | margin-bottom: 0em; 267 | } 268 | 269 | div.infoblock li p, div.infoblock dd p { 270 | margin-bottom: 0.5em; 271 | } 272 | 273 | div.infoblock p + p { 274 | margin-top: 0.8em; 275 | } 276 | 277 | div.codeblock > div.blockcontent { 278 | background: #f6f6f6; 279 | } 280 | 281 | span.pycommand { 282 | color: #000070; 283 | } 284 | 285 | span.statement { 286 | color: #008800; 287 | } 288 | span.builtin { 289 | color: #000088; 290 | } 291 | span.special { 292 | color: #990000; 293 | } 294 | span.operator { 295 | color: #880000; 296 | } 297 | span.error { 298 | color: #aa0000; 299 | } 300 | span.comment, span.comment > *, span.string, span.string > * { 301 | color: #606060; 302 | } 303 | 304 | @media print { 305 | #layout-menu { display: none; } 306 | } 307 | 308 | #fwtitle { 309 | margin: 2px; 310 | } 311 | 312 | #fwtitle #toptitle { 313 | padding-left: 0.5em; 314 | margin-bottom: 0.5em; 315 | } 316 | 317 | #layout-content h1:first-child, #layout-content h2:first-child, #layout-content h3:first-child { 318 | margin-top: -0.7em; 319 | } 320 | 321 | div#toptitle h1, #layout-content div#toptitle h1 { 322 | margin-bottom: 0.0em; 323 | padding-bottom: 0.1em; 324 | padding-top: 0; 325 | margin-top: 0.5em; 326 | border-bottom: none; 327 | } 328 | 329 | img.eq { 330 | padding: 0; 331 | padding-left: 0.1em; 332 | padding-right: 0.1em; 333 | margin: 0; 334 | } 335 | 336 | img.eqwl { 337 | padding-left: 2em; 338 | padding-top: 0.6em; 339 | padding-bottom: 0.2em; 340 | margin: 0; 341 | } 342 | 343 | table { 344 | border: 2px solid black; 345 | border-collapse: collapse; 346 | } 347 | 348 | td { 349 | padding: 2px; 350 | padding-left: 0.5em; 351 | padding-right: 0.5em; 352 | text-align: center; 353 | border: 1px solid gray; 354 | } 355 | 356 | table + table { 357 | margin-top: 1em; 358 | } 359 | 360 | tr.heading { 361 | font-weight: bold; 362 | border-bottom: 2px solid black; 363 | } 364 | 365 | img { 366 | border: none; 367 | } 368 | 369 | table.imgtable, table.imgtable td { 370 | border: none; 371 | text-align: left; 372 | } 373 | 374 | 375 | /* Extra css file for personal jemdoc customizations. */ 376 | /* Copyright (C) Jacob Mattingley 2007. */ 377 | 378 | a, a > tt { 379 | color: #305080; 380 | } 381 | a:hover { 382 | border-bottom: 1px #305080 dotted; 383 | } 384 | 385 | div#toptitle { 386 | margin-bottom: 1.3em; 387 | border-bottom: 1px solid #c0c0c0; 388 | } 389 | 390 | h1, h2, h3, #layout-menu a.current:link, #layout-menu a.current:visited { 391 | color: #203060; 392 | } 393 | 394 | h1, h2, h3 { 395 | border-bottom: 1px solid #c0c0c0; 396 | } 397 | 398 | div#footer-text { 399 | padding-bottom: 0; 400 | } 401 | 402 | div.blocktitle { 403 | color: #203070; 404 | } 405 | 406 | div.blockcontent { 407 | border: 1px solid #c0c0c0; 408 | } 409 | 410 | div#footer-text { 411 | padding-bottom: 8px; 412 | } 413 | 414 | .franklin-content { padding-left: 6%; } 415 | 416 | table { 417 | margin-bottom: 1em; 418 | } 419 | -------------------------------------------------------------------------------- /src/templates/common/index.md: -------------------------------------------------------------------------------- 1 | @def title = "Franklin Example" 2 | @def tags = ["syntax", "code"] 3 | 4 | # How to use Franklin 5 | 6 | \tableofcontents 7 | 8 | This section is meant as a refresher if you're new to Franklin. 9 | Have a look at both how the website renders and the corresponding markdown (`index.md`). 10 | Modify at will to get a feeling for how things work! 11 | 12 | Ps: if you want to modify the header or footer or the general look of the website, adjust the files in 13 | * `src/_css/` and 14 | * `src/_html_parts/`. 15 | 16 | ## The base with Markdown 17 | 18 | The [standard markdown syntax](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) can be used such as titles using `#`, lists: 19 | 20 | * element with **bold** 21 | * element with _emph_ 22 | 23 | or code-blocks `inline` or with highlighting (note the `@def hascode = true` in the source to allow [highlight.js](https://highlightjs.org/) to do its job): 24 | 25 | ```julia 26 | abstract type Point end 27 | struct PointR2{T<:Real} <: Point 28 | x::T 29 | y::T 30 | end 31 | struct PointR3{T<:Real} <: Point 32 | x::T 33 | y::T 34 | z::T 35 | end 36 | function len(p::T) where T<:Point 37 | sqrt(sum(getfield(p, η)^2 for η ∈ fieldnames(T))) 38 | end 39 | ``` 40 | 41 | You can also quote stuff 42 | 43 | > You must have chaos within you to ... 44 | 45 | or have tables: 46 | 47 | | English | Mandarin | 48 | | --------------- | ---------- | 49 | | winnie the pooh | 维尼熊 | 50 | 51 | Note that you may have to do a bit of CSS-styling to get these elements to look the way you want them (the same holds for the whole page in fact). 52 | 53 | ### Symbols and html entities 54 | 55 | If you want a dollar sign you have to escape it like so: \$, you can also use html entities like so: → or π or, if you're using Juno for instance, you can use `\pi[TAB]` to insert the symbol as is: π (it will be converted to a html entity).[^1] 56 | 57 | If you want to show a backslash, just use it like so: \ ; if you want to force a line break, use a ` \\ ` like \\ so (this is on a new line).[^blah] 58 | 59 | If you want to show a backtick, escape it like so: \` and if you want to show a tick in inline code use double backticks like ``so ` ...``. 60 | 61 | Footnotes are nice too: 62 | 63 | [^1]: this is the text for the first footnote, you can style all this looking at `.fndef` elements; note that the whole footnote definition is _expected to be on the same line_. 64 | [^blah]: and this is a longer footnote with some blah from veggie ipsum: turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. 65 | 66 | ## Basic Franklin extensions 67 | 68 | ### Divs 69 | 70 | It is sometimes useful to have a short way to make a part of the page belong to a div so that it can be styled separately. 71 | You can do this easily with Franklin by using `@@divname ... @@`. 72 | For instance, you could want a blue background behind some text. 73 | 74 | @@colbox-blue 75 | Here we go! (this is styled in the css sheet with name "colbox-blue"). 76 | @@ 77 | 78 | Since it's just a `
    ` block, you can put this construction wherever you like and locally style your text. 79 | 80 | ### LaTeX and Maths 81 | 82 | Essentially three things are imitated from LaTeX 83 | 84 | 1. you can introduce definitions using `\newcommand` 85 | 1. you can use hyper-references with `\eqref`, `\cite`, ... 86 | 1. you can show nice maths (via KaTeX) 87 | 88 | The definitions can be introduced in the page or in the `config.md` (in which case they're available everywhere as opposed to just in that page). 89 | For instance, the commands `\scal` and `\R` are defined in the config file (see `src/config.md`) and can directly be used whereas the command `\E` is defined below (and therefore only available on this page): 90 | 91 | \newcommand{\E}[1]{\mathbb E\left[#1\right]} 92 | 93 | Now we can write something like 94 | 95 | $$ \varphi(\E{X}) \le \E{\varphi(X)}. \label{equation blah} $$ 96 | 97 | since we've given it the label `\label{equation blah}`, we can refer it like so: \eqref{equation blah} which can be convenient for pages that are math-heavy. 98 | 99 | In a similar vein you can cite references that would be at the bottom of the page: \citep{noether15, bezanson17}. 100 | 101 | **Note**: the LaTeX commands you define can also incorporate standard markdown (though not in a math environment) so for instance let's define a silly `\bolditalic` command. 102 | 103 | \newcommand{\bolditalic}[1]{_**!#1**_} 104 | 105 | and use it \bolditalic{here for example}. 106 | 107 | Here's another quick one, a command to change the color: 108 | 109 | \newcommand{\col}[2]{~~~#2~~~} 110 | 111 | This is \col{blue}{in blue} or \col{#bf37bc}{in #bf37bc}. 112 | 113 | ### A quick note on whitespaces 114 | 115 | For most commands you will use `#k` to refer to the $k$-th argument as in LaTeX. 116 | In order to reduce headaches, this forcibly introduces a whitespace on the left of whatever is inserted which, usually, changes nothing visible (e.g. in a math settings). 117 | However there _may be_ situations where you do not want this to happen and you know that the insertion will not clash with anything else. 118 | In that case, you should simply use `!#k` which will not introduce that whitespace. 119 | It's probably easier to see this in action: 120 | 121 | \newcommand{\pathwith}[1]{`/usr/local/bin/#1`} 122 | \newcommand{\pathwithout}[1]{`/usr/local/bin/!#1`} 123 | 124 | * with: \pathwith{script.jl}, there's a whitespace you don't want 🚫 125 | * without: \pathwithout{script.jl} here there isn't ✅ 126 | 127 | ### Raw HTML 128 | 129 | You can include raw HTML by just surrounding a block with `~~~`. 130 | Not much more to add. 131 | This may be useful for local custom layouts like having a photo next to a text in a specific way. 132 | 133 | ~~~ 134 |
    135 |
    136 | 137 |

    138 | Marine iguanas are truly splendid creatures. They're found on the Gálapagos islands, have skin that basically acts as a solar panel, can swim and may have the ability to adapt their body size depending on whether there's food or not. 139 |

    140 |

    141 | Evolution is cool. 142 |

    143 |
    144 |
    145 |
    146 | ~~~ 147 | 148 | **Note 1**: again, entire such blocks can be made into latex-like commands via `\newcommand{\mynewblock}[1]{...}`. 149 | 150 | **Note 2**: whatever is in a raw HTML block is *not* further processed (so you can't have LaTeX in there for instance). A partial way around this is to use `@@...` blocks which *will* be recursively parsed. The following code gives the same result as above with the small difference that there is LaTeX being processed in the inner div. 151 | 152 | @@row 153 | @@container 154 | @@left ![](/assets/rndimg.jpg) @@ 155 | @@ 156 | Marine iguanas are **truly splendid** creatures. They're not found in equations like $\exp(-i\pi)+1$. But they're still quite cool. 157 | ~~~ 158 |
    159 | ~~~ 160 | @@ 161 | 162 | ## Pages and structure 163 | 164 | Here are a few empty pages connecting to the menu links to show where files can go and the resulting paths. (It's probably best if you look at the source folder for this). 165 | 166 | * [menu 1](/menu1/) 167 | * [menu 2](/menu2/) 168 | * [menu 3](/menu3/) 169 | 170 | ## References (not really) 171 | 172 | * \biblabel{noether15}{Noether (1915)} **Noether**, Körper und Systeme rationaler Funktionen, 1915. 173 | * \biblabel{bezanson17}{Bezanson et al. (2017)} **Bezanson**, **Edelman**, **Karpinski** and **Shah**, [Julia: a fresh approach to numerical computing](https://julialang.org/research/julia-fresh-approach-BEKS.pdf), SIAM review 2017. 174 | 175 | ## Header and Footer 176 | 177 | As you can see here at the bottom of the page, there is a footer which you may want on all pages but for instance you may want the date of last modification to be displayed. 178 | In a fashion heavily inspired by [Hugo](https://gohugo.io), you can write things like 179 | 180 | ```html 181 | Last modified: {{ fill fd_mtime }}. 182 | ``` 183 | 184 | (cf. `src/_html_parts/page_foot.html`) which will then replace these braces with the content of a dictionary of variables at the key `fd_mtime`. 185 | This dictionary of variables is accessed locally by pages through `@def varname = value` and globally through the `config.md` page via the same syntax. 186 | 187 | There's a few other such functions of the form `{{fname p₁ p₂}}` as well as support for conditional blocks. If you wander through the `src/_html_parts/` folder and its content, you should be able to see those in action. 188 | -------------------------------------------------------------------------------- /src/templates/lanyon/_css/poole_lanyon.css: -------------------------------------------------------------------------------- 1 | /* 2 | * ___ 3 | * /\_ \ 4 | * _____ ___ ___\//\ \ __ 5 | * /\ '__`\ / __`\ / __`\\ \ \ /'__`\ 6 | * \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/ 7 | * \ \ ,__/\ \____/\ \____//\____\ \____\ 8 | * \ \ \/ \/___/ \/___/ \/____/\/____/ 9 | * \ \_\ 10 | * \/_/ 11 | * 12 | * Designed, built, and released under MIT license by @mdo. Learn more at 13 | * https://github.com/poole/poole. 14 | */ 15 | 16 | 17 | /* 18 | * Contents 19 | * 20 | * Body resets 21 | * Custom type 22 | * Messages 23 | * Container 24 | * Masthead 25 | * Posts and pages 26 | * Pagination 27 | * Reverse layout 28 | * Themes 29 | */ 30 | 31 | 32 | /* 33 | * Body resets 34 | * 35 | * Update the foundational and global aspects of the page. 36 | */ 37 | 38 | * { 39 | -webkit-box-sizing: border-box; 40 | -moz-box-sizing: border-box; 41 | box-sizing: border-box; 42 | } 43 | 44 | html, 45 | body { 46 | margin: 0; 47 | padding: 0; 48 | } 49 | 50 | html { 51 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 52 | font-size: 16px; 53 | line-height: 1.5; 54 | } 55 | @media (min-width: 38rem) { 56 | html { 57 | font-size: 20px; 58 | } 59 | } 60 | 61 | body { 62 | color: #515151; 63 | background-color: #fff; 64 | -webkit-text-size-adjust: 100%; 65 | -ms-text-size-adjust: 100%; 66 | } 67 | 68 | /* No `:visited` state is required by default (browsers will use `a`) */ 69 | a { 70 | color: #268bd2; 71 | text-decoration: none; 72 | } 73 | /* `:focus` is linked to `:hover` for basic accessibility */ 74 | a:hover, 75 | a:focus { 76 | text-decoration: underline; 77 | } 78 | 79 | /* Headings */ 80 | h1, h2, h3, h4, h5, h6 { 81 | margin-bottom: .5rem; 82 | font-weight: bold; 83 | line-height: 1.25; 84 | color: #313131; 85 | text-rendering: optimizeLegibility; 86 | } 87 | h1 { 88 | font-size: 2rem; 89 | } 90 | h2 { 91 | margin-top: 1rem; 92 | font-size: 1.5rem; 93 | } 94 | h3 { 95 | margin-top: 1.5rem; 96 | font-size: 1.25rem; 97 | } 98 | h4, h5, h6 { 99 | margin-top: 1rem; 100 | font-size: 1rem; 101 | } 102 | 103 | /* Body text */ 104 | p { 105 | margin-top: 0; 106 | margin-bottom: 1rem; 107 | } 108 | 109 | strong { 110 | color: #303030; 111 | } 112 | 113 | 114 | /* Lists */ 115 | ul, ol, dl { 116 | margin-top: 0; 117 | margin-bottom: 1rem; 118 | } 119 | 120 | dt { 121 | font-weight: bold; 122 | } 123 | dd { 124 | margin-bottom: .5rem; 125 | } 126 | 127 | /* Misc */ 128 | hr { 129 | position: relative; 130 | margin: 1.5rem 0; 131 | border: 0; 132 | border-top: 1px solid #eee; 133 | border-bottom: 1px solid #fff; 134 | } 135 | 136 | abbr { 137 | font-size: 85%; 138 | font-weight: bold; 139 | color: #555; 140 | text-transform: uppercase; 141 | } 142 | abbr[title] { 143 | cursor: help; 144 | border-bottom: 1px dotted #e5e5e5; 145 | } 146 | 147 | img { 148 | display: block; 149 | margin: 0 0 1rem; 150 | border-radius: 5px; 151 | } 152 | 153 | /* Tables */ 154 | table { 155 | margin-bottom: 1rem; 156 | width: 100%; 157 | border: 1px solid #e5e5e5; 158 | border-collapse: collapse; 159 | } 160 | td, 161 | th { 162 | padding: .25rem .5rem; 163 | border: 1px solid #e5e5e5; 164 | } 165 | tbody tr:nth-child(odd) td, 166 | tbody tr:nth-child(odd) th { 167 | background-color: #f9f9f9; 168 | } 169 | 170 | /* 171 | * Container 172 | * 173 | * Center the page content. 174 | */ 175 | 176 | .container { 177 | /* max-width: 38rem; 178 | padding-left: 1rem; 179 | padding-right: 1rem; */ 180 | margin-left: auto; 181 | margin-right: auto; 182 | } 183 | 184 | 185 | /* 186 | * Masthead 187 | * 188 | * Super small header above the content for site name and short description. 189 | */ 190 | 191 | .masthead { 192 | padding-top: 1rem; 193 | padding-bottom: 1rem; 194 | margin-bottom: 3rem; 195 | } 196 | .masthead-title { 197 | margin-top: 0; 198 | margin-bottom: 0; 199 | color: #505050; 200 | } 201 | .masthead-title a { 202 | color: #505050; 203 | } 204 | .masthead-title small { 205 | font-size: 75%; 206 | font-weight: 400; 207 | color: #c0c0c0; 208 | letter-spacing: 0; 209 | } 210 | 211 | /* 212 | * ___ 213 | * /\_ \ 214 | * \//\ \ __ ___ __ __ ___ ___ 215 | * \ \ \ /'__`\ /' _ `\/\ \/\ \ / __`\ /' _ `\ 216 | * \_\ \_/\ \_\.\_/\ \/\ \ \ \_\ \/\ \_\ \/\ \/\ \ 217 | * /\____\ \__/.\_\ \_\ \_\/`____ \ \____/\ \_\ \_\ 218 | * \/____/\/__/\/_/\/_/\/_/`/___/> \/___/ \/_/\/_/ 219 | * /\___/ 220 | * \/__/ 221 | * 222 | * Designed, built, and released under MIT license by @mdo. Learn more at 223 | * https://github.com/poole/lanyon. 224 | */ 225 | 226 | 227 | /* 228 | * Contents 229 | * 230 | * Global resets 231 | * Masthead 232 | * Sidebar 233 | * Slide effect 234 | * Posts and pages 235 | * Pagination 236 | * Reverse layout 237 | * Themes 238 | */ 239 | 240 | 241 | /* 242 | * Global resets 243 | * 244 | * Update the foundational and global aspects of the page. 245 | */ 246 | 247 | /* Prevent scroll on narrow devices */ 248 | html, 249 | body { 250 | overflow-x: hidden; 251 | } 252 | 253 | html { 254 | font-family: "PT Serif", Georgia, "Times New Roman", serif; 255 | } 256 | 257 | h1, h2, h3, h4, h5, h6 { 258 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 259 | font-weight: 400; 260 | color: #313131; 261 | letter-spacing: -.025rem; 262 | } 263 | 264 | 265 | /* 266 | * Wrapper 267 | * 268 | * The wrapper is used to position site content when the sidebar is toggled. We 269 | * use an outter wrap to position the sidebar without interferring with the 270 | * regular page content. 271 | */ 272 | 273 | .wrap { 274 | position: relative; 275 | width: 100%; 276 | } 277 | 278 | 279 | /* 280 | * Container 281 | * 282 | * Center the page content. 283 | */ 284 | 285 | .container { 286 | max-width: 28rem; 287 | } 288 | @media (min-width: 38rem) { 289 | .container { 290 | max-width: 32rem; 291 | } 292 | } 293 | @media (min-width: 56rem) { 294 | .container { 295 | max-width: 38rem; 296 | } 297 | } 298 | 299 | 300 | /* 301 | * Masthead 302 | * 303 | * Super small header above the content for site name and short description. 304 | */ 305 | 306 | .masthead { 307 | padding-top: 1rem; 308 | padding-bottom: 1rem; 309 | margin-bottom: 3rem; 310 | border-bottom: 1px solid #eee; 311 | } 312 | .masthead-title { 313 | margin-top: 0; 314 | margin-bottom: 0; 315 | color: #505050; 316 | } 317 | .masthead-title a { 318 | color: #505050; 319 | } 320 | .masthead-title small { 321 | font-size: 75%; 322 | font-weight: 400; 323 | color: #c0c0c0; 324 | letter-spacing: 0; 325 | } 326 | 327 | @media (max-width: 48rem) { 328 | .masthead-title { 329 | text-align: center; 330 | } 331 | .masthead-title small { 332 | display: none; 333 | } 334 | } 335 | 336 | 337 | /* 338 | * Sidebar 339 | * 340 | * The sidebar is the drawer, the item we are toggling with our handy hamburger 341 | * button in the corner of the page. 342 | * 343 | * This particular sidebar implementation was inspired by Chris Coyier's 344 | * "Offcanvas Menu with CSS Target" article, and the checkbox variation from the 345 | * comments by a reader. It modifies both implementations to continue using the 346 | * checkbox (no change in URL means no polluted browser history), but this uses 347 | * `position` for the menu to avoid some potential content reflow issues. 348 | * 349 | * Source: http://css-tricks.com/off-canvas-menu-with-css-target/#comment-207504 350 | */ 351 | 352 | /* Style and "hide" the sidebar */ 353 | .sidebar { 354 | position: fixed; 355 | top: 0; 356 | bottom: 0; 357 | left: -14rem; 358 | width: 14rem; 359 | visibility: hidden; 360 | overflow-y: auto; 361 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 362 | font-size: .875rem; /* 15px */ 363 | color: rgba(255,255,255,.6); 364 | background-color: #202020; 365 | -webkit-transition: all .3s ease-in-out; 366 | transition: all .3s ease-in-out; 367 | } 368 | @media (min-width: 30rem) { 369 | .sidebar { 370 | font-size: .75rem; /* 14px */ 371 | } 372 | } 373 | 374 | /* Sidebar content */ 375 | .sidebar a { 376 | font-weight: normal; 377 | color: #fff; 378 | } 379 | .sidebar-item { 380 | padding: 1rem; 381 | } 382 | .sidebar-item p:last-child { 383 | margin-bottom: 0; 384 | } 385 | 386 | /* Sidebar nav */ 387 | .sidebar-nav { 388 | border-bottom: 1px solid rgba(255,255,255,.1); 389 | } 390 | .sidebar-nav-item { 391 | display: block; 392 | padding: .5rem 1rem; 393 | border-top: 1px solid rgba(255,255,255,.1); 394 | } 395 | .sidebar-nav-item.active, 396 | a.sidebar-nav-item:hover, 397 | a.sidebar-nav-item:focus { 398 | text-decoration: none; 399 | background-color: rgba(255,255,255,.1); 400 | border-color: transparent; 401 | } 402 | 403 | @media (min-width: 48rem) { 404 | .sidebar-item { 405 | padding: 1.5rem; 406 | } 407 | .sidebar-nav-item { 408 | padding-left: 1.5rem; 409 | padding-right: 1.5rem; 410 | } 411 | } 412 | 413 | /* Hide the sidebar checkbox that we toggle with `.sidebar-toggle` */ 414 | .sidebar-checkbox { 415 | display: none; 416 | } 417 | 418 | /* Style the `label` that we use to target the `.sidebar-checkbox` */ 419 | .sidebar-toggle { 420 | position: absolute; 421 | top: 1rem; 422 | left: 1rem; 423 | display: block; 424 | width: 2.2rem; 425 | padding: .5rem .65rem; 426 | color: #505050; 427 | background-color: #fff; 428 | border-radius: 4px; 429 | cursor: pointer; 430 | } 431 | .sidebar-toggle:before { 432 | display: block; 433 | content: ""; 434 | width: 100%; 435 | padding-bottom: .125rem; 436 | border-top: .375rem double; 437 | border-bottom: .125rem solid; 438 | 439 | /* Make the border inside the box */ 440 | -webkit-box-sizing: border-box; 441 | -moz-box-sizing: border-box; 442 | box-sizing: border-box; 443 | } 444 | 445 | .sidebar-toggle:active, 446 | #sidebar-checkbox:checked ~ .sidebar-toggle { 447 | color: #fff; 448 | background-color: #505050; 449 | } 450 | 451 | @media (min-width: 30.1rem) { 452 | .sidebar-toggle { 453 | position: fixed; 454 | width: 2.25rem; 455 | } 456 | .sidebar-toggle:before { 457 | padding-bottom: .15rem; 458 | border-top-width: .45rem; 459 | border-bottom-width: .15rem; 460 | } 461 | } 462 | 463 | 464 | /* Slide effect 465 | * 466 | * Handle the sliding effects of the sidebar and content in one spot, seperate 467 | * from the default styles. 468 | * 469 | * As an a heads up, we don't use `transform: translate3d()` here because when 470 | * mixed with `position: fixed;` for the sidebar toggle, it creates a new 471 | * containing block. Put simply, the fixed sidebar toggle behaves like 472 | * `position: absolute;` when transformed. 473 | * 474 | * Read more about it at http://meyerweb.com/eric/thoughts/2011/09/12/. 475 | */ 476 | 477 | .wrap, 478 | .sidebar, 479 | .sidebar-toggle { 480 | -webkit-backface-visibility: hidden; 481 | -ms-backface-visibility: hidden; 482 | backface-visibility: hidden; 483 | } 484 | .wrap, 485 | .sidebar-toggle { 486 | -webkit-transition: -webkit-transform .3s ease-in-out; 487 | transition: transform .3s ease-in-out; 488 | } 489 | 490 | #sidebar-checkbox:checked + .sidebar { 491 | visibility: visible; 492 | } 493 | #sidebar-checkbox:checked ~ .sidebar, 494 | #sidebar-checkbox:checked ~ .wrap, 495 | #sidebar-checkbox:checked ~ .sidebar-toggle { 496 | -webkit-transform: translateX(14rem); 497 | -ms-transform: translateX(14rem); 498 | transform: translateX(14rem); 499 | } 500 | --------------------------------------------------------------------------------