├── .gitignore ├── 404.html ├── Gemfile ├── Gemfile.lock ├── README.md ├── _config.yml ├── _includes ├── Backlinks.html ├── Comments.html ├── Content.html ├── ContextMenu.html ├── EmbedYT.html ├── Feed.html ├── Footer.html ├── Header.html └── Related.html ├── _layouts ├── Post.html └── Stylesheet.html ├── _posts ├── 2020-01-01-test.md ├── 2020-02-01-usage.md ├── 2020-03-01-customizable.md ├── 2020-03-01-setup.md ├── 2020-04-01-explore.md ├── 2020-04-01-lorem.md └── 2020-05-01-intro.md ├── about.md ├── assets ├── css │ ├── Style.css │ ├── Util.css │ ├── highlight.css │ └── vendor │ │ ├── Katex.css │ │ └── fonts │ │ ├── KaTeX_AMS-Regular.ttf │ │ ├── KaTeX_AMS-Regular.woff │ │ ├── KaTeX_AMS-Regular.woff2 │ │ ├── KaTeX_Caligraphic-Bold.ttf │ │ ├── KaTeX_Caligraphic-Bold.woff │ │ ├── KaTeX_Caligraphic-Bold.woff2 │ │ ├── KaTeX_Caligraphic-Regular.ttf │ │ ├── KaTeX_Caligraphic-Regular.woff │ │ ├── KaTeX_Caligraphic-Regular.woff2 │ │ ├── KaTeX_Fraktur-Bold.ttf │ │ ├── KaTeX_Fraktur-Bold.woff │ │ ├── KaTeX_Fraktur-Bold.woff2 │ │ ├── KaTeX_Fraktur-Regular.ttf │ │ ├── KaTeX_Fraktur-Regular.woff │ │ ├── KaTeX_Fraktur-Regular.woff2 │ │ ├── KaTeX_Main-Bold.ttf │ │ ├── KaTeX_Main-Bold.woff │ │ ├── KaTeX_Main-Bold.woff2 │ │ ├── KaTeX_Main-BoldItalic.ttf │ │ ├── KaTeX_Main-BoldItalic.woff │ │ ├── KaTeX_Main-BoldItalic.woff2 │ │ ├── KaTeX_Main-Italic.ttf │ │ ├── KaTeX_Main-Italic.woff │ │ ├── KaTeX_Main-Italic.woff2 │ │ ├── KaTeX_Main-Regular.ttf │ │ ├── KaTeX_Main-Regular.woff │ │ ├── KaTeX_Main-Regular.woff2 │ │ ├── KaTeX_Math-BoldItalic.ttf │ │ ├── KaTeX_Math-BoldItalic.woff │ │ ├── KaTeX_Math-BoldItalic.woff2 │ │ ├── KaTeX_Math-Italic.ttf │ │ ├── KaTeX_Math-Italic.woff │ │ ├── KaTeX_Math-Italic.woff2 │ │ ├── KaTeX_SansSerif-Bold.ttf │ │ ├── KaTeX_SansSerif-Bold.woff │ │ ├── KaTeX_SansSerif-Bold.woff2 │ │ ├── KaTeX_SansSerif-Italic.ttf │ │ ├── KaTeX_SansSerif-Italic.woff │ │ ├── KaTeX_SansSerif-Italic.woff2 │ │ ├── KaTeX_SansSerif-Regular.ttf │ │ ├── KaTeX_SansSerif-Regular.woff │ │ ├── KaTeX_SansSerif-Regular.woff2 │ │ ├── KaTeX_Script-Regular.ttf │ │ ├── KaTeX_Script-Regular.woff │ │ ├── KaTeX_Script-Regular.woff2 │ │ ├── KaTeX_Size1-Regular.ttf │ │ ├── KaTeX_Size1-Regular.woff │ │ ├── KaTeX_Size1-Regular.woff2 │ │ ├── KaTeX_Size2-Regular.ttf │ │ ├── KaTeX_Size2-Regular.woff │ │ ├── KaTeX_Size2-Regular.woff2 │ │ ├── KaTeX_Size3-Regular.ttf │ │ ├── KaTeX_Size3-Regular.woff │ │ ├── KaTeX_Size3-Regular.woff2 │ │ ├── KaTeX_Size4-Regular.ttf │ │ ├── KaTeX_Size4-Regular.woff │ │ ├── KaTeX_Size4-Regular.woff2 │ │ ├── KaTeX_Typewriter-Regular.ttf │ │ ├── KaTeX_Typewriter-Regular.woff │ │ └── KaTeX_Typewriter-Regular.woff2 ├── img │ ├── backlinks.png │ ├── context_menu.png │ ├── context_menu_backlinks.png │ ├── end_result.png │ ├── favicon.png │ ├── feed.png │ ├── firstdesign.jpg │ ├── fork_button.jpg │ ├── highlighting.JPG │ ├── logo.png │ ├── ongoing.png │ ├── pagepreview.png │ ├── profile.png │ ├── profile_board.png │ ├── search.png │ ├── search_with_preview.png │ ├── site_without_profile.png │ └── transclusion.JPG └── js │ ├── ContextMenu.js │ ├── Search.js │ ├── SearchData.json │ └── vendor │ └── lunr.min.js ├── autocomplete.txt ├── blog.code-workspace ├── dates.md ├── debug.yml ├── index.md ├── netlify.toml ├── notes.md ├── tags.md └── utilities ├── Autocomplete.ts └── NotionToJekyll.py /.gitignore: -------------------------------------------------------------------------------- 1 | _site/ 2 | .sass-cache/ 3 | .jekyll-cache/ 4 | .jekyll-metadata/ 5 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /404.html 3 | layout: Post 4 | content-type: eg 5 | --- 6 | 7 | 8 |

404 Page Not Found

9 | 10 |

Now that you are here, you can either click here to go home or explore the writings of some of these other writers I enjoy:

11 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | # Hello! This is where you manage which Jekyll version is used to run. 3 | # When you want to use a different version, change it below, save the 4 | # file and run `bundle install`. Run Jekyll with `bundle exec`, like so: 5 | # 6 | # bundle exec jekyll serve 7 | # 8 | # This will help ensure the proper Jekyll version is running. 9 | # Happy Jekylling! 10 | gem "jekyll", "~> 4.0.0" 11 | # This is the default theme for new Jekyll sites. You may change this to anything you like. 12 | # gem "minima", "~> 2.5" 13 | # If you want to use GitHub Pages, remove the "gem "jekyll"" above and 14 | # uncomment the line below. To upgrade, run `bundle update github-pages`. 15 | # gem "github-pages", group: :jekyll_plugins 16 | # If you have any plugins, put them here! 17 | group :jekyll_plugins do 18 | gem "jekyll-feed", "~> 0.12" 19 | gem "jekyll-tidy" 20 | end 21 | 22 | # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem 23 | # and associated library. 24 | install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do 25 | gem "tzinfo", "~> 1.2" 26 | gem "tzinfo-data" 27 | end 28 | 29 | # Performance-booster for watching directories on Windows 30 | gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform? 31 | 32 | gem 'jekyll-sitemap' 33 | gem 'kramdown-math-katex' 34 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | addressable (2.8.0) 5 | public_suffix (>= 2.0.2, < 5.0) 6 | colorator (1.1.0) 7 | concurrent-ruby (1.1.9) 8 | em-websocket (0.5.2) 9 | eventmachine (>= 0.12.9) 10 | http_parser.rb (~> 0.6.0) 11 | eventmachine (1.2.7) 12 | eventmachine (1.2.7-x64-mingw32) 13 | execjs (2.8.1) 14 | ffi (1.15.1) 15 | ffi (1.15.1-x64-mingw32) 16 | forwardable-extended (2.6.0) 17 | htmlbeautifier (1.3.1) 18 | htmlcompressor (0.4.0) 19 | http_parser.rb (0.6.0) 20 | i18n (1.8.10) 21 | concurrent-ruby (~> 1.0) 22 | jekyll (4.0.1) 23 | addressable (~> 2.4) 24 | colorator (~> 1.0) 25 | em-websocket (~> 0.5) 26 | i18n (>= 0.9.5, < 2) 27 | jekyll-sass-converter (~> 2.0) 28 | jekyll-watch (~> 2.0) 29 | kramdown (~> 2.1) 30 | kramdown-parser-gfm (~> 1.0) 31 | liquid (~> 4.0) 32 | mercenary (~> 0.3.3) 33 | pathutil (~> 0.9) 34 | rouge (~> 3.0) 35 | safe_yaml (~> 1.0) 36 | terminal-table (~> 1.8) 37 | jekyll-feed (0.15.1) 38 | jekyll (>= 3.7, < 5.0) 39 | jekyll-sass-converter (2.1.0) 40 | sassc (> 2.0.1, < 3.0) 41 | jekyll-sitemap (1.4.0) 42 | jekyll (>= 3.7, < 5.0) 43 | jekyll-tidy (0.2.2) 44 | htmlbeautifier 45 | htmlcompressor 46 | jekyll 47 | jekyll-watch (2.2.1) 48 | listen (~> 3.0) 49 | katex (0.8.0) 50 | execjs (~> 2.7) 51 | kramdown (2.3.1) 52 | rexml 53 | kramdown-math-katex (1.0.1) 54 | katex (~> 0.4) 55 | kramdown (~> 2.0) 56 | kramdown-parser-gfm (1.1.0) 57 | kramdown (~> 2.0) 58 | liquid (4.0.3) 59 | listen (3.5.1) 60 | rb-fsevent (~> 0.10, >= 0.10.3) 61 | rb-inotify (~> 0.9, >= 0.9.10) 62 | mercenary (0.3.6) 63 | pathutil (0.16.2) 64 | forwardable-extended (~> 2.6) 65 | public_suffix (4.0.6) 66 | rb-fsevent (0.11.0) 67 | rb-inotify (0.10.1) 68 | ffi (~> 1.0) 69 | rexml (3.2.5) 70 | rouge (3.26.0) 71 | safe_yaml (1.0.5) 72 | sassc (2.4.0) 73 | ffi (~> 1.9) 74 | sassc (2.4.0-x64-mingw32) 75 | ffi (~> 1.9) 76 | terminal-table (1.8.0) 77 | unicode-display_width (~> 1.1, >= 1.1.1) 78 | thread_safe (0.3.6) 79 | tzinfo (1.2.9) 80 | thread_safe (~> 0.1) 81 | tzinfo-data (1.2021.1) 82 | tzinfo (>= 1.0.0) 83 | unicode-display_width (1.7.0) 84 | wdm (0.1.1) 85 | 86 | PLATFORMS 87 | ruby 88 | x64-mingw32 89 | x86_64-linux 90 | 91 | DEPENDENCIES 92 | jekyll (~> 4.0.0) 93 | jekyll-feed (~> 0.12) 94 | jekyll-sitemap 95 | jekyll-tidy 96 | kramdown-math-katex 97 | tzinfo (~> 1.2) 98 | tzinfo-data 99 | wdm (~> 0.1.1) 100 | 101 | BUNDLED WITH 102 | 2.1.4 103 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Jekyll Themes Shield 4 | 5 |

6 |

7 | 8 | 9 | 10 |

11 | 12 |

Simply Jekyll is a simple yet highly functional jekyll-based theme that combines the best of different worlds. It is a minimal and distraction free theme that strives to provide maximum value all without holding back on any essential features that a user would benefit from or would desire for. This is an evolving project and is garanteed to be maintained at least for quite some time as I myself am a beneficiary of this theme and the project.



13 |

See it in action!

14 | 15 |

16 | 17 | ## Feature Overview 18 | 19 | [View the documentation(f)](https://simply-jekyll.netlify.app/posts/explore) for feature information. 20 | 21 | - Based on Jekyll, a static website generator 22 | - Creates backlinks to other notes automatically 23 | - Context menu on feed to instantly see related posts and backlinks 24 | - Search with context integrated within the blog feed 25 | - Supports wiki-style/roam-style double bracket link syntax to other notes 26 | - On hover page previews 27 | - Features a simple and responsive design 28 | - Supports Markdown or HTML notes 29 | 30 | 31 | ## Installation 32 | 33 | [View the documentation(i)](https://simply-jekyll.netlify.app/posts/setup) for setup and installation information. 34 | 35 | Hopefully there will be an easier process soon. 36 | 37 | ## Usage 38 | 39 | [View the documentation(u)](https://simply-jekyll.netlify.app/posts/usage) for usage information. 40 | 41 | ## Contributing 42 | 43 | Bug reports and pull requests are welcome on GitHub at https://github.com/rgvr/simply-jekyll. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. 44 | 45 | ### Submitting code changes: 46 | 47 | - Open a [Pull Request](https://github.com/rgvr/simply-jekyll/pulls) 48 | - Ensure all CI tests pass 49 | - Await code review 50 | 51 | ### Design and development principles of this theme: 52 | 53 | 1. As few dependencies as possible 54 | 2. No build script needed 55 | 3. First class mobile experience 56 | 4. Make the content shine 57 | 58 | ## Development 59 | 60 | To set up your environment to develop this theme, run `bundle install`. 61 | 62 | Your theme is set up just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal. 63 | 64 | When the theme is released, only the files in `_layouts`, `_includes`, and `assets` tracked with Git will be released. 65 | 66 | ## License 67 | 68 | The theme is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). 69 | 70 | 71 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Jekyll! 2 | # 3 | # This config file is meant for settings that affect your whole blog, values 4 | # which you are expected to set up once and rarely edit after that. If you find 5 | # yourself editing this file very often, consider using Jekyll's data files 6 | # feature for the data you need to update frequently. 7 | # 8 | # For technical reasons, this file is *NOT* reloaded automatically when you use 9 | # 'bundle exec jekyll serve'. If you change this file, please restart the server process. 10 | # 11 | # If you need help with YAML syntax, here are some quick references for you: 12 | # https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml 13 | # https://learnxinyminutes.com/docs/yaml/ 14 | # 15 | # Site settings 16 | # These are used to personalize your new site. If you look in the HTML files, 17 | # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. 18 | # You can create any custom variable you would like, and they will be accessible 19 | # in the templates via {{ site.myvariable }}. 20 | 21 | 22 | baseurl: "/" # the subpath of your site, e.g. /blog 23 | url: "https://simply-jekyll.netlify.app/" # the base hostname & protocol for your site, e.g. http://example.com 24 | 25 | ####################################################################### 26 | # Settings related to the Header and your About page go here,such as 27 | # your name, site name, profile pic, site tagline, your bio, 28 | # your social media links etc 29 | ####################################################################### 30 | 31 | heading: Simply Jekyll 32 | subheading: # subheading won't work without a tagline, 33 | # tagline is mandatory if you want the 34 | # suheading to appear. The reason is 35 | # having a heading and a subheading looks 36 | # ridiculous. 37 | enabled: true 38 | name: Notes and Thoughts 39 | tagline: # subheading won't work without a tagline, 40 | # tagline is mandatory if you want the 41 | # suheading to appear. The reason is 42 | # having a heading and a subheading looks 43 | # ridiculous. 44 | # Although you can have the tagline without 45 | # the subheading to support the main heading 46 | # which in this case is 'Knowledge Continuum' 47 | enabled: true 48 | name: An experiment to spark conversations 49 | copyright: 50 | year: 2020 51 | msg: Raghuveer S # This is a mandatory attribute for copyright to be displayed 52 | 53 | user: 54 | display: true # setting it to false will remove the header image and bio 55 | # Note that user settings come wholesale, it does not have the 56 | # granular enabling or disabling as with the 'preferences' 57 | # or the site-wide settings. 58 | name: Raghuveer S 59 | bio: Programmer ∪ Writer. Interested in constraints and correspondences. 60 | email: raghu-veer@outlook.com 61 | photo: /assets/img/profile.png 62 | alt_link: rgvr.me 63 | social: # just leave the field blank or type in null, if you don't have a 64 | # particular social media account and it won't appear 65 | enabled: false # turn this to true 66 | twitter: rgvrme 67 | github: rgvr 68 | youtube: rgvr 69 | linkedin: rgvr 70 | twitch: null 71 | facebook: null 72 | instagram: null 73 | 74 | 75 | 76 | ##################################################################### 77 | # Settings related to your preferences go here, such as the 78 | # search results, wiki-style-links, sidenotes, marginnotes, 79 | # transclusion, pagepreview, backlinks, related posts, highlighting, 80 | # context menu, flashcards, sliding window, wrapping 81 | ##################################################################### 82 | preferences: 83 | search: 84 | enabled: true 85 | shortcut_hint: 86 | enabled: true 87 | wiki_style_link: # This property handles wiki style links '[[' 88 | enabled: true 89 | sidenotes: 90 | enabled: true 91 | transclusion: 92 | enabled: true 93 | image: 94 | enabled: true 95 | pagepreview: 96 | enabled: true 97 | highlighting: 98 | enabled: true 99 | color: DAEDFF # Takes hexadecimal and basic names like white, red, etc. 100 | # Do not add '#'(the pound symbol) before the hexadecimal number. 101 | # In yml, it is considered as a comment 102 | backlinks: 103 | enabled: true 104 | related: 105 | enabled: true # This enables the posts that are related to each other by tags 106 | wrapping: 107 | enabled: true 108 | contextmenu: 109 | enabled: true 110 | copylink: 111 | enabled: true 112 | newtab: 113 | enabled: true 114 | backlinks: 115 | enabled: true 116 | related: 117 | enabled: true 118 | flashcards: 119 | enabled: true 120 | 121 | encoding: utf-8 122 | 123 | # Build settings 124 | theme: null 125 | plugins: 126 | - jekyll-feed 127 | - jekyll-sitemap 128 | - jekyll-tidy 129 | 130 | # Disqus Comments 131 | disqus: 132 | # Leave shortname blank to disable comments site-wide. 133 | # Disable comments for any post by adding `comments: false` to that post's YAML Front Matter. 134 | shortname: rgvr 135 | 136 | markdown: kramdown 137 | 138 | kramdown: 139 | input: GFM 140 | hard_wrap: false 141 | math_engine: katex 142 | smart_quotes: ["apos", "apos", "quot", "quot"] 143 | syntax_highlighter: rouge 144 | 145 | sass: 146 | style: compressed 147 | 148 | defaults: 149 | - scope: 150 | path: "" 151 | type: posts 152 | values: 153 | layout: Post 154 | permalink: /posts/:title 155 | content-type: post 156 | 157 | 158 | # Exclude from processing. 159 | # The following items will not be processed, by default. 160 | # Any item listed under the `exclude:` key here will be automatically added to 161 | # the internal "default list". 162 | # 163 | # Excluded items can be processed by explicitly listing the directories or 164 | # their entries' file path in the `include:` list. 165 | # 166 | # exclude: 167 | # - .sass-cache/ 168 | # - .jekyll-cache/ 169 | # - gemfiles/ 170 | # - Gemfile 171 | # - Gemfile.lock 172 | # - node_modules/ 173 | # - vendor/bundle/ 174 | # - vendor/cache/ 175 | # - vendor/gems/ 176 | # - vendor/ruby/ 177 | -------------------------------------------------------------------------------- /_includes/Backlinks.html: -------------------------------------------------------------------------------- 1 | {%- comment -%} 2 | * 3 | * MIT License 4 | * Copyright (c) 2020 Raghuveer S 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | * 24 | * File: Backlinks.html 25 | * Author@Raghuveer S 26 | * 27 | * This file contains the markup for the links that refer back to this file. 28 | * You can find the final thing at the end of every post inside a small greyish box 29 | * 30 | {%- endcomment -%} 31 | 32 | 33 | {%- assign link_count = 0 -%} 34 | {%- assign wiki_link_title = '[' | append: page.title | append: ']' -%} 35 | {%- for note in site.posts -%} 36 | {%- if note.url != page.url -%} 37 | {%- if note.content contains wiki_link_title -%} 38 | {%- assign link_count = link_count | plus:1 -%} 39 | {%- endif -%} 40 | {%- endif -%} 41 | {%- endfor -%} 42 | {%- for note in site.pages -%} 43 | {%- if note.url != page.url -%} 44 | {%- if note.content contains wiki_link_title -%} 45 | {%- assign link_count = link_count | plus:1 -%} 46 | {%- endif -%} 47 | {%- endif -%} 48 | {%- endfor -%} 49 | {%- if link_count > 0 -%} 50 | {%- assign wiki_link_title = '[' | append: page.title | append: ']' -%} 51 | {%- assign display_class = 'hide' -%} 52 | {%- if site.preferences.backlinks.enabled -%} 53 | {%- assign display_class = 'show' -%} 54 | {%- endif -%} 55 | 81 | {%- endif -%} 82 | -------------------------------------------------------------------------------- /_includes/Comments.html: -------------------------------------------------------------------------------- 1 | {%- comment -%} 2 | * 3 | * MIT License 4 | * Copyright (c) 2020 Raghuveer S 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | * 24 | * File: Comments.html 25 | * Author@Raghuveer S 26 | * 27 | * This file contains the markup for the commenting system, which is basically just 28 | * a snippet provided by disqus itself. You can find it directly on disqus site. 29 | * 30 | {%- endcomment -%} 31 | 32 | {%- if page.comments -%} 33 | 34 |
35 | 51 | 52 | {%- endif -%} 53 | -------------------------------------------------------------------------------- /_includes/Content.html: -------------------------------------------------------------------------------- 1 | 2 | {%- if page.content-type == "post" -%} 3 | 17 | {%- endif -%} 18 |
19 | {%- if site.preferences.wiki_style_link.enabled -%} 20 | {%- assign content_array = content | split:'[[' -%} 21 | {%- assign external_link_delimiter = '::' -%} 22 | 23 | {%- assign link_joiner_delimiter = '$@' -%} 24 | {%- for item in content_array -%} 25 | {%- if forloop.index > 1 -%} 26 | {%- assign itemparts = item | split:']]' -%} 27 | {%- assign internal_link = itemparts[0] -%} 28 | {%- assign external_link = itemparts[0] | split:external_link_delimiter -%} 29 | {%- assign sidenote = itemparts[0] | split:sidenote_delimiter -%} 30 | 31 | {%- if external_link[1] == nil -%} 32 | {%- assign result_posts = site.posts | where: 'title',itemparts[0] -%} 33 | {%- assign result_pages = site.pages | where: 'title',itemparts[0] -%} 34 | {%- assign internal_links = internal_links | append: link_joiner_delimiter | append: internal_link -%} 35 | {%- assign internal_urls = internal_urls | append: link_joiner_delimiter | append: result_posts[0].url | append: result_pages[0].url -%} 36 | {%- else -%} 37 | {%- assign external_links = external_links | append: link_joiner_delimiter | append: external_link[0] -%} 38 | {%- assign external_urls = external_urls | append: link_joiner_delimiter | append: external_link[1] -%} 39 | {%- endif -%} 40 | {%- endif -%} 41 | {%- endfor -%} 42 | 43 | {%- assign internal_url_array = internal_urls | split:link_joiner_delimiter -%} 44 | {%- assign internal_link_array = internal_links | split:link_joiner_delimiter -%} 45 | 46 | {%- assign external_url_array = external_urls | split:link_joiner_delimiter -%} 47 | {%- assign external_link_array = external_links | split:link_joiner_delimiter -%} 48 | 49 | 50 | {%- assign replaced_content = content -%} 51 | {%- for title in internal_link_array -%} 52 | {%- assign url = internal_url_array[forloop.index0] -%} 53 | {%- if url == nil -%} 54 | {%- assign link_text = '' | append: title | append: '' -%} 55 | {%- elsif url == empty -%} 56 | {%- assign link_text = '' | append: title | append: '' -%} 57 | {%- else -%} 58 | {%- assign post = site.posts | where: 'title',title -%} 59 | {%- assign excerpt = post[0].content | markdownify | strip_html | truncate: 200 | newline_to_br -%} 60 | {%- if site.preferences.pagepreview.enabled -%} 61 | {%- assign link_text = '' | append: title | append: '' | append: title | append: '
' | append: excerpt | append: '
' -%} 62 | {%- else -%} 63 | {%- assign link_text = '' | append: title | append: '' -%} 64 | {%- endif -%} 65 | {%- endif -%} 66 | {%- assign bracket_link = '[[' | append: title | append: ']]' -%} 67 | {%- assign replaced_content = replaced_content | replace: bracket_link,link_text -%} 68 | {%- endfor -%} 69 | 70 | {%- assign sideNoteCounter = 0 -%} 71 | {%- assign srsCounter = 0 -%} 72 | {%- for title in external_link_array -%} 73 | {%- assign url = external_url_array[forloop.index0] -%} 74 | {%- if url == "highlight" -%} 75 | {%- if site.preferences.highlighting.enabled -%} 76 | {%- assign color = '#DAEDFF' -%} 77 | {%- if site.preferences.highlighting.color != nil and site.preferences.highlighting.color != empty and 78 | site.preferences.highlighting.color != null -%} 79 | {%- assign color = '#' | append: site.preferences.highlighting.color -%} 80 | {%- endif -%} 81 | {%- assign link_text = '' | append: title | append: '' -%} 82 | {%- endif -%} 83 | {%- elsif url == "wrap" -%} 84 | {%- if site.preferences.wrapping.enabled -%} 85 | {%- assign link_text = '

' | append: title | append: '

' -%} 86 | {%- endif -%} 87 | {%- elsif url == "img" -%} 88 | {%- if site.preferences.wrapping.enabled -%} 89 | {%- assign link_text = '' -%} 90 | {%- endif -%} 91 | {%- elsif url == "lsn" or url == "rsn" or url == "lsn-transclude" or url == "rsn-transclude" or url == "lmn" or url == "rmn" or url == "lmn-transclude" or url == "rmn-transclude" -%} 92 | {%- assign toggleLabel = "" -%} 93 | {%- assign sideNoteNum = "" -%} 94 | {%- if url contains "lsn" -%} 95 | {%- assign noteType = "sn-left" -%} 96 | {%- assign sideNoteNum = "sidenote-number" -%} 97 | {%- elsif url contains "rsn" -%} 98 | {%- assign noteType = "sn-right" -%} 99 | {%- assign sideNoteNum = "sidenote-number" -%} 100 | {%- elsif url contains "lmn" -%} 101 | {%- assign noteType = "mn-left" -%} 102 | {%- assign toggleLabel = "⊕" -%} 103 | {%- elsif url contains "rmn" -%} 104 | {%- assign noteType = "mn-right" -%} 105 | {%- assign toggleLabel = "⊕" -%} 106 | {%- endif -%} 107 | 108 | 109 | {%- if url contains "transclude" -%} 110 | {%- if site.preferences.sidenotes.enabled -%} 111 | {%- assign post = site.posts | where: 'title',title -%} 112 | {%- assign excerpt = post[0].content | strip_html | truncate: 280 -%} 113 | {%- assign link_text = ' Transclusion
' | append: title | append: '
' | append: excerpt | append: '
' -%} 114 | {%- endif -%} 115 | {%- else -%} 116 | {%- if site.preferences.sidenotes.enabled -%} 117 | {%- assign link_text = '' | append: title | append: '' -%} 118 | {%- endif -%} 119 | {%- endif -%} 120 | 121 | {%- assign sideNoteCounter = sideNoteCounter | plus:1 -%} 122 | {%- elsif url == "srs" -%} 123 | {%- if site.preferences.flashcards.enabled -%} 124 | {%- assign link_text = 'Flashcard
' | append: title | append: '
' -%} 125 | {%- assign srsCounter = srsCounter | plus:1 -%} 126 | {%- endif -%} 127 | {%- else -%} 128 | {%- assign link_text = '' | append: title | append: '' -%} 129 | {%- endif -%} 130 | {%- assign bracket_link = '[[' | append: title | append: external_link_delimiter | append: url | append: ']]' -%} 131 | {%- assign replaced_content = replaced_content | replace: bracket_link,link_text -%} 132 | {%- endfor -%} 133 | 134 | {{ replaced_content }} 135 | {%- else -%} 136 | {{content}} 137 | {%- endif -%} 138 |
139 | -------------------------------------------------------------------------------- /_includes/ContextMenu.html: -------------------------------------------------------------------------------- 1 | {%- comment -%} 2 | * 3 | * MIT License 4 | * Copyright (c) 2020 Raghuveer S 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | * 24 | * File: ContextMenu.html 25 | * Author@Raghuveer S 26 | * 27 | * This file contains the markup for the context menu thingy you see when you right 28 | * click on the post titles on the home page. 29 | * 30 | {%- endcomment -%} 31 | 32 | {%- if page.permalink == "/" -%} 33 | {%- if site.preferences.contextmenu.enabled -%} 34 | 66 | 68 | 69 | {%- endif -%} 70 | {%- endif -%} 71 | -------------------------------------------------------------------------------- /_includes/EmbedYT.html: -------------------------------------------------------------------------------- 1 | {%- comment -%} 2 | * 3 | * MIT License 4 | * Copyright (c) 2020 Raghuveer S 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | * 24 | * File: EmbedYT.html 25 | * Author@Raghuveer S 26 | * 27 | * This file contains the markup for being able to embed yt videos on your blogpost. 28 | * 29 | {%- endcomment -%} 30 | 31 |
32 | 39 |
-------------------------------------------------------------------------------- /_includes/Feed.html: -------------------------------------------------------------------------------- 1 | {%- comment -%} 2 | * 3 | * MIT License 4 | * Copyright (c) 2020 Raghuveer S 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | * 24 | * File: Feed.html 25 | * Author@Raghuveer S 26 | * 27 | * This file contains the markup for the list of posts you see on the home page. 28 | * It is named feed.html because the structuring of the titles on the home page 29 | * looks like a social media feed. 30 | * 31 | * 32 | {%- endcomment -%} 33 | 34 | {%- if page.permalink == "/" -%} 35 | {%- for item in site.posts -%} 36 |
37 | 38 | {%- if item.status == "Ongoing" or item.status == "ongoing" -%} 39 | 42 |

{{ item.title }}

43 | {%- else -%} 44 |

{{ item.title }}

45 | {%- endif -%} 46 |

{{ item.content | strip_html | strip | escape | truncate: 200}}

47 |
48 |
49 | {%- endfor -%} 50 | {%- endif -%} 51 | -------------------------------------------------------------------------------- /_includes/Footer.html: -------------------------------------------------------------------------------- 1 | {%- comment -%} 2 | * 3 | * MIT License 4 | * Copyright (c) 2020 Raghuveer S 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | * 24 | * File: Footer.html 25 | * Author@Raghuveer S 26 | * 27 | * This file contains the markup for the copyright notice. 28 | * 29 | {%- endcomment -%} 30 | 31 | {%- if site.copyright.msg != nil and site.copyright.msg != empty and site.copyright.msg != null -%} 32 | 35 | {%- endif -%} 36 | -------------------------------------------------------------------------------- /_includes/Header.html: -------------------------------------------------------------------------------- 1 | {%- comment -%} 2 | * 3 | * MIT License 4 | * Copyright (c) 2020 Raghuveer S 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | * 24 | * File: Header.html 25 | * Author@Raghuveer S 26 | * 27 | * This file contains the markup for the site heading, subheading, user description, 28 | * user avatar, searchbar, site tagline. 29 | * 30 | {%- endcomment -%} 31 | 32 |
33 |
34 | {%- assign header_direction = 'site-heading-rtl' -%} 35 | {%- assign userboard_display = 'show' -%} 36 | {%- assign main_heading_size = 'medium-small' -%} 37 | {%- assign main_heading_margin = 'margin-top-0' -%} 38 | {%- assign userboard_margin = 'margin-top-0' -%} 39 | {%- assign avatar_margin = 'margin-top-0' -%} 40 | {%- assign menu_margin = 'margin-top-0' -%} 41 | 42 | {%- if site.tagline.enabled -%} 43 | {%- if site.subheading.enabled != true -%} 44 | {%- assign main_heading_size = 'medium' -%} 45 | {%- assign main_heading_margin = 'margin-top-30' -%} 46 | {%- endif -%} 47 | {%- else -%} 48 | {%- assign main_heading_size = 'medium' -%} 49 | {%- assign main_heading_margin = 'margin-top-30' -%} 50 | {%- assign userboard_margin = 'margin-top-10-neg' -%} 51 | {%- assign avatar_margin = 'margin-top-10-neg' -%} 52 | {%- assign menu_margin = 'margin-top-10-neg' -%} 53 | {%- endif -%} 54 | 55 | {%- if site.user.display != true -%} 56 | {%- assign header_direction = 'site-heading-ltr' -%} 57 | {%- endif -%} 58 | {%- if page.content-type == "post" -%} 59 | {%- assign header_direction = 'site-heading-ltr' -%} 60 | {%- assign userboard_display = 'hide' -%} 61 | {%- endif -%} 62 | 63 |
64 |

{{site.heading}}

65 | {%- if site.tagline.enabled -%} 66 | {%- if site.subheading.enabled -%} 67 |

{{site.subheading.name}}

68 | {%- endif -%} 69 |

{{site.tagline.name}}

70 | {%- endif -%} 71 |
72 | {%- if site.user.display and userboard_display == 'show' -%} 73 |
74 |
75 |

{{site.user.name}}

76 |
77 |
78 |

{{site.user.bio}}

79 | {%- if site.user.alt_link != nil and site.user.alt_link != empty and site.user.alt_link != null -%} 80 | 91 | {%- endif -%} 92 | {%- if site.user.social.enabled -%} 93 | 164 | {%- endif -%} 165 |
166 |
167 | {%- endif -%} 168 |
169 | {%- if site.user.display and userboard_display == 'show' -%} 170 |
171 | 172 | avatar 173 | 174 |
175 | {%- endif -%} 176 | 212 | {%- if site.preferences.search.enabled -%} 213 | 228 | 229 | 230 | {%- endif -%} 231 | {%- if page.permalink != "/" -%} 232 |
233 |
234 | 235 | 236 | 237 | 238 |
239 |

Home

240 |
241 | {%- endif -%} 242 |
243 | 244 | -------------------------------------------------------------------------------- /_includes/Related.html: -------------------------------------------------------------------------------- 1 | {%- comment -%} 2 | * 3 | * MIT License 4 | * Copyright (c) 2020 Raghuveer S 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | * 24 | * File: Related.html 25 | * Author@Raghuveer S 26 | * 27 | * This file contains the markup for the small greyish box that you see at the end 28 | * of all blogposts. It contains the markup to create a small of all the posts 29 | * that are related by tag. The limit I think is restricted to 10. 30 | * 31 | {%- endcomment -%} 32 | 33 | {%- if page.content-type == "post" -%} 34 | {%- assign sameTagCount = 0 -%} 35 | {%- assign minCommonTags = 1 -%} 36 | {%- for post in site.posts -%} 37 | {%- for tag in post.tags -%} 38 | {%- if post.url != page.url -%} 39 | {%- if page.tags contains tag -%} 40 | {%- unless post.content contains page.title -%} 41 | {%- assign sameTagCount = sameTagCount | plus: 1 -%} 42 | {%- endunless -%} 43 | {%- endif -%} 44 | {%- endif -%} 45 | {%- endfor -%} 46 | {%- endfor -%} 47 | 48 | {%- if sameTagCount >= minCommonTags-%} 49 | {%- assign display_class = 'hide' -%} 50 | {%- if site.preferences.related.enabled -%} 51 | {%- assign display_class = 'show' -%} 52 | {%- endif -%} 53 | 87 | {%- endif -%} 88 | {%- endif -%} 89 | -------------------------------------------------------------------------------- /_layouts/Post.html: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | {%- if page.title -%} 38 | 39 | 40 | 41 | {%- else -%} 42 | 43 | 44 | {%- endif -%} 45 | 46 | {{site.heading}} 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 57 | 58 | 59 | 60 | 61 | 62 |
63 |
64 | {%- include Header.html -%} 65 | {%- include Feed.html -%} 66 | 67 | {%- if page.content-type == "notes" 68 | or page.content-type == "post" -%} 69 |
70 |

{{page.title}}

71 | {%- include Content.html -%} 72 | {%- include Backlinks.html -%} 73 | {%- include Related.html -%} 74 |
75 | {%- endif -%} 76 | {%- if page.content-type == "eg" -%} 77 |
78 |

{{page.title}}

79 | {%- include Content.html -%} 80 |
81 | {%- endif -%} 82 | {%- include Comments.html -%} 83 | {%- include Footer.html -%} 84 |
85 |
86 | 87 | {%- include ContextMenu.html -%} 88 | 89 | 90 | -------------------------------------------------------------------------------- /_layouts/Stylesheet.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: none 3 | --- 4 | {{ content | scssify }} 5 | -------------------------------------------------------------------------------- /_posts/2020-01-01-test.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Test page to see how the raw markdown is rendered 3 | tags: Markdown 4 | comments: true 5 | --- 6 | 7 | This is intended as a quick reference and showcase. 8 | 9 | * TOC 10 | {:toc} 11 | 12 | 13 | {:#heading} 14 | ### Headings 15 | --- 16 | 17 | {:.regular-sans} 18 | ``` 19 | # H1 20 | ## H2 21 | ### H3 22 | #### H4 23 | ##### H5 24 | ###### H6 25 | ``` 26 | 27 | # H1 28 | ## H2 29 | ### H3 30 | #### H4 31 | ##### H5 32 | ###### H6 33 | 34 | {:#emphasis} 35 | ### Emphasis 36 | --- 37 | 38 | {:.regular-sans} 39 | ``` 40 | Emphasis, aka italics, with *asterisks* or _underscores_. 41 | 42 | Strong emphasis, aka bold, with **asterisks** or __underscores__. 43 | 44 | Combined emphasis with **asterisks and _underscores_**. 45 | 46 | Strikethrough uses two tildes. ~~Scratch this.~~ 47 | ``` 48 | 49 | Emphasis, aka italics, with *asterisks* or _underscores_. 50 | 51 | Strong emphasis, aka bold, with **asterisks** or __underscores__. 52 | 53 | Combined emphasis with **asterisks and _underscores_**. 54 | 55 | Strikethrough uses two tildes. ~~Scratch this.~~ 56 | 57 | {:#lists} 58 | ### Lists 59 | 60 | {:.regular-sans} 61 | ``` 62 | 1. First ordered list item 63 | ...1. Ordered sublist 64 | 2. Another item 65 | ...* Unordered sublist 66 | 3. Actual numbers don't matter, just that it's a number 67 | 4. And another item. 68 | 69 | ⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown). 70 | 71 | ⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅ 72 | ⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅ 73 | ⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.) 74 | 75 | * Unordered list can use asterisks 76 | - Or minuses 77 | + Or pluses 78 | ``` 79 | 80 | 1. First ordered list item 81 | 1. Ordered sublist 82 | 2. Another item 83 | - Unordered sublist 84 | 3. Actual numbers don't matter, just that it's a number 85 | 4. And another item. 86 | 87 | You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown). 88 | 89 | To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅ 90 | Note that this line is separate, but within the same paragraph.⋅⋅ 91 | (This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.) 92 | 93 | * Unordered list can use asterisks 94 | - Or minuses 95 | + Or pluses 96 | 97 | {:#links} 98 | ### Links 99 | --- 100 | 101 | {:.regular-sans} 102 | ``` 103 | [I'm an inline-style link](https://www.google.com) 104 | 105 | [I'm an inline-style link with title](https://www.google.com "Google's Homepage") 106 | 107 | [I'm a reference-style link][Arbitrary case-insensitive reference text] 108 | 109 | [I'm a relative reference to a repository file](../blob/master/LICENSE) 110 | 111 | [You can use numbers for reference-style link definitions][1] 112 | 113 | Or leave it empty and use the [link text itself]. 114 | 115 | URLs and URLs in angle brackets will automatically get turned into links. 116 | http://www.example.com or and sometimes 117 | example.com (but not on Github, for example). 118 | 119 | Some text to show that the reference links can follow later. 120 | 121 | [arbitrary case-insensitive reference text]: https://www.mozilla.org 122 | [1]: http://slashdot.org 123 | [link text itself]: http://www.reddit.com 124 | ``` 125 | 126 | [I'm an inline-style link](https://www.google.com) 127 | 128 | [I'm an inline-style link with title](https://www.google.com "Google's Homepage") 129 | 130 | [I'm a reference-style link][Arbitrary case-insensitive reference text] 131 | 132 | [I'm a relative reference to a repository file](../blob/master/LICENSE) 133 | 134 | [You can use numbers for reference-style link definitions][1] 135 | 136 | Or leave it empty and use the [link text itself]. 137 | 138 | URLs and URLs in angle brackets will automatically get turned into links. 139 | http://www.example.com or and sometimes 140 | example.com (but not on Github, for example). 141 | 142 | Some text to show that the reference links can follow later. 143 | 144 | [arbitrary case-insensitive reference text]: https://www.mozilla.org 145 | [1]: http://slashdot.org 146 | [link text itself]: http://www.reddit.com 147 | 148 | {:#images} 149 | ### Images 150 | --- 151 | 152 | {:.regular-sans} 153 | ``` 154 | Here's our logo (hover to see the title text): 155 | 156 | Inline-style: 157 | ![alt text](/assets/img/profile.png "Logo Title Text 1") 158 | 159 | Reference-style: 160 | ![alt text][logo] 161 | 162 | [logo]: /assets/img/profile.png "Logo Title Text 2" 163 | ``` 164 | 165 | Here's our logo (hover to see the title text): 166 | 167 | Inline-style: 168 | ![alt text](/assets/img/profile.png "Logo Title Text 1") 169 | 170 | Reference-style: 171 | ![alt text][logo] 172 | 173 | [logo]: /assets/img/profile.png "Logo Title Text 2" 174 | 175 | {:#syntax} 176 | ### Code and Syntax Highlighting 177 | --- 178 | 179 | Code blocks are part of the Markdown spec, but syntax highlighting isn't. However, many renderers -- like Github's and Markdown Here -- support syntax highlighting. Which languages are supported and how those language names should be written will vary from renderer to renderer. Markdown Here supports highlighting for dozens of languages (and not-really-languages, like diffs and HTTP headers); 180 | 181 | {:.regular-sans} 182 | ``` 183 | Inline `code` has `back-ticks around` it. 184 | ``` 185 | 186 | Inline `code` has `back-ticks around` it. 187 | 188 | Blocks of code are either fenced by lines with three back-ticks ```, or are indented with four spaces. I recommend only using the fenced code blocks -- they're easier and only they support syntax highlighting. 189 | 190 |
 
191 | 
192 | ```javascript
193 | var s = "JavaScript syntax highlighting";
194 | alert(s);
195 | ```
196 |  
197 | ```python
198 | s = "Python syntax highlighting"
199 | print s
200 | ```
201 |  
202 | ```
203 | No language indicated, so no syntax highlighting. 
204 | But let's throw in a tag.
205 | ```
206 | 
207 | 
208 | 209 | ```javascript 210 | var s = "JavaScript syntax highlighting"; 211 | alert(s); 212 | ``` 213 | 214 | ```python 215 | s = "Python syntax highlighting" 216 | print s 217 | ``` 218 | 219 | ``` 220 | No language indicated, so no syntax highlighting. 221 | But let's throw in a tag. 222 | ``` 223 | 224 | {:#math} 225 | ### Math expressions 226 | --- 227 | 228 | You can write math expressions using the $$\LateX$$ [markup language](https://en.wikipedia.org/wiki/LaTeX) between double dollar signs : \$$...$$. They can be written inline or as a single block. 229 | 230 | For example, 231 | 232 | \$$P(A|B) = \frac{P(B | A)\cdot P(A)}{P(B)}$$ will render as : 233 | 234 | $$P(A|B) = \frac{P(B | A)\cdot P(A)}{P(B)}$$ 235 | 236 | Please note that for a math block to be displayed correctly, it needs to be separated by an empty line, above and below. Besides, the pipe character | may conflict with markdown : it is recommended to use \vert instead. 237 | 238 | {:#tables} 239 | ### Tables 240 | --- 241 | 242 | Tables aren't part of the core Markdown spec, but they are part of GFM and Markdown Here supports them. They are an easy way of adding tables to your email -- a task that would otherwise require copy-pasting from another application. 243 | 244 | {:.regular-sans} 245 | ``` 246 | Colons can be used to align columns. 247 | 248 | | Tables | Are | Cool | 249 | | ------------- |:-------------:| -----:| 250 | | col 3 is | right-aligned | $1600 | 251 | | col 2 is | centered | $12 | 252 | | zebra stripes | are neat | $1 | 253 | 254 | There must be at least 3 dashes separating each header cell. 255 | The outer pipes (|) are optional, and you don't need to make the 256 | raw Markdown line up prettily. You can also use inline Markdown. 257 | 258 | Markdown | Less | Pretty 259 | --- | --- | --- 260 | *Still* | `renders` | **nicely** 261 | 1 | 2 | 3 262 | ``` 263 | 264 | Colons can be used to align columns. 265 | 266 | | Tables | Are | Cool | 267 | | ------------- |:-------------:| -----:| 268 | | col 3 is | right-aligned | $1600 | 269 | | col 2 is | centered | $12 | 270 | | zebra stripes | are neat | $1 | 271 | 272 | There must be at least 3 dashes separating each header cell. 273 | The outer pipes (|) are optional, and you don't need to make the 274 | raw Markdown line up prettily. You can also use inline Markdown. 275 | 276 | Markdown | Less | Pretty 277 | --- | --- | --- 278 | *Still* | `renders` | **nicely** 279 | 1 | 2 | 3 280 | 281 | {:#blockquotes} 282 | ### Blockquotes 283 | --- 284 | 285 | {:.regular-sans} 286 | ``` 287 | > Blockquotes are very handy in email to emulate reply text. 288 | > This line is part of the same quote. 289 | 290 | Quote break. 291 | 292 | > This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote. 293 | ``` 294 | 295 | > Blockquotes are very handy in email to emulate reply text. 296 | > This line is part of the same quote. 297 | 298 | Quote break. 299 | 300 | > This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote. 301 | 302 | {:#inline} 303 | Inline HTML 304 | --- 305 | 306 | You can also use raw HTML in your Markdown, and it'll mostly work pretty well. 307 | 308 | {:.regular-sans} 309 | ``` 310 |
311 |
Definition list
312 |
Is something people use sometimes.
313 | 314 |
Markdown in HTML
315 |
Does *not* work **very** well. Use HTML tags.
316 |
317 | ``` 318 | 319 | You can also use raw HTML in your Markdown, and it'll mostly work pretty well. 320 | 321 |
322 |
Definition list
323 |
Is something people use sometimes.
324 | 325 |
Markdown in HTML
326 |
Does *not* work **very** well. Use HTML tags.
327 |
328 | 329 | {:#hr} 330 | ### Horizontal Rule 331 | --- 332 | 333 | 334 | {:.regular-sans} 335 | ``` 336 | Three or more... 337 | 338 | --- 339 | 340 | Hyphens 341 | 342 | *** 343 | 344 | Asterisks 345 | 346 | ___ 347 | 348 | Underscores 349 | ``` 350 | 351 | Three or more... 352 | 353 | --- 354 | 355 | Hyphens 356 | 357 | *** 358 | 359 | Asterisks 360 | 361 | ___ 362 | 363 | Underscores 364 | 365 | {:#br} 366 | ### Line Breaks 367 | --- 368 | 369 | My basic recommendation for learning how line breaks work is to experiment and discover -- hit once (i.e., insert one newline), then hit it twice (i.e., insert two newlines), see what happens. You'll soon learn to get what you want. "Markdown Toggle" is your friend. 370 | 371 | Here are some things to try out: 372 | 373 | {:.regular-sans} 374 | ``` 375 | Here's a line for us to start with. 376 | 377 | This line is separated from the one above by two newlines, so it will be a *separate paragraph*. 378 | 379 | This line is also a separate paragraph, but... 380 | This line is only separated by a single newline, so it's a separate line in the *same paragraph*. 381 | ``` 382 | 383 | Here's a line for us to start with. 384 | 385 | This line is separated from the one above by two newlines, so it will be a *separate paragraph*. 386 | 387 | This line is also a separate paragraph, but... 388 | This line is only separated by a single newline, so it's a separate line in the *same paragraph*. 389 | 390 | 391 | License: CC-BY 392 | -------------------------------------------------------------------------------- /_posts/2020-02-01-usage.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to use Simply Jekyll features on your website 3 | tags: Jekyll Theme 4 | comments: true 5 | --- 6 | 7 | Welcome to this feature usage tour. This is going to be another short post that describes how to use all the fancy features we saw in [[Exploring the features of Simply Jekyll]]. So without further ado, let's get started. 8 | 9 | ## The default features 10 | 11 | All the default jekyll markdown features are made available such that they don't cause any conflict with the custom features that we have implemented. To see how to the raw markdown gets generated, go to the [[Test page to see how the raw markdown is rendered]] 12 | 13 | ## The Custom features 14 | 15 | ### 1. Creating a wiki-style link 16 | 17 | **General Syntax** 18 | 19 | - **Internal links:** **[​[**​Some Link**]]** 20 | 21 | - **External links:** **[​[​**Some Text::https://address-to-the-website**]]** 22 | 23 | Anything text inside a double square bracket is considered as an internal link. The text has to be a valid title, if you provide a random text inside double square brackets, it will showup highlighted in yellow telling you that there is no essay/article/file with the mentioned title. 24 | 25 | Similarly, for external links all you have to do is add a double colon after the "Alt text" and enter the link to the website after the double colon as seen below. 26 | 27 | **Examples** 28 | 29 | Example of an internal link that points to a valid post or page, that is, a page with the title (not url) mentioned in the double brackets. 30 | 31 | > **Raw Syntax:** **[​[**Lorem ipsum dolor sit amet**]]** 32 | > 33 | > **Rendered Text:** [[Lorem ipsum dolor sit amet]] 34 | 35 | 36 | Example of an internal link that do not point to a valid post or page, that is, a page with the title (not url) mentioned in the double brackets. 37 | 38 | > **Raw Syntax:** **[​[**Title of a non-existent page**]]** 39 | > 40 | > **Rendered Text:** [[Title of a non-existent page]] 41 | 42 | ### 2. Creating a sidenote or a marginnote 43 | 44 | **General Syntax** 45 | 46 | - **Sidenote:** **[​[**Some Text**::keyword-of-the-type-of-the-sidenote]]** 47 | 48 | - **Marginnote:** **[​[​**Some Text**::keyword-of-the-type-of-the-marginnote]]** 49 | 50 | > |Type of the sidenote/marginnote|keyword| 51 | |:--|:--| 52 | |Left Sidenote| `lsn` | 53 | |Right Sidenote | `rsn` | 54 | |Left Marginnote| `lmn` | 55 | |Right Marginnote | `rmn` | 56 | 57 | 58 | So, all you have to do is type in the keywords of the corresponding type of sidenote or marginnote after the double colon in the above syntax 59 | 60 | **Examples** 61 | 62 | Example of a sidenote to the right side of the page: 63 | 64 | > **Raw Syntax:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum tortor in pharetra vehicula. Fusce gravida lacus ac sem luctus congue at id justo. Ut sed tempus ante. **[​[**Phasellus mollis lectus id efficitur mollis.**::rsn]]** Suspendisse sit amet diam nec justo rhoncus tristique. Ut blandit faucibus nisi vitae rutrum. Vivamus fermentum efficitur justo non facilisis. 65 | > 66 | > **Rendered Text:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum tortor in pharetra vehicula. Fusce gravida lacus ac sem luctus congue at id justo. Ut sed tempus ante. [[Phasellus mollis lectus id efficitur mollis.::rsn]] Suspendisse sit amet diam nec justo rhoncus tristique. Ut blandit faucibus nisi vitae rutrum. Vivamus fermentum efficitur justo non facilisis. 67 | 68 | Same goes with `lsn`, `rmn`, `lmn` 69 | 70 | ### 3. Highlighting a piece of text 71 | 72 | **General Syntax** 73 | 74 | - **[​[**​Some Link**::highlight]]** 75 | 76 | There is only one color right now in which it highlights, a light bluish color, but you can easily extend it to support multiple colors by tinkering with it in `content.html` file in `_includes` directory. 77 | 78 | **Examples** 79 | 80 | > **Raw Syntax:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum tortor in pharetra vehicula. Fusce gravida lacus ac sem luctus congue at id justo. Ut sed tempus ante. **[​[**Phasellus mollis lectus id efficitur mollis.**::highlight]]** Suspendisse sit amet diam nec justo rhoncus tristique. Ut blandit faucibus nisi vitae rutrum. Vivamus fermentum efficitur justo non facilisis. 81 | > 82 | > **Rendered Text:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum tortor in pharetra vehicula. Fusce gravida lacus ac sem luctus congue at id justo. Ut sed tempus ante. [[Phasellus mollis lectus id efficitur mollis.::highlight]] Suspendisse sit amet diam nec justo rhoncus tristique. Ut blandit faucibus nisi vitae rutrum. Vivamus fermentum efficitur justo non facilisis. 83 | 84 | ### 4. Partial Transclusion 85 | 86 | Transclusion is just a natural extension of sidenote and marginnote feature. 87 | 88 | **General Syntax** 89 | 90 | - **Sidenote-transclusion:** **[​[**Some Text**::keyword-of-the-type-of-the-sidenote-transclusion]]** 91 | 92 | - **Marginnote-transclusion:** **[​[​**Some Text**::keyword-of-the-type-of-the-marginnote-transclusion]]** 93 | 94 | > |Type of the sidenote/marginnote transclusion|keyword| 95 | |:--|:--| 96 | |Left Sidenote Transclusion | `lsn-transclude` | 97 | |Right Sidenote Transclusion | `rsn-transclude` | 98 | |Left Marginnote Transclusion | `lmn-transclude` | 99 | |Right Marginnote Transclusion | `rmn-transclude` | 100 | 101 | 102 | So, all you have to do is type in the keywords of the corresponding type of sidenote or marginnote after the double colon in the above syntax 103 | 104 | **Examples** 105 | 106 | Example of a transclusion to the right side of the page: 107 | 108 | > **Raw Syntax:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum tortor in pharetra vehicula. Fusce gravida lacus ac sem luctus congue at id justo. Ut sed tempus ante. **[​[**Lorem ipsum dolor sit amet**::rmn-transclude]]** Suspendisse sit amet diam nec justo rhoncus tristique. Ut blandit faucibus nisi vitae rutrum. Vivamus fermentum efficitur justo non facilisis. 109 | > 110 | > **Rendered Text:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum tortor in pharetra vehicula. Fusce gravida lacus ac sem luctus congue at id justo. Ut sed tempus ante. [[Lorem ipsum dolor sit amet::rmn-transclude]] Suspendisse sit amet diam nec justo rhoncus tristique. Ut blandit faucibus nisi vitae rutrum. Vivamus fermentum efficitur justo non facilisis. 111 | 112 | Same goes with `rsn`, `lsn`, `lmn` 113 | 114 | ### 5. Wrapping a text inside a box 115 | 116 | **General Syntax** 117 | 118 | - **[​[**Some Text**::wrap]]** 119 | 120 | **Examples** 121 | 122 | > **Raw Syntax:** **[​[**Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum tortor in pharetra vehicula. Fusce gravida lacus ac sem luctus congue at id justo. Ut sed tempus ante. Suspendisse sit amet diam nec justo rhoncus tristique. Ut blandit faucibus nisi vitae rutrum. Vivamus fermentum efficitur justo non facilisis**::wrap]]**. 123 | > 124 | > **Rendered Text:** [[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum tortor in pharetra vehicula. Fusce gravida lacus ac sem luctus congue at id justo. Ut sed tempus ante. Suspendisse sit amet diam nec justo rhoncus tristique. Ut blandit faucibus nisi vitae rutrum. Vivamus fermentum efficitur justo non facilisis.::wrap]] 125 | 126 | ### 6. Flashcard 127 | 128 | **General Syntax** 129 | 130 | - **[​[**Some Text**::srs]]** 131 | 132 | **Examples** 133 | 134 | > **Raw Syntax:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. **[​[**Donec rutrum tortor in pharetra vehicula**::srs]]**. Fusce gravida lacus ac sem luctus congue at id justo. Ut sed tempus ante. Suspendisse sit amet diam nec justo rhoncus tristique. Ut blandit faucibus nisi vitae rutrum. Vivamus fermentum efficitur justo non facilisis. 135 | > 136 | > **Rendered Text:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. [[Donec rutrum tortor in pharetra vehicula::srs]]. Fusce gravida lacus ac sem luctus congue at id justo. Ut sed tempus ante. Suspendisse sit amet diam nec justo rhoncus tristique. Ut blandit faucibus nisi vitae rutrum. Vivamus fermentum efficitur justo non facilisis. 137 | 138 | ### 7. Specific classes for changing font-type, font-size, and font-weight 139 | 140 | There are classes like very-small, medium-small, small, small-medium, medium, medium-large, large, very-large; that can be used to change the size of your text directly from markdown like this: 141 | 142 | > **Raw Syntax:** 143 | > {:.regular-sans} 144 | > ``` 145 | > {:.large} 146 | > Some text here that needs to be enlarged 147 | > ``` 148 | > 149 | > **Rendered Text:** 150 | > 151 | > {:.large} 152 | > Some text here that needs to be enlarged 153 | 154 | 155 | Similarly there are classes like regular-sans, serif, bold, italic, oblique, bolder, etc for formatting the text. 156 | 157 | > **Raw Syntax:** 158 | > 159 | > ``` 160 | > {:.medium .serif .oblique} 161 | > Some text here that needs to be enlarged 162 | > ``` 163 | > 164 | > **Rendered Text:** 165 | > 166 | > {:.medium .serif .oblique} 167 | > Some text here that needs to be enlarged 168 | 169 | Other common classes are .boxit that is used to wrap the text, .disable-user-select to disallow users from being able to select a particular piece of text by selecting it, etc. There are more classes like these which you can see in the file `style.css`. Once you figure out which class to use, all you have to do is just add the class before the text you want inside a curl brace like this ​{:\​} 170 | 171 | ### 8. Other implicit features. 172 | 173 | Features like backlinks, context menu, related posts, page preview are available by default as they are implemented using CSS and JS. So, you don't have to do anything other than write as you would normally to make use of those features. 174 | 175 | #### Note: 176 | When you typeout square brackets, it can be frustrating to type out the entire file title everytime. At least it was for me, so I created a small VSCode plugin, the editor in which I write my essays to autocomplete the titles as soon as I type double squarebrackets. It has been pretty handy for me, if you are interested in using VSCode or already use it, you can find it here: [[Notecomplete::https://github.com/rgvr/scratchpad/tree/master/note-complete]]. It is pretty simple to use, all you have to do is just download the note-complete folder and copy it to .vscode directory in your OS to start using it. :) 177 | 178 | 179 | For setting up the theme on your website checkout [[How to setup Simply Jekyll]] -------------------------------------------------------------------------------- /_posts/2020-03-01-customizable.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to customize your _config.yml 3 | tags: Jekyll Theme Customizability 4 | comments: true 5 | --- 6 | 7 | One of the most common complaints I recieved after opensourcing the theme was that the customizability of the site at the level of liquid and ruby code was extremely inaccessible to people who just wanted to get it up and running. To be honest, up until then I was under the impression that everyone using the theme were some kind of technically proficient people who just didn't have the time to whip up their own theme, and are resorting to themes such as mine just so that they could have a decent looking site to share their works. The reality only dawned upon me when I got like several emails from people involved in the digital garden subculture---most of them from outside of tech---told me how they liked the features but were unable to use it effectively because it was obscured by something-something-brackety-brackets-and-colons-and-equalsigns. So this is my attempt at trying to ease the customization process. 8 | 9 | If you are someone with even a tiny bit of programming background, I would advice you to look into *'_includes'* folder and go to the corresponding file name and tinker with it. 10 | 11 | For those of you who are not into programming, I have tried to extract as many features as I can to *_config.yml* file, so that you can at least take the advantage of some if not all the features that are customizable. 12 | 13 | This table explains all the customizable variables in *_config.yml*. Most of the main variables have a property called `enabled`, which when set to true will enable the main variable. For eg. turn on subheading by setting the enabled property to true, if it is already true, set it to false and see what happens. 14 | 15 | |Variables|Behavior| 16 | |:--|:--| 17 | |`baseurl`| Base Url is where do you want the site to be served from, the top level directory. You can set it to `/` if you want to be served from the root directory, or else you can set to something like `post` or `blog` or something similar| 18 | |`url`| This variable takes in the url of your site. This is the url that you registered with you domain registrar. Sometimes it can also be something different, such as in the case of github pages it would something like `.github.io` | 19 | |`heading`| This is the name of the site, this can only be renamed. It cannot be turned on or off | 20 | |`subheading`| This is the subheading of the site, you can enable or disable it. You can change the subheading by changing the `name` property in it. Note: This cannot be toggled if the site tagline is turned off| 21 | |`tagline`| This is the tagline of the site, you can toggle it using the `enabled` property in it. You can change the tagline by change the `name` property in it. Note: Toggling this off will also toggle off the subheading. This is a design decision because it looks ugly to have heading and subheading without anything to distinguish between the two.| 22 | |`copyright`| I believe this is sort of self-explanatory. The `year` property takes the year and `msg` property takes the message, which in most cases is just your name or your organization's name. Oh and `msg` is a mandatory property for the copyright to enabled as it doesn't have any `enabled` property| 23 | |`user`| This is one of the most interesting variables there is. Turning it on or off will remove the profile dashboard on the home-screen.It can be turned on or off using the `display` property. **Setting `display` to true will look like this:** and **With it turned off like this:** | 24 | |`name`| Self-Explanatory. Note: Depends on `user` variable being turned on/off. If the `user` variable is turned off, none of its properties like name, bio, email, social will show up on the profile board.| 25 | |`bio`| Self-Explanatory. Note: Depends on `user` variable being turned on/off. If the `user` variable is turned off, none of its properties like name, bio, email, social will show up on the profile board.| 26 | |`email`| Self-Explanatory. Note: Depends on `user` variable being turned on/off. If the `user` variable is turned off, none of its properties like name, bio, email, social will show up on the profile board.| 27 | |`photo`| This is the avatar that you see on the profile board when you turn the `user` variable on. Note: Depends on `user` variable being turned on/off. If the `user` variable is turned off, none of its properties like name, bio, email, social will show up on the profile board.| 28 | |`social`| This is similar to the `user` property in that you can toggle the sub-properties by toggling it on/off. You can enable or disable the `social` variable by setting the `enabled` property to true/false. All the subproperties are fixed. You cannot add a new social media site, design constraint :(

All the social media properties take a username as input, if you don't want a particular social handle to be displayed, please leave the field blank or type in null.| 29 | |`preferences`| This variable is a special type of variable. It is only for usage in the code. Don't worry, if you are not interested in the code, you won't have any use for it anyway.| 30 | |`search`| This variable can toggled on or off by setting the `enabled` property. The `shortcut_hint` property is just a toggle for the markup that show `Shift + S` on the search bar| 31 | |`wiki-style link`| This variable allows you to opt-in or out of the wiki-style double brackets for specifiying internal and external links.| 32 | |`sidenotes`| This variable covers both sidenotes and margin notes. Toggling this on-or-off will allow you use the custom sidenote syntax you saw in the [[How to use Simply Jekyll features on your website]] post.| 33 | |`transclusion`| Similar to sidenotes| 34 | |`pagepreview`| This variable controls the on-hover behavior of internal links, that is, if you hover over an internal link it will show a small preview tooltip thingy if this variable turned on.| 35 | |`wrapping`| This variable allows you to wrap text using a wrapped box. Eg. [[Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.::wrap]]| 36 | |`highlight`| Any text inside the highlight syntax mentioned in the [[How to use Simply Jekyll features on your website]] will be highlighted based on the color you mention in the `color` property of the variable. Eg. This is how it will look when [[highlighted::highlight]]. | 37 | |`backlinks`| This variable controls the references that you see at the bottom of a post. Note that toggling it off will also remove it from the contextmenu. SEE Below: | 38 | |`related`| This variable controls the references related by tags that you see at the bottom of a post. Note that toggling it off will also remove it from the contextmenu. Similar to backlinks. | 39 | |`contextmenu`| This variable allows you to right click on the post list on the home page to do things like copy links, see backlinks and related posts without going in.| 40 | -------------------------------------------------------------------------------- /_posts/2020-03-01-setup.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to setup Simply Jekyll 3 | tags: Jekyll Theme 4 | comments: true 5 | --- 6 | 7 | This is going to be a super simple post about how to setup and use this theme for your own website. 8 | 9 | ## Usage 10 | 11 | {:.boxit} 12 | Q. What will it look like when I am done setting it up? 13 | 14 | > This is what it should look (minus the exact essays ofcourse): 15 | > 16 | 17 | 18 | Now without further ado, let's get started! 19 | 20 | ### Setup Prerequisites 21 | 22 | For this tutorial, we’ll need to install a few things on your machine (you may have some of these already). Following the instructions on each website to install them. 23 | 24 | - [[Ruby::https://www.ruby-lang.org/]] 25 | - [[RubyGems::https://rubygems.org/]] 26 | - [[Git::https://git-scm.com/downloads]] 27 | 28 | You’ll also need to create accounts on the following services: 29 | 30 | - [[GitHub::https://www.github.com/join]] (to store the website) 31 | - [[Netlify::https://app.netlify.com/signup]] (to serve the website so others can see) 32 | 33 | Once you are all set with the prerequisites, we can then get to the fun part of getting it to appear on your screen. Let's get started with that. 34 | 35 | ### 1. Create a fork of the template repository 36 | 37 | To simplify things, I provide the template showed in the image above to get started. You can always tweak this template to your taste later. 38 | 39 | Visit the GitHub page for my template repository ([[rgvr/simply-jekyll::https://github.com/rgvr/simply-jekyll]]), and fork it to your account using the Fork button: 40 | 41 | > 42 | 43 | Once the forking process is complete, you should have a fork (essentially a copy) of my template in your own GitHub account. On the GitHub page for your repository, click on the green “Clone or download” button, and copy the URL: we’ll need it for the next step. 44 | 45 | ### 2. Clone your repository locally 46 | 47 | Next, we want to download the files from your GitHub repository onto your local machine. To do this, replace in the command below with the URL you copied in the previous step, then execute this command: 48 | 49 | ``` 50 | $ git clone my-personal-website 51 | ``` 52 | 53 | As a reference point, this is how it looks like for me (the difference is likely just the GitHub username): 54 | 55 | ``` 56 | $ git clone git@github.com:rgvr/simply-jekyll.git my-personal-website 57 | ``` 58 | 59 | Then, navigate into the directory that was just created: 60 | 61 | ``` 62 | $ cd my-personal-website 63 | ``` 64 | 65 | ### 3. Test out the site locally 66 | 67 | Sweet! You now have your repository’s source code on your machine. Within the my-personal-website directory, run the following command to install the necessary dependencies like Jekyll: 68 | 69 | ``` 70 | $ bundle 71 | ``` 72 | 73 | Once that’s done, ask Jekyll to start serving the site locally: 74 | 75 | ``` 76 | $ bundle exec jekyll serve 77 | ``` 78 | 79 | Then, open up [[http://localhost:4000::http://localhost:4000]] in your browser. 80 | 81 | If everything’s done correctly, you should now see the home page of your Personal Jekyll Website with Simply Jekyll Theme. 🎉 82 | 83 | Keep in mind that this site is only available locally (notice the `localhost` part of the URL), so if we want it to be available on the Internet for everyone to enjoy, we need to deploy it to the Internet: we’ll use Netlify for that in the next step. 84 | 85 | ### 4. Connect your GitHub repository to Netlify 86 | 87 | Netlify lets you automatically deploy your personal website on to the Internet when you update your GitHub repository. To do this, we need to connect your GitHub repository to Netlify: 88 | 89 | 1. Log in to Netlify 90 | 2. Once logged in, click the “New site from Git” button 91 | 3. On the next page, select GitHub as the continuous deployment provider (you may need to authorize the connection, in which case, approve it) 92 | 4. On the next page, select your website repository from the list. 93 | 5. On the next page, replace the basic build settings with the following. 94 | 1. Type in "jekyll build" (without the quotes) inside the text field titled "Build Command". 95 | 2. Similarly type in "_site/" (without the quotes) inside the text field titled "Publish Directory". 96 | 6. On the next page, keep the default settings, and click on “Deploy site”. 97 | 98 | That was easy! We’re almost done. 99 | 100 | Wait a couple of minutes for the initial deploy to complete. 101 | 102 | Once that’s done, your website should be available on the Internet via a generic Netlify URL, which you can change to a custom domain later if you’d like. 103 | 104 | Now the cool thing is this: whenever you push an update to your GitHub repository, Netlify will automatically deploy your updates to the Internet. 105 | 106 | ### 5. Start producing content with your Simply Jekyll based Website 107 | 108 | At this point, you can start updating the files on your machine (in the my-personal-website folder) to change your simply-jekyll based website to your liking: update the copy, add some notes, tweak the layout, customize the colors, etc. Once you have something you’re happy with, push your changes to your GitHub repository with the following commands: 109 | 110 | ``` 111 | $ git add --all 112 | $ git commit -m 'Update content' 113 | $ git push origin master 114 | ``` 115 | 116 | If that command succeeds and the rest of the tutorial was done correctly, in a couple of minutes, you should see your changes live on your Netlify website. 🚀 117 | 118 | And we’re done! You now have your own Simply Jekyll based Personal Website . 119 | 120 | --- 121 | 122 | If you’re curious, take a look at [[my personal simply jekyll based website here::https://www.rgvr.me]]. 123 | 124 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /_posts/2020-04-01-explore.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Exploring the features of Simply Jekyll 3 | tags: Jekyll Theme 4 | status: ongoing 5 | --- 6 | 7 | Essentiality is the heart of any good software, and this theme is designed to ensure that I don't add things that I won't use on a daily basis or not have things that would be important for my personal usecase. It has been designed carefully to get rid of all the feature creeps, bloatwares, etc. i.e., no bootstrap, no semantic, no jquery, no nothing... 8 | 9 | That said, this is a ready made theme and I am making it public so that more number of people will use it and enjoy the experience of using it. So, pardon my bigotry there😅. 10 | 11 | As for the list of features, this website steals features from every website that I can think of, or more appropriately the design inspiration for this website is derived from multiple sources; Here is the tiny list for the curious: 12 | 13 | - Backlinks: Roam Research 14 | - Transclusion: Tiddlywiki 15 | - Sidenote: Edward Tufte, Gwern Branwen 16 | - Stale Link Highlighting: Tiddlywiki 17 | - Wiki-style links: Every wiki ever 18 | - Text highlighting: Roam Research 19 | - Page preview: Wikipedia 20 | - Context menu: Google Docs 21 | - Notes: Andy Matuschak's Evergreen Notes 22 | - Color scheme: Github 23 | - Feed like structure for home page: Twitter 24 | - Omnisearch box at the top: Google 25 | - Profile board: Twitter/Instagram 26 | 27 | Now that you know all my secrets let us not waste any more time into further exposing my true nature in its entirety and get started with tour:P 28 | 29 | {:.boxit} 30 | **Note:** This page only showcases the features. How to use these feature is mentioned in a separate article. 31 | 32 | ### Backlinks 33 | 34 | Backlinks or as Roam Research calls it "Birdirectional Links" is a nifty little feature that allows not only users reading your essays/articles to encounter interesting related articles, this is something you as a author yourself will see how powerful it is once you start browsing around your website. Backlinks are basically a link on PostA indicating all the mentions of PostA on different Posts. 35 | 36 | The neat stuff is it won't show up with an empty box if a given post doesn't have any backlinks and if it is already included in backlinks, it won't show up in your related posts[[**Related Posts:** Posts that share same tag(s).
**Linked References(Backlinks):** Posts that link other posts inside your blog.::rmn]]. :) 37 | 38 | 39 | Here is a screenshot of what mentions/backlinks will look like in a page: 40 | 41 | 42 | 43 | In the above example, it can be seen that there are three links, it means that all the three pages have a link to the page in which they are being displayed as a backlink. 44 | 45 | For eg. If you scroll all the way to the bottom, you will something similar i.e., you will see a link to the pages that has a link to this page. 46 | 47 | ### Sidenotes and Marginnotes 48 | 49 | Of what use are such wide margins when you can't make efficient use of them. Fear not, we have a way to handle that too --- Marginnotes[[There are two types of people, those who have taste and those who don't. And anyone who has even a tiny bit of taste will never, never-ever use footnotes over sidenotes.
---Some random blogger who shall remain unamed::rmn]]. For what it's worth, when you stroll down a garden, you don't ever see a flower bloom 10 miles away from the plant do you? This is where sidenotes come in and replace their paper-era sibling ie., footnotes. If it is relevant you see it right there. (No scrolling = No cognitive strain). The entire idea is to allow users to have a pleasant time on your blog i.e., Not too distracting(offputting), not too mesmerizing, just the right amount of ornamentation to allow seamless reading experience[[I see it as an issue of managing & exposing the length. Some readers want to go as deep as you can take them, but others are frustrated if you block them from moving on. I deal with it by use of collapsible sections+abstracts, margin notes, and explicit topics in list items.
---Tweet by Gwern Branwen::lsn]]. The added advantage we have with this website is it has wide margins allowing us to use both sides for sidenotes. So we can use them for quotations, small snippets, and also for interactive/expository animations. 50 | 51 | The first one on the right is a marginnote and the second one on the left is a sidenote. You may ask what is the difference, it looks all the same to me. You are right to some extent, but if you look closely you will see that the one on left has a number attached to it while the one on the right doesn't. Yes, that is all the difference there is, at least [[Edward Tufte::https://edwardtufte.github.io/tufte-css/]] says. 52 | 53 | 54 | ### On-feed context menu 55 | 56 | Context menus are a great way to improve user experience if they are done correctly. Given that our theme has a feed-link structure for the landing page, it leverages the opportunity and saves second time visitors who have already read the article and are only here to see other related articles or the backlinks by just simply right clicking on the feed. Thereby saving users the unnecessay time involved with clicking on a link and scrolling all the way down to see the backlinks or related articles. 57 | 58 | Here is a screenshot for people who are too lazy, while the rest of you can go back to the home page and try it out by right clicking on a particular feed entry: 59 | 60 | 61 | 62 | 63 | ### On-hover page preview 64 | 65 | Ever been to a blog or a tutorial site and seen links to other pages without any clue as to what that page is about apart from vague statements like "See Related" or "Click here for Part II". We all have had that experience, haven't we? Wouldn't it be nice to be able to take a cursory glance at the page just so that you could get a feel of it and decide quickly as to whether or not do you really want to read that post without having to click on the link and wait for the ginormous scroll of text to load? That is precisely what page previews are for. For eg, try to hover over this link: [[Lorem ipsum dolor sit amet]]. 66 | 67 | And yes, all of what you see is available right out of the box. No configuration, no sh*t, no shinola. 68 | 69 | ### Transclusion 70 | 71 | Once I had sidenotes and page preview for my blog, transclusion[[Lorem ipsum dolor sit amet::rmn-transclude]] just felt like the natural next step to it. I mean there are less important pages that you can leave at the discretion of the readers to hover-over and take a peak, and then there are pages that you want to explicity show a glimpse of, but how do you do it? Obviously, putting a chunk of random text in the most of your post is just unacceptable UX, but then how else do you do it? You could just combine the nifty little preview thingy with your nice little sidenote thingy and let users get a glimpse of the important stuff without getting distracted. Amazing, isn't it? 72 | 73 | ### Link Management 74 | 75 | Now the biggest of them all: the permalink curse. Most of us are never happy with the first title that we come up with, and when you excitingly write a new post embedding an old post---the title of which you always wanted to change but never got time to do so because you were busy creating content---it sometimes happens that you forget to update the relevant link all the associated places that you linked it in. And I think this is worst of them all in terms of an UX nightmare. 76 | 77 | Although we don't have a complete solution given that we are using a static site generator, I think we have a decent mechanism to atleast find the culprit links without clicking at them (a.k.a highlighting links that don't point anywhere, but ideally must be pointing to some location due to which they cannot be deleted). 78 | 79 | Here is an example of: 80 | - A perfectly valid link: [[Lorem ipsum dolor sit amet]] 81 | - A bad link that does not point anywhere: [[Some non-existing title]] 82 | 83 | See how it highlights in yellow? I feel this is a game-changer that anyone who has a personal website should at least think of incorporating in their website given the number of deadlink issues we face. 84 | 85 | **Note**: This only works with local/internal links. 86 | 87 | 88 | ### Miscellaneous Features: Highlighting text, Primitive Flash Cards, and Some gimmicks 89 | 90 | #### Text Highlighting 91 | 92 | So you are writing an essay and you want to emphasize a particular portion of your essay to your audience that you think is just mindblowing. Tools like Medium provide such an easy way to do this while we still keep scratching our head with mark tags and p tag with a background color and what not.. Worry not, this theme allows you to easily highlight a portion of a text without any hassle. 93 | 94 | Here is an example of it: 95 | 96 | {:.boxit} 97 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, [[quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident::highlight]], sunt in culpa qui officia deserunt mollit anim id est laborum." 98 | 99 | #### Primitive Flashcards 100 | 101 | Anki has been my friend, my well-wisher, my guardian, pretty much everything for the last one year of my intellectual life. I have a half-hour morning routine that I follow dilligently in going through the scheduled anki decks to strengthen my neuronal connection on a particular topic/subject. And I have been doing it consistently for almost a year now. This is an attempt at recreating the aspect of spaced-repetition to allow my brain to form interesting connections based on things I have already written. The plan is to extend it using local storage and somekind of firebase like service to provide a constant reminder to users using the supermemo algorithm, but as of now, this is where I stand --- a simple on-click card to keep the thing going until I build something better. 102 | 103 | Here is an example(click on the card): 104 | 105 | "Lorem ipsum dolor sit amet, [[consectetur adipiscing elit, sed do eiusmod tempor::srs]] incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 106 | 107 | For all you know, this could be used for some interesting things if you have a tutorials website where you write posts on technical concepts. So that's that. 108 | 109 | #### The Gimmicks 110 | 111 | ##### Profile Board for Main Site 112 | 113 | If you have ever used a social media with feeds you probably have stalked the profiles of people you find interesting, but the problem is as much as the mystery gets someone into look at your profile, it also makes them form opinions. If the profile reads author, you see their feed one way; and if it says scientist from Caltech, you see it the other. I mean as much as authority is a thing to form opinions about, it also alienates people from what could potentially have been a great relation if not for the credentiality and appearance. So, the idea with the profile board was to get done with this stuff right away so that people can enjoy the content instead of going profile hunting on your credibility and accomplishments and appearances to judge and validate their opinions by validating you. 114 | 115 | Here is the screenshot: 116 | 117 | 118 | 119 | ##### Omnisearch bar 120 | 121 | This is inspired by the browsers like Chrome and Firefox where the searchbar is always placed at the top so that readers can easily search for the next thing without having to go back to the main page and scroll through dozens of articles. 122 | 123 | And I personally like this one because, it allows me as an author/writer to quickly jump between different posts while I am reading my articles to reference in my other articles. 124 | 125 | Here is a screenshot: 126 | 127 | 128 | 129 | **Note**: The searchbar is not implemented as a scrollspying widget that pins itself automatically is because I have a preference for distraction free content when reading, that is why the website provides a chevron to scroll to the top easily instead of pinning the search to the header. 130 | 131 | ##### Feed-like structure 132 | 133 | I am a big fan of Aza Raskin's infinite scroll design and the fact that it provides such an easy way to engage users is just mind-blowing. That said, I must also confess that I am not a big fan of infinite scrolls on social media websites given their addictive nature. Blogs are fundamentally finite in nature. I mean even if you are a highly productive individual who writes a thousand page essay a day, you would have only written 365 essays and not all of them interesting to me. So having a feed-like structure on blogs I feel is fundamental to allowing users to engage in a more neutral way. 134 | 135 | And if you are still not sure of its utility, go join twitter or facebook or instagram, and comeback to read this again after a month or so. 136 | 137 | Untill then here is the screenshot: 138 | 139 | 140 | 141 | ##### Auto-tagging WIP posts on the feed 142 | 143 | Sometimes you are writing something interesting but have not completed the entire thing, lets say like a series of posts on single, it can be helpful to show users right away on the feed/homepage the status so that when they click the post, their expectations are already managed. 144 | 145 | Here is a screenshot. 146 | 147 | 148 | 149 | ##### Clickable tags 150 | 151 | If you go the posts on the homepage, and go inside any of them and try to click on the tags such as date or category, you will see that it takes you to a page with all the posts belonging to that tag or date. Just a nifty little feature. 152 | 153 | 154 | And that is all! Thanks for scrolling all the way through to see all the features. Now if you'd like to know how to use this theme, head over to the post titled [[How to setup Simply Jekyll]]. And if you would like to see how to use these features, head over to [[How to use Simply Jekyll features on your website]] 155 | 156 | 157 | P.S If you use VSCode like me for content creation and authoring, and are interested in autocompletion of titles when you write your notes. You can use a small VSCode plugin that I wrote for myself to ease up my writing process: [[Notecomplete::https://github.com/rgvr/scratchpad/tree/master/note-complete]] 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | -------------------------------------------------------------------------------- /_posts/2020-04-01-lorem.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Lorem ipsum dolor sit amet 3 | tags: General Philosophy Review 4 | --- 5 | 6 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam lorem elit, rutrum et nibh ac, vulputate mollis lorem. Fusce at lectus id risus scelerisque suscipit. Vestibulum nec lobortis ex. Proin augue odio, euismod a vehicula ut, auctor ac turpis. Morbi eget facilisis turpis, quis tincidunt neque. Nulla facilisi. Pellentesque porta vel purus eget vulputate. Etiam sodales tincidunt nibh, eget pharetra augue aliquam id. Praesent varius egestas leo, ut luctus risus molestie ut. Integer sapien neque, efficitur vel leo in, aliquet lacinia elit. Nulla a magna ut dui blandit tempus id nec sem. 7 | 8 | Donec imperdiet lacus posuere quam imperdiet, sed pharetra nulla fringilla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce ante neque, ullamcorper at porttitor nec, scelerisque vel neque. Sed ac aliquam leo. Sed nec elementum est. Quisque sed massa vulputate, ultrices risus eu, blandit tellus. Maecenas sed cursus lacus, vitae molestie nunc. Morbi vel ex leo. Maecenas eu orci non nisl aliquam ullamcorper. Phasellus dapibus eget arcu ut laoreet. Vestibulum semper nec justo et venenatis. 9 | 10 | ## Cras Venenatis 11 | 12 | Cras venenatis ut tortor eu vestibulum. Mauris viverra dui vel eros consectetur pretium. Praesent a vestibulum quam, at vestibulum risus. Aenean sed lobortis felis. Phasellus a fermentum nibh. Integer in purus ex. Cras fermentum hendrerit nisi. Sed aliquet ut nunc eget tristique. Vestibulum in volutpat lorem. Pellentesque turpis metus, facilisis vitae tincidunt vulputate, elementum quis nulla. Nulla ac nibh nec urna blandit venenatis. Etiam lectus diam, maximus vel felis eu, facilisis egestas tellus. Curabitur tellus ex, blandit et ex vitae, dignissim auctor orci. 13 | 14 | Sed molestie quam ut venenatis congue. Praesent posuere, massa nec ullamcorper porta, libero neque tincidunt sem, et posuere leo sapien ut tellus. Phasellus in purus gravida, lobortis felis quis, consequat tortor. Vivamus lobortis sem massa, dignissim porta magna tincidunt ut. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Ut viverra orci risus, in efficitur mi venenatis nec. Maecenas ac risus eu magna euismod faucibus. Quisque at ante ut ante vehicula commodo. Praesent lacinia turpis ex, vitae vehicula purus luctus a. Donec mattis accumsan tincidunt. Fusce ac lectus augue. 15 | 16 | Cras aliquam massa aliquet orci ultricies, sit amet ultrices ipsum dignissim. Quisque non faucibus dui. Donec euismod nulla nec arcu malesuada, ac fermentum ligula consequat. Maecenas pellentesque massa quis pretium sollicitudin. Mauris vel felis hendrerit, tristique purus eget, venenatis metus. Praesent urna est, aliquet non blandit quis, tristique sit amet nulla. Donec ut malesuada libero. In hac habitasse platea dictumst. Donec nisi quam, lacinia gravida dui sed, vulputate egestas neque.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam lorem elit, rutrum et nibh ac, vulputate mollis lorem. Fusce at lectus id risus scelerisque suscipit. Vestibulum nec lobortis ex. Proin augue odio, euismod a vehicula ut, auctor ac turpis. Morbi eget facilisis turpis, quis tincidunt neque. Nulla facilisi. Pellentesque porta vel purus eget vulputate. Etiam sodales tincidunt nibh, eget pharetra augue aliquam id. Praesent varius egestas leo, ut luctus risus molestie ut. Integer sapien neque, efficitur vel leo in, aliquet lacinia elit. Nulla a magna ut dui blandit tempus id nec sem. 17 | 18 | Donec imperdiet lacus posuere quam imperdiet, sed pharetra nulla fringilla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce ante neque, ullamcorper at porttitor nec, scelerisque vel neque. Sed ac aliquam leo. Sed nec elementum est. Quisque sed massa vulputate, ultrices risus eu, blandit tellus. Maecenas sed cursus lacus, vitae molestie nunc. Morbi vel ex leo. Maecenas eu orci non nisl aliquam ullamcorper. Phasellus dapibus eget arcu ut laoreet. Vestibulum semper nec justo et venenatis. 19 | 20 | Cras venenatis ut tortor eu vestibulum. Mauris viverra dui vel eros consectetur pretium. Praesent a vestibulum quam, at vestibulum risus. Aenean sed lobortis felis. Phasellus a fermentum nibh. Integer in purus ex. Cras fermentum hendrerit nisi. Sed aliquet ut nunc eget tristique. Vestibulum in volutpat lorem. Pellentesque turpis metus, facilisis vitae tincidunt vulputate, elementum quis nulla. Nulla ac nibh nec urna blandit venenatis. Etiam lectus diam, maximus vel felis eu, facilisis egestas tellus. Curabitur tellus ex, blandit et ex vitae, dignissim auctor orci. 21 | 22 | ## Sed molestie 23 | 24 | Sed molestie quam ut venenatis congue. Praesent posuere, massa nec ullamcorper porta, libero neque tincidunt sem, et posuere leo sapien ut tellus. Phasellus in purus gravida, lobortis felis quis, consequat tortor. Vivamus lobortis sem massa, dignissim porta magna tincidunt ut. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Ut viverra orci risus, in efficitur mi venenatis nec. Maecenas ac risus eu magna euismod faucibus. Quisque at ante ut ante vehicula commodo. Praesent lacinia turpis ex, vitae vehicula purus luctus a. Donec mattis accumsan tincidunt. Fusce ac lectus augue. 25 | 26 | ### Cras aliquam 27 | 28 | Cras aliquam massa aliquet orci ultricies, sit amet ultrices ipsum dignissim. Quisque non faucibus dui. Donec euismod nulla nec arcu malesuada, ac fermentum ligula consequat. Maecenas pellentesque massa quis pretium sollicitudin. Mauris vel felis hendrerit, tristique purus eget, venenatis metus. Praesent urna est, aliquet non blandit quis, tristique sit amet nulla. Donec ut malesuada libero. In hac habitasse platea dictumst. Donec nisi quam, lacinia gravida dui sed, vulputate egestas neque 29 | 30 | ## References 31 | 1. SomeLatinGuy. *(1920)*. [[Ipsum Dolor Sit Amet::https://www.lipsum.com/feed/html]] -------------------------------------------------------------------------------- /_posts/2020-05-01-intro.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction to Simply Jekyll 3 | tags: Jekyll Theme 4 | --- 5 | 6 | Simply Jekyll is a highly functional jekyll-based theme that combines the best of different worlds. It is a minimal and distraction free theme that strives to provide maximum value all without holding back on any essential features that a user would benefit from or would desire for. This is an evolving project and is garanteed to be maintained at least for quite some time as I myself am a beneficiary of this theme and the project. 7 | 8 | The theme provides a rich set of features that include: 9 | - Wiki-style markdown syntax for both internal as well as external links. 10 | - Support for backlinks and related posts to exhort serendipitous encounters. 11 | - Feed-specific context menu for instantly accessing the related posts and references. 12 | - Lunrjs based search with previews and shortcut to trigger search. 13 | - Auto stale-link management for internal links. 14 | - Custom syntax for sidenotes and marginnotes on either side of the feed/post. 15 | - Support for partial transclusion of posts. 16 | - On hover page preview. 17 | - Custom classes to style phrasing elements like quotes, callouts, etc by mentioning size, font-types, weight, box etc. 18 | - Preliminary support for flashcards. 19 | - Custom syntax to highlight your favorite part of the post (No, I am not talking about code syntax highlighting, which is already provided by Jekyll through Rouge). 20 | - Support for external link identifier through icons. 21 | - Finally, the most important of them all --- No bloatware or frameworks! 22 | 23 | Plus everything else that you can already do with jekyll like write something on a bunch of markdown files and convert it into a HTML file or sprinkle in some inline html can still be done alongside these features. 24 | 25 | Neat stuff, isn't it? To see the above mentioned features in action go check out the next post. :P 26 | 27 | Also see the sample post---[[Lorem ipsum dolor sit amet]]---to get a feel for how an actual essay would look like. :) 28 | 29 | 30 | -------------------------------------------------------------------------------- /about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: Post 3 | title: About 4 | permalink: /about/ 5 | content-type: eg 6 | --- 7 | 8 | 9 | - I am a software engineer and a writer interested in the interplay between thoughts and constraints, the duality of interpretations and representations, and the nature of abstractions and correspondence between them. 10 | 11 | - I am a long time practioner of Vipassana, but I am also a fallibilist with a slight objectivist bent. So I probably have a very different view of meditation than most people. We can talk about it if you want to. 12 | 13 | - On this website I write articles about [[Computer Science::/tags/#Software]], [[Philosophy::/tags/#Philosophy]], Mathematics, and [[Generic Life Stuff::/tags/#General]]. Sometimes I also [[review::/tags/#Review]] books that I've read. You can find my programming side-projects on [[github::https://www.github.com/rgvr]] 14 | 15 | - I have a [[youtube channel::https://www.youtube.com/channel/UCESc8TaWpQxpHEnfhQLgzPQ]] on which I stream my work log(live writing sessions, coding sessions, reading/researching sessions, etc). 16 | 17 | - If you find anything interesting about who I am or what I do, please do reach out to me. 👇 18 | 19 | 20 | ## Reach out to me 21 | 22 | - Shoot me a dm or just tweet ***[[@rgvrme::https://twitter.com/r]]***. I will try to reply as soon as I can. 23 | 24 | - I live in Bangalore, so If you happen to be in Bangalore by chance and want to chat, drop an ***[[email::mailto:raghu@rgvr.me]]*** and include [Coffee] in the subject line, and we can work something out. 25 | 26 | - If you are not comfortable reaching out to me directly, you can also anonymously give me [[feedback::https://www.admonymous.co/rgvr]] 27 | 28 | 29 | ## About the website 30 | 31 | ### Features: 32 | 33 | [[***Changelog***
34 | \- 14-05-20 Context Menu
35 | \- 08-05-20 Trivial Spaced Repetition
36 | \- 04-05-20 Removed Theming.
37 | \- 04-05-20 Removed Curated Notes.
38 | \- 01-04-20 Curated Notes.
39 | \- 30-04-20 Transclusion.
40 | \- 26-04-20 Sidenote.
41 | \- 20-04-20 Wiki link.
42 | \- 16-04-20 Theme.
43 | \- 16-04-20 Avatar.
44 | \- 11-02-20 Related Posts.
45 | \- 12-10-19 Searchbar.
46 | ::rmn]]The original design[[**Original Design**
::lsn]] of this website was a lot more ostentatious than what you see here. As I progressed through the development process of this website, the current design started emerging on its own. For reasons I don't even understand, the current design just started feeling more natural than the one I had in my mind initially. The bare and simple look-n-feel of this site, at least to me, encompasses the essence of all the things I love about the sites I frequently visit --- feed-like structure, previews, search with context, contextual backlinks, sidenotes, etc. I am hopeful that you'll love it too. :) 47 | 48 | - **Page preview** (Move your mouse over the link): [[Lorem ipsum dolor sit amet]] 49 | - **Transclusion**: Allows you to see a partial view of the contents of the website to the right or the left of the margin. 50 | - **Sidenotes** (Changelog you see on the left is an example of this). 51 | - **Wiki-style link:** Usually wikis allow you to specify links using double bracket, I added it here using liquid. Also added bad-link highlighting 52 | - Good link: [[Lorem ipsum dolor sit amet]] 53 | - Bad link: [[Title of a page that doesn't exist]] 54 | 55 | 56 | Some Less know features: 57 | 58 | - Go back to the blog home or to the notes page, and try to right click on any of the entry. [Hint: Zettelkasten] 59 | 60 | - Press 'Shift + s' to trigger search 61 | 62 | - Click this card[[Memorize me so that you do well in your exams::srs]] looking thing to know how I use my notes. [Hint: SRS] 63 | 64 | 65 | Other Details: 66 | 67 | - The site lives on [[Github::https://github.com/rgvr/simply-jekyll]] and is served using Netlify 68 | - This website is statically generated using Jekyll from a set of Markdown files. 69 | - The Jekyll theme can be found on my Github Page, It is called "Simply-Jekyll" 70 | - Except lunrjs and katex, there are no third party libraries. Discord is an opt-in, I don't use on my [[site::https://rgvr.me]]. I strongly believe in user privacy. 71 | 72 | 73 | -------------------------------------------------------------------------------- /assets/css/Util.css: -------------------------------------------------------------------------------- 1 | --- 2 | layout: Stylesheet 3 | --- 4 | 5 | /* Utilities: Disable Selection, Kramdown TOC */ 6 | 7 | .disable-select { 8 | user-select: none; /* supported by Chrome and Opera */ 9 | -webkit-user-select: none; /* Safari */ 10 | -khtml-user-select: none; /* Konqueror HTML */ 11 | -moz-user-select: none; /* Firefox */ 12 | -ms-user-select: none; /* Internet Explorer/Edge */ 13 | } 14 | 15 | .very-small { 16 | font-size: 12px !important; 17 | } 18 | 19 | .medium-small { 20 | font-size: 13.5px !important; 21 | } 22 | 23 | .small { 24 | font-size: 16px !important; 25 | } 26 | 27 | .small-medium { 28 | font-size: 18px !important; 29 | } 30 | 31 | .medium { 32 | font-size: 22px !important; 33 | } 34 | 35 | .medium-large { 36 | font-size: 25px !important; 37 | } 38 | 39 | .large { 40 | font-size: 28px !important; 41 | } 42 | 43 | .serif { 44 | font-family: Georgia, serif !important; 45 | } 46 | 47 | .title-sans { 48 | font-family: var(--primary-font-family) !important; 49 | } 50 | 51 | .regular-sans { 52 | font-family: var(--secondary-font-family) !important; 53 | } 54 | 55 | .bold { 56 | font-weight: 600 !important; 57 | } 58 | 59 | .very-bold { 60 | font-weight: 800 !important; 61 | } 62 | 63 | .bolder { 64 | font-weight: 500 !important; 65 | } 66 | 67 | .normal { 68 | font-weight: 400 !important; 69 | } 70 | 71 | .regular { 72 | font-style: normal !important; 73 | } 74 | 75 | .oblique { 76 | font-style: oblique !important; 77 | } 78 | 79 | .italic { 80 | font-style: italic !important; 81 | } 82 | 83 | .left-align-text { 84 | text-align: left !important; 85 | } 86 | 87 | .center-align-text { 88 | text-align: center; 89 | } 90 | 91 | .right-align-text { 92 | text-align: right; 93 | } 94 | 95 | .dont-decorate a { 96 | text-decoration: none !important; 97 | color: var(--primary-text-color) !important; 98 | } 99 | 100 | .dont-decorate { 101 | background: rgb(242,242,242); 102 | background: linear-gradient(180deg, rgba(242,242,242,1) 15%, rgba(245,245,245,1) 54%, rgba(253,253,253,1) 100%); 103 | } 104 | 105 | .boxit { 106 | padding: 20px; 107 | background-color: var(--secondary-bg-color); 108 | border-radius: 5px; 109 | } 110 | 111 | #boxit { 112 | padding-left: 20px; 113 | border-radius: 5px; 114 | } 115 | 116 | .default-color { 117 | color: var(--primary-text-color) !important; 118 | } 119 | 120 | .default-background { 121 | background-color: var(--secondary-bg-color) !important; 122 | } 123 | 124 | .show { 125 | display: block !important; 126 | } 127 | 128 | .hide { 129 | display: none !important; 130 | } 131 | 132 | .dim-90 { 133 | opacity: 0.9 !important; 134 | } 135 | 136 | .dim-80 { 137 | opacity: 0.8 !important; 138 | } 139 | 140 | .dim-70 { 141 | opacity: 0.7 !important; 142 | } 143 | 144 | .dim-60 { 145 | opacity: 0.6 !important; 146 | } 147 | 148 | .dim-50 { 149 | opacity: 0.5 !important; 150 | } 151 | 152 | .dim-40 { 153 | opacity: 0.4 !important; 154 | } 155 | 156 | .dim-30 { 157 | opacity: 0.3 !important; 158 | } 159 | 160 | .dim-20 { 161 | opacity: 0.2 !important; 162 | } 163 | 164 | .dim-10 { 165 | opacity: 0.1 !important; 166 | } 167 | 168 | /* Margin Top Positive */ 169 | 170 | .margin-top-5 { 171 | margin-top: 5px !important; 172 | } 173 | 174 | .margin-top-10 { 175 | margin-top: 10px !important; 176 | } 177 | 178 | .margin-top-15 { 179 | margin-top: 15px !important; 180 | } 181 | 182 | .margin-top-20 { 183 | margin-top: 20px !important; 184 | } 185 | 186 | .margin-top-25 { 187 | margin-top: 25px !important; 188 | } 189 | 190 | .margin-top-30 { 191 | margin-top: 30px !important; 192 | } 193 | 194 | /* Margin Top Negative */ 195 | 196 | .margin-top-5-neg { 197 | margin-top: -5px !important; 198 | } 199 | 200 | .margin-top-10-neg { 201 | margin-top: -10px !important; 202 | } 203 | 204 | .margin-top-15-neg { 205 | margin-top: -15px !important; 206 | } 207 | 208 | .margin-top-20-neg { 209 | margin-top: -20px !important; 210 | } 211 | 212 | .margin-top-25-neg { 213 | margin-top: -25px !important; 214 | } 215 | 216 | .margin-top-30-neg { 217 | margin-top: -30px !important; 218 | } 219 | 220 | /* Margin Bottom Positive */ 221 | 222 | .margin-bottom-5 { 223 | margin-top: 5px !important; 224 | } 225 | 226 | .margin-bottom-10 { 227 | margin-bottom: 10px !important; 228 | } 229 | 230 | .margin-bottom-15 { 231 | margin-bottom: 15px !important; 232 | } 233 | 234 | .margin-bottom-20 { 235 | margin-bottom: 20px !important; 236 | } 237 | 238 | .margin-bottom-25 { 239 | margin-bottom: 25px !important; 240 | } 241 | 242 | .margin-bottom-30 { 243 | margin-bottom: 30px !important; 244 | } 245 | 246 | /* Margin Bottom Negative */ 247 | 248 | .margin-bottom-5-neg { 249 | margin-top: -5px !important; 250 | } 251 | 252 | .margin-bottom-10-neg { 253 | margin-bottom: -10px !important; 254 | } 255 | 256 | .margin-bottom-15-neg { 257 | margin-bottom: -15px !important; 258 | } 259 | 260 | .margin-bottom-20-neg { 261 | margin-bottom: -20px !important; 262 | } 263 | 264 | .margin-bottom-25-neg { 265 | margin-bottom: -25px !important; 266 | } 267 | 268 | .margin-bottom-30-neg { 269 | margin-bottom: -30px !important; 270 | } 271 | -------------------------------------------------------------------------------- /assets/css/highlight.css: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffffcc } 2 | .highlight .c { color: #aaaaaa; font-style: italic } /* Comment */ 3 | .highlight .err { color: #F00000; background-color: #F0A0A0 } /* Error */ 4 | .highlight .k { color: #0000aa } /* Keyword */ 5 | .highlight .cm { color: #aaaaaa; font-style: italic } /* Comment.Multiline */ 6 | .highlight .cp { color: #4c8317 } /* Comment.Preproc */ 7 | .highlight .c1 { color: #aaaaaa; font-style: italic } /* Comment.Single */ 8 | .highlight .cs { color: #0000aa; font-style: italic } /* Comment.Special */ 9 | .highlight .gd { color: #aa0000 } /* Generic.Deleted */ 10 | .highlight .ge { font-style: italic } /* Generic.Emph */ 11 | .highlight .gr { color: #aa0000 } /* Generic.Error */ 12 | .highlight .gh { color: #000080; font-weight: 600 } /* Generic.Heading */ 13 | .highlight .gi { color: #00aa00 } /* Generic.Inserted */ 14 | .highlight .go { color: #888888 } /* Generic.Output */ 15 | .highlight .gp { color: #555555 } /* Generic.Prompt */ 16 | .highlight .gs { font-weight: 600 } /* Generic.Strong */ 17 | .highlight .gu { color: #800080; font-weight: 600 } /* Generic.Subheading */ 18 | .highlight .gt { color: #aa0000 } /* Generic.Traceback */ 19 | .highlight .kc { color: #0000aa } /* Keyword.Constant */ 20 | .highlight .kd { color: #0000aa } /* Keyword.Declaration */ 21 | .highlight .kn { color: #0000aa } /* Keyword.Namespace */ 22 | .highlight .kp { color: #0000aa } /* Keyword.Pseudo */ 23 | .highlight .kr { color: #0000aa } /* Keyword.Reserved */ 24 | .highlight .kt { color: #00aaaa } /* Keyword.Type */ 25 | .highlight .m { color: #009999 } /* Literal.Number */ 26 | .highlight .s { color: #aa5500 } /* Literal.String */ 27 | .highlight .na { color: #1e90ff } /* Name.Attribute */ 28 | .highlight .nb { color: #00aaaa } /* Name.Builtin */ 29 | .highlight .nc { color: #00aa00; text-decoration: underline } /* Name.Class */ 30 | .highlight .no { color: #aa0000 } /* Name.Constant */ 31 | .highlight .nd { color: #888888 } /* Name.Decorator */ 32 | .highlight .ni { color: #800000; font-weight: 600 } /* Name.Entity */ 33 | .highlight .nf { color: #00aa00 } /* Name.Function */ 34 | .highlight .nn { color: #00aaaa; text-decoration: underline } /* Name.Namespace */ 35 | .highlight .nt { color: #1e90ff; font-weight: 600 } /* Name.Tag */ 36 | .highlight .nv { color: #aa0000 } /* Name.Variable */ 37 | .highlight .ow { color: #0000aa } /* Operator.Word */ 38 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 39 | .highlight .mf { color: #009999 } /* Literal.Number.Float */ 40 | .highlight .mh { color: #009999 } /* Literal.Number.Hex */ 41 | .highlight .mi { color: #009999 } /* Literal.Number.Integer */ 42 | .highlight .mo { color: #009999 } /* Literal.Number.Oct */ 43 | .highlight .sb { color: #aa5500 } /* Literal.String.Backtick */ 44 | .highlight .sc { color: #aa5500 } /* Literal.String.Char */ 45 | .highlight .sd { color: #aa5500 } /* Literal.String.Doc */ 46 | .highlight .s2 { color: #aa5500 } /* Literal.String.Double */ 47 | .highlight .se { color: #aa5500 } /* Literal.String.Escape */ 48 | .highlight .sh { color: #aa5500 } /* Literal.String.Heredoc */ 49 | .highlight .si { color: #aa5500 } /* Literal.String.Interpol */ 50 | .highlight .sx { color: #aa5500 } /* Literal.String.Other */ 51 | .highlight .sr { color: #009999 } /* Literal.String.Regex */ 52 | .highlight .s1 { color: #aa5500 } /* Literal.String.Single */ 53 | .highlight .ss { color: #0000aa } /* Literal.String.Symbol */ 54 | .highlight .bp { color: #00aaaa } /* Name.Builtin.Pseudo */ 55 | .highlight .vc { color: #aa0000 } /* Name.Variable.Class */ 56 | .highlight .vg { color: #aa0000 } /* Name.Variable.Global */ 57 | .highlight .vi { color: #aa0000 } /* Name.Variable.Instance */ 58 | .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ 59 | -------------------------------------------------------------------------------- /assets/css/vendor/Katex.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.11.1"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left} 2 | 3 | -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_AMS-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_AMS-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_AMS-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_AMS-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Caligraphic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Caligraphic-Bold.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Caligraphic-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Caligraphic-Bold.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Caligraphic-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Caligraphic-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Caligraphic-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Caligraphic-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Fraktur-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Fraktur-Bold.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Fraktur-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Fraktur-Bold.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Fraktur-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Fraktur-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Fraktur-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Fraktur-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-Bold.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-Bold.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-BoldItalic.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-BoldItalic.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-Italic.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-Italic.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Math-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Math-BoldItalic.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Math-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Math-BoldItalic.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Math-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Math-BoldItalic.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Math-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Math-Italic.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Math-Italic.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_SansSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_SansSerif-Bold.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_SansSerif-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_SansSerif-Bold.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_SansSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_SansSerif-Italic.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_SansSerif-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_SansSerif-Italic.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_SansSerif-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_SansSerif-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_SansSerif-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_SansSerif-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Script-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Script-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Script-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Script-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size1-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size1-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size1-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size1-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size2-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size2-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size2-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size3-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size3-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size3-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size4-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size4-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size4-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Typewriter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Typewriter-Regular.ttf -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Typewriter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Typewriter-Regular.woff -------------------------------------------------------------------------------- /assets/css/vendor/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/css/vendor/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /assets/img/backlinks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/backlinks.png -------------------------------------------------------------------------------- /assets/img/context_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/context_menu.png -------------------------------------------------------------------------------- /assets/img/context_menu_backlinks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/context_menu_backlinks.png -------------------------------------------------------------------------------- /assets/img/end_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/end_result.png -------------------------------------------------------------------------------- /assets/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/favicon.png -------------------------------------------------------------------------------- /assets/img/feed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/feed.png -------------------------------------------------------------------------------- /assets/img/firstdesign.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/firstdesign.jpg -------------------------------------------------------------------------------- /assets/img/fork_button.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/fork_button.jpg -------------------------------------------------------------------------------- /assets/img/highlighting.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/highlighting.JPG -------------------------------------------------------------------------------- /assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/logo.png -------------------------------------------------------------------------------- /assets/img/ongoing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/ongoing.png -------------------------------------------------------------------------------- /assets/img/pagepreview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/pagepreview.png -------------------------------------------------------------------------------- /assets/img/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/profile.png -------------------------------------------------------------------------------- /assets/img/profile_board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/profile_board.png -------------------------------------------------------------------------------- /assets/img/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/search.png -------------------------------------------------------------------------------- /assets/img/search_with_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/search_with_preview.png -------------------------------------------------------------------------------- /assets/img/site_without_profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/site_without_profile.png -------------------------------------------------------------------------------- /assets/img/transclusion.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raghudotcc/simply-jekyll/4ed6232bff82dd9f22360efaf90e1fc51dae180c/assets/img/transclusion.JPG -------------------------------------------------------------------------------- /assets/js/ContextMenu.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************************** 2 | * MIT License 3 | * 4 | * Copyright (c) 2020 Raghuveer S 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | * 24 | * 25 | * File: ContextMenu.js 26 | * Author@Raghuveer S 27 | * 28 | * This allows us to override the default contextmenu provided by the browser and replace 29 | * it with a custom context menu containing options to view related files and files 30 | * that link back to it(a.k.a backlinks). 31 | *********************************************************************************************/ 32 | 33 | (function (sj) { 34 | "use strict"; 35 | 36 | sj.addEvent = function (el, type, handler) { 37 | if (el.attachEvent) el.attachEvent("on" + type, handler); 38 | else el.addEventListener(type, handler); 39 | }; 40 | sj.removeEvent = function (el, type, handler) { 41 | if (el.detachEvent) el.detachEvent("on" + type, handler); 42 | else el.removeEventListener(type, handler); 43 | }; 44 | sj.onReady = function (ready) { 45 | // in case the document is already rendered 46 | if (document.readyState != "loading") ready(); 47 | // modern browsers 48 | else if (document.addEventListener) 49 | document.addEventListener("DOMContentLoaded", ready); 50 | // IE <= 8 51 | else 52 | document.attachEvent("onreadystatechange", function () { 53 | if (document.readyState == "complete") ready(); 54 | }); 55 | }; 56 | 57 | /* Helper function to check if the click event happened 58 | inside the specfied css element or outside */ 59 | function clickInsideElement(e, className) { 60 | var el = e.srsElement || e.target; 61 | if (el.classList.contains(className)) { 62 | return el; 63 | } else { 64 | while ((el = el.parentNode)) { 65 | if (el.classList && el.classList.contains(className)) { 66 | return el; 67 | } 68 | } 69 | } 70 | 71 | return false; 72 | } 73 | 74 | /* Helper function to get the position of the event */ 75 | function getPosition(e) { 76 | var posX = 0; 77 | var posY = 0; 78 | 79 | if (!e) var e = window.event; 80 | 81 | if (e.pageX || e.pageY) { 82 | posX = e.pageX; 83 | posY = e.pageY; 84 | } else if (e.clientX || e.clientY) { 85 | posX = 86 | e.clientX + 87 | document.body.scrollLeft + 88 | document.documentElement.scrollLeft; 89 | posY = 90 | e.clientY + document.body.srollTop + document.documentElement.scrollTop; 91 | } 92 | 93 | return { 94 | x: posX, 95 | y: posY, 96 | }; 97 | } 98 | 99 | /* Variables related to main context menu */ 100 | var contextMenuClassName = "context-menu"; 101 | var contextMenuItemClassName = "context-menu__item"; 102 | var contextMenuLinkClassName = "context-menu__link"; 103 | var contextMenuActive = "context-menu--active"; 104 | 105 | /* Variables related to context menu results */ 106 | var contextMenuResActive = "context-menu-res--active"; 107 | var contextMenuResClassName = "context-menu-res"; 108 | var contextMenuResLinkClassName = "context-menu-res__link"; 109 | 110 | var feedItemClassName = "feed-title-excerpt-block"; 111 | var feedItemInContext; 112 | 113 | var clickCoords; 114 | var clickCoordsX; 115 | var clickCoordsY; 116 | 117 | var menu = document.querySelector("#context-menu"); 118 | var menuItems = menu.querySelectorAll(".context-menu__item"); 119 | var menuState = 0; 120 | var menuWidth; 121 | var menuHeight; 122 | var menuPosition; 123 | var menuPositionX; 124 | var menuPositionY; 125 | 126 | var resMenu = document.querySelector("#context-menu-res"); 127 | var resMenuState = 0; 128 | var resMenuWidth; 129 | var resMenuHeight; 130 | 131 | var windowWidth; 132 | var windowHeight; 133 | 134 | function positionMenu(e) { 135 | clickCoords = getPosition(e); 136 | clickCoordsX = clickCoords.x; 137 | clickCoordsY = clickCoords.y; 138 | 139 | menuWidth = menu.offsetWidth + 4; 140 | menuHeight = menu.offsetHeight + 4; 141 | 142 | windowWidth = window.innerWidth; 143 | windowHeight = window.innerHeight; 144 | 145 | if (windowWidth - clickCoordsX < menuWidth) { 146 | menu.style.left = windowWidth - menuWidth + "px"; 147 | } else { 148 | menu.style.left = clickCoordsX + "px"; 149 | } 150 | 151 | menu.style.top = clickCoordsY + "px"; 152 | } 153 | 154 | function positionContextMenuRes() { 155 | resMenuWidth = resMenu.offsetWidth + 10; 156 | resMenuHeight = resMenu.offsetHeight + 10; 157 | 158 | windowWidth = window.innerWidth; 159 | windowHeight = window.innerHeight; 160 | 161 | if (windowWidth - clickCoordsX < resMenuWidth) { 162 | resMenu.style.left = windowWidth - resMenuWidth + "px"; 163 | } else { 164 | resMenu.style.left = clickCoordsX + "px"; 165 | } 166 | 167 | resMenu.style.top = clickCoordsY + "px"; 168 | } 169 | 170 | async function getRelatedHTML(dataUrl) { 171 | let response = await fetch(dataUrl); 172 | let responseText = response.text(); 173 | return responseText; 174 | } 175 | 176 | function showRelated(dataAction, dataUrl) { 177 | getRelatedHTML(dataUrl) 178 | .then(function (responseText) { 179 | let parser = new DOMParser(); 180 | let doc = parser.parseFromString(responseText, "text/html"); 181 | var relatedItems; 182 | var contextMenuResTitle; 183 | if (dataAction == "backlinks") { 184 | relatedItems = doc.getElementById("jekyll-seamless-backlinks"); 185 | contextMenuResTitle = document.createTextNode("Linked References"); 186 | } else { 187 | relatedItems = doc.getElementById("jekyll-seamless-relatedposts"); 188 | contextMenuResTitle = document.createTextNode("Related by Tag"); 189 | } 190 | var relatedItemHTMLTitle = document.createElement("p"); 191 | relatedItemHTMLTitle.setAttribute("class", "feed-relatedItems"); 192 | relatedItemHTMLTitle.style.fontSize = "14px"; 193 | relatedItemHTMLTitle.style.color = "#777"; 194 | relatedItemHTMLTitle.style.fontWeight = "600"; 195 | relatedItemHTMLTitle.style.fontFamily = 196 | "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif"; 197 | var relatedItemHTML = document.createElement("ul"); 198 | 199 | if (relatedItems == null) { 200 | contextMenuResTitle = document.createTextNode("Nothing Found "); 201 | relatedItemHTMLTitle.appendChild(contextMenuResTitle); 202 | } else { 203 | var urls = relatedItems.getElementsByTagName("a"); 204 | var titles = relatedItems.querySelectorAll(".related-title"); 205 | relatedItemHTMLTitle.appendChild(contextMenuResTitle); 206 | for (var i = 0; i < urls.length; i++) { 207 | var newLink = document.createElement("li"); 208 | newLink.style.listStyle = "none"; 209 | 210 | var newAnchor = document.createElement("a"); 211 | newAnchor.setAttribute("href", urls[i].getAttribute("href")); 212 | newAnchor.setAttribute("class", contextMenuResLinkClassName); 213 | newAnchor.appendChild(document.createTextNode(titles[i].innerHTML)); 214 | newAnchor.style.textDecoration = "none"; 215 | newAnchor.style.fontSize = "12px"; 216 | newAnchor.style.color = "#4183c4"; 217 | newAnchor.style.fontFamily = 218 | "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif"; 219 | 220 | newLink.appendChild(newAnchor); 221 | 222 | relatedItemHTML.appendChild(newLink); 223 | } 224 | } 225 | relatedItemHTML.prepend(relatedItemHTMLTitle); 226 | relatedItemHTML.style.marginLeft = "-20px"; 227 | relatedItemHTML.style.paddingRight = "10px"; 228 | toggleContextResMenuOn(); 229 | resMenu.appendChild(relatedItemHTML); 230 | positionContextMenuRes(); 231 | }) 232 | .catch(function (err) { 233 | console.warn("Error processing the post for contextmenu.", err); 234 | }); 235 | } 236 | 237 | function toggleMenuOn() { 238 | if (menuState !== 1) { 239 | menuState = 1; 240 | menu.classList.add(contextMenuActive); 241 | } 242 | } 243 | 244 | function toggleMenuOff() { 245 | if (menuState !== 0) { 246 | menuState = 0; 247 | menu.classList.remove(contextMenuActive); 248 | } 249 | } 250 | 251 | function toggleContextResMenuOn() { 252 | if (resMenuState !== 1) { 253 | while (resMenu.firstChild) { 254 | resMenu.removeChild(resMenu.lastChild); 255 | } 256 | resMenuState = 1; 257 | resMenu.classList.add(contextMenuResActive); 258 | } 259 | } 260 | 261 | function toggleContextResMenuOff() { 262 | if (resMenuState !== 0) { 263 | resMenuState = 0; 264 | resMenu.classList.remove(contextMenuResActive); 265 | while (resMenu.firstChild) { 266 | resMenu.removeChild(resMenu.lastChild); 267 | } 268 | } 269 | } 270 | 271 | function menuItemListener(link, e) { 272 | var dataUrl = feedItemInContext.getAttribute("data-url"); 273 | var dataAction = link.getAttribute("data-action"); 274 | switch (dataAction) { 275 | case "backlinks": 276 | showRelated(dataAction, dataUrl); 277 | break; 278 | case "related-posts": 279 | showRelated(dataAction, dataUrl); 280 | break; 281 | case "new-tab": 282 | window.open(dataUrl, "_blank"); 283 | break; 284 | case "copy-link": 285 | var textArea = document.createElement("textarea"); 286 | textArea.value = dataUrl; 287 | document.body.appendChild(textArea); 288 | textArea.select(); 289 | try { 290 | var successful = document.execCommand("copy"); 291 | var msg = successful ? "successful" : "unsuccessful"; 292 | } catch (err) { 293 | console.log("Copying Failed!" + err); 294 | } 295 | 296 | document.body.removeChild(textArea); 297 | break; 298 | default: 299 | break; 300 | } 301 | 302 | toggleMenuOff(); 303 | } 304 | 305 | sj.addEvent(window, "contextmenu", function (e) { 306 | feedItemInContext = clickInsideElement(e, feedItemClassName); 307 | if (feedItemInContext) { 308 | e.preventDefault(); 309 | toggleContextResMenuOff(); 310 | toggleMenuOn(); 311 | positionMenu(e); 312 | } else { 313 | feedItemInContext = null; 314 | toggleContextResMenuOff(); 315 | toggleMenuOff(); 316 | } 317 | }); 318 | 319 | sj.addEvent(window, "click", function (e) { 320 | var clickeElIsLink = clickInsideElement(e, contextMenuResLinkClassName); 321 | 322 | if (!clickeElIsLink) { 323 | var button = e.which || e.button; 324 | if (button === 1) { 325 | toggleContextResMenuOff(); 326 | } 327 | } 328 | }); 329 | 330 | sj.addEvent(window, "click", function (e) { 331 | var clickeElIsLink = clickInsideElement(e, contextMenuLinkClassName); 332 | 333 | if (clickeElIsLink) { 334 | e.preventDefault(); 335 | menuItemListener(clickeElIsLink, e); 336 | } else { 337 | var button = e.which || e.button; 338 | if (button === 1) { 339 | toggleMenuOff(); 340 | } 341 | } 342 | }); 343 | 344 | sj.addEvent(window, "keyup", function (e) { 345 | switch (e.keyCode) { 346 | case 27: 347 | toggleMenuOff(); 348 | break; 349 | } 350 | }); 351 | 352 | sj.addEvent(window, "resize", function (e) { 353 | toggleMenuOff(); 354 | toggleContextResMenuOff(); 355 | }); 356 | })((window.sj = window.sj || {})); 357 | -------------------------------------------------------------------------------- /assets/js/SearchData.json: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /assets/js/SearchData.json 3 | --- 4 | 5 | { 6 | {%- assign i = 0 -%} 7 | {%- for post in site.posts -%} 8 | 9 | "{{ i }}": { 10 | "doc": {{ post.title | strip_html | escape | jsonify }}, 11 | "title": {{ post.title | strip_html | escape | jsonify }}, 12 | "content": {{ post.content | replace: ' 9 | .date-content a { 10 | text-decoration: none; 11 | color: #4183c4; 12 | } 13 | 14 | .date-content a:hover { 15 | text-decoration: underline; 16 | color: #4183c4; 17 | } 18 | 19 | 20 |
21 | {% assign postsByDay = 22 | site.posts | group_by_exp:"post", "post.date | date: '%d-%B-%Y'" %} 23 | 24 | {% for day in postsByDay %} 25 |

{{ day.name }}

26 | {% for post in day.items %} 27 |
  • {{ post.title }}
  • 28 | {% endfor %} 29 | {% endfor %} 30 | 31 |
    32 |
    33 |
    34 | -------------------------------------------------------------------------------- /debug.yml: -------------------------------------------------------------------------------- 1 | name: Knowledge Continuum [DEBUG MODE] 2 | debug: true 3 | baseurl: "" 4 | url: http://127.0.0.1:4000 -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | --- 2 | # Feel free to add content and custom Front Matter to this file. 3 | # To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults 4 | 5 | layout: Post 6 | permalink: / 7 | --- 8 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | # The following redirect is intended for use with most SPAs that handle 2 | # routing internally. 3 | [[redirects]] 4 | from = "/*" 5 | to = "/index.html" 6 | status = 200 7 | 8 | [[headers]] 9 | # Define which paths this specific [[headers]] block will cover. 10 | for = "/*" 11 | [headers.values] 12 | Access-Control-Allow-Origin = "*" -------------------------------------------------------------------------------- /notes.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: Post 3 | permalink: /notes 4 | --- -------------------------------------------------------------------------------- /tags.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: Post 3 | title: By Tags 4 | permalink: /tags/ 5 | content-type: eg 6 | --- 7 | 8 | 9 |
    10 |
    11 | {% for tag in site.tags %} 12 | {%- assign conc = tag | first -%} 13 | {%- if conc != 'Favorite' -%} 14 |

    {{ conc }}

    15 | {% for post in tag.last %} 16 |
  • {{ post.title }}
  • 17 | {% endfor %} 18 | {%- endif -%} 19 | {% endfor %} 20 |
    21 |
    22 |
    23 | -------------------------------------------------------------------------------- /utilities/Autocomplete.ts: -------------------------------------------------------------------------------- 1 | /************************************************************************************************ 2 | * 3 | * MIT License 4 | * 5 | * Copyright (c) 2020 Raghuveer S 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | * 25 | * 26 | * Author@Raghuveer S, 2019 27 | * This is a plugin that I use with VS Code to enable autocompletion of 28 | * filenames when using wiki-style link syntax "[[" 29 | * 30 | * How to use this file: 31 | * --------------------- 32 | * Disclaimer: This is not a published plugin i.e., it is not present in the VS Code Marketplace. 33 | * 1. Create a VSCode Plugin template using Yeoman. (This can be googled, it's a very simple step) 34 | * 2. Now open the template folder that you created. 35 | * 3. Copy this file to the 'src' folder inside the template folder and rename it to 'extension.ts'. 36 | * If there is already a file by that name in the 'src', just replace it with this. 37 | * 4. Now copy the entire template folder to C:/Users//.vscode/ 38 | * 5. Restart vscode and you should now find that when you are working with 'simply jekyll' posts, 39 | * you have autocompletion ready to fire. 40 | **************************************************************************************************/ 41 | 42 | import * as vscode from 'vscode'; 43 | import * as fs from 'fs'; 44 | import * as path from 'path'; 45 | 46 | export function activate(context: vscode.ExtensionContext) { 47 | const provider = new IncludeCompletionProvider(); 48 | context.subscriptions.push(vscode.languages.registerCompletionItemProvider('markdown', provider, '[')); 49 | } 50 | 51 | 52 | 53 | class IncludeCompletionProvider implements vscode.CompletionItemProvider, vscode.Disposable { 54 | private titles: string[] = []; 55 | private watcher: vscode.FileSystemWatcher; 56 | 57 | constructor() { 58 | this.updateTitles(); 59 | 60 | this.watcher = vscode.workspace.createFileSystemWatcher("**/_site/Autocomplete.txt"); 61 | this.watcher.onDidCreate(()=> this.updateTitles()); 62 | this.watcher.onDidChange(()=> this.updateTitles()); 63 | this.watcher.onDidDelete(()=> this.updateTitles()); 64 | } 65 | 66 | public dispose() { 67 | this.watcher.dispose(); 68 | } 69 | 70 | public provideCompletionItems (document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken) { 71 | let linePrefix = document.lineAt(position).text.substr(0, position.character); 72 | if (!linePrefix.endsWith('[[')) { 73 | return undefined; 74 | } 75 | 76 | let completionItemArray: vscode.CompletionItem[] = []; 77 | 78 | for (let entry of this.titles) { 79 | completionItemArray.push(new vscode.CompletionItem(entry, vscode.CompletionItemKind.Text)); 80 | } 81 | 82 | return completionItemArray; 83 | } 84 | 85 | private async updateTitles() { 86 | if (!vscode.workspace.workspaceFolders) { 87 | return undefined; 88 | } 89 | 90 | const folderUri = vscode.workspace.workspaceFolders[0].uri; 91 | const fileUri = folderUri.with({ path: path.posix.join(folderUri.path, '_site/autocomplete.txt') }); 92 | 93 | let titles = undefined; 94 | 95 | const readData = await vscode.workspace.fs.readFile(fileUri); 96 | titles = Buffer.from(readData).toString('utf8').split(";"); 97 | 98 | this.titles = titles; 99 | } 100 | 101 | 102 | } 103 | -------------------------------------------------------------------------------- /utilities/NotionToJekyll.py: -------------------------------------------------------------------------------- 1 | ##################################################################################################### 2 | # 3 | # MIT License 4 | # 5 | # Copyright (c) 2020 Raghuveer S 6 | # 7 | # Permission is hereby granted, free of charge, to any person obtaining a copy 8 | # of this software and associated documentation files (the "Software"), to deal 9 | # in the Software without restriction, including without limitation the rights 10 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | # copies of the Software, and to permit persons to whom the Software is 12 | # furnished to do so, subject to the following conditions: 13 | # 14 | # The above copyright notice and this permission notice shall be included in all 15 | # copies or substantial portions of the Software. 16 | # 17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | # SOFTWARE. 24 | # 25 | # 26 | # Author@Raghuveer S 27 | # This is a file I use with Notion to automatically convert my Notion documents to Blogposts 28 | # 29 | # How to use this file: 30 | # --------------------- 31 | # Disclaimer: 'TOKEN_V2' and 'BLOG_PAGE_ID' are different for each individual. 32 | # 1. Get the 'token_v2' by inspecting notion on your browser. You should find it in the 33 | # application tab in the browser inspector. 34 | # 2. Create a page called 'Blog' on Notion. 35 | # 3. Now note down the long string in the url that comes after '?v='. 36 | # 4. Replace the TOKEN_V2 and BLOG_PAGE_ID below with the noted strings. 37 | # 5. Create a inline table with the following views: 1) Finished 2) Drafts 3) Archived 38 | # 6. Write your post and tag them appropriately as finished/drafts/archived 39 | # 7. Now run the python file using 'python3 NotionToJekyll.py' 40 | # 8. You can now commit the file to github. 41 | # Note: Remember that the steps from 1st to 5th are just one time steps. 42 | ##################################################################################################### 43 | 44 | from notion.client import NotionClient 45 | import os 46 | import datetime 47 | 48 | class NotionJekyll: 49 | def __init__(self, 50 | token_v2="TOKEN_V2", 51 | blog_page_id="BLOG_PAGE_ID"): 52 | self.client = NotionClient(token_v2=token_v2) 53 | self.text = '' 54 | self.notion_to_md(blog_page_id) 55 | 56 | def indent(self, depth): 57 | spaces = '' 58 | for level in range(depth): 59 | spaces = spaces + " " 60 | 61 | return spaces 62 | 63 | def md_gen_util(self, post, depth): 64 | for content in post.children: 65 | if content.type == 'header': 66 | self.text = self.text + '\n# ' + content.title + '\n\n' 67 | elif content.type == 'sub_header': 68 | self.text = self.text + '\n## ' + content.title + '\n\n' 69 | elif content.type == 'sub_sub_header': 70 | self.text = self.text + '\n### ' + content.title + '\n\n' 71 | elif content.type == 'table_of_contents': 72 | self.text = self.text + '\n* TOC\n{:toc}\n\n' 73 | elif content.type == 'code': 74 | self.text = self.text + '\n```' + content.language + '\n' + content.title + '\n```\n\n' 75 | elif content.type == 'quote': 76 | self.text = self.text + '\n> ' + content.title + '\n' 77 | elif content.type == 'image': 78 | self.text = self.text + '\n![' + content.id + '](' + content.source + ')\n\n' 79 | elif content.type == 'bulleted_list': 80 | self.text = self.text + self.indent(depth) + '- ' + content.title + '\n' 81 | elif content.type == 'numbered_list': 82 | self.text = self.text + self.indent(depth) + '1. ' + content.title + '\n' 83 | elif content.type == 'divider': 84 | self.text = self.text + '\n---' + '\n\n' 85 | elif content.type == 'callout': 86 | self.text = self.text + '\n{:.boxit}\n' + content.title + '\n\n' 87 | elif content.type == 'todo': 88 | self.text = self.text + '\n[ ] ' + content.title + '\n' 89 | elif content.type == 'toggle': 90 | self.text = self.text + self.indent(depth) + content.title + '\n' 91 | elif content.type == 'text': 92 | self.text = self.text + "\n" +self.indent(depth) + content.title + '\n\n' 93 | else: 94 | print(content.type) 95 | 96 | # Recursion for child blocks 97 | if content.children != None: 98 | self.md_gen(content, depth + 1) 99 | 100 | 101 | def md_gen(self, post, depth): 102 | if post.type == 'toggle': 103 | self.text = self.text + '
    \n' + post.title + '\n' 104 | self.md_gen_util(post, depth) 105 | self.text = self.text + '
    \n' 106 | else: 107 | self.md_gen_util(post, depth) 108 | 109 | 110 | def notion_to_md(self, blog_page_id): 111 | cv = self.client.get_collection_view(blog_page_id) 112 | posts = list(filter(lambda row: row.status == ['finished'], cv.collection.get_rows())) 113 | 114 | for post in posts: 115 | tags = post.get_property('Tags') 116 | tags_str = ' '.join(tags) 117 | 118 | self.text = """---\ntitle: %s\ntags: %s \n---\n""" % (post.title, tags_str) 119 | 120 | self.md_gen(post, depth = 0) 121 | 122 | title = post.title.replace(' ', '-') 123 | title = title.replace('—', '') 124 | title = title.replace('--', '-') 125 | title = title.replace(',', '') 126 | title = title.replace(';', '') 127 | title = title.replace('?', '') 128 | title = title.replace('%', '') 129 | title = title.replace('\'', '') 130 | title = title.replace('"', '') 131 | title = title.lower() 132 | 133 | folderpath = os.path.join(os.getcwd(), "_posts/") 134 | if not os.path.exists(folderpath): 135 | os.makedirs(folderpath) 136 | print('Created: %s', folderpath) 137 | 138 | 139 | with open(folderpath + post.get_property('Created').strftime("%Y-%m-%d") + "-" + 140 | title + ".md", 'w', encoding='utf-8') as file: 141 | file.write(self.text) 142 | 143 | 144 | NotionJekyll() 145 | --------------------------------------------------------------------------------