{% extends "_base.html" %} {% block page %}post{% endblock page %} {% block lang -%} {%- set blog_section_path = config.extra.blog_section_path | trim_start_matches(pat="/") -%} {%- set section_md_path = blog_section_path ~ "/_index.md" -%} {%- set section = get_section(path=section_md_path, metadata_only=true) -%} {%- if page.extra.lang %}{{page.extra.lang}}{% elif section.extra.lang %}{{section.extra.lang}}{% else %}{{page.lang}}{% endif -%} {%- endblock lang %} {% block title %}{{ page.title }}{% endblock title %} {% block desc %} {% if page.summary %} {% set desc = page.summary %} {% elif page.description %} {% set desc = page.description %} {% endif %} {% if desc %} <meta name="description" content="{{ desc }}"> {% endif %} {% endblock desc %} {% block head %} {% if config.markdown.highlight_theme == "css" %} <link id="hl" rel="stylesheet" type="text/css" href="/hl-light.css" /> {% endif %} {% if page.extra.math %} <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/katex.min.css" integrity="sha384-3UiQGuEI4TTMaFmGIZumfRPtfKQ3trwQE2JgosJxCnGmQpL/lJdjpcHkaaFwHlcI" crossorigin="anonymous"> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/katex.min.js" integrity="sha384-G0zcxDFp5LWZtDuRMnBkk3EphCK1lhEf4UEyEM693ka574TZGwo4IWwS6QLzM/2t" crossorigin="anonymous"></script> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/contrib/auto-render.min.js" integrity="sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05" crossorigin="anonymous"></script> <script> document.addEventListener("DOMContentLoaded", function () { renderMathInElement(document.body, { delimiters: [ { left: '$$', right: '$$', display: true }, { left: '$', right: '$', display: false }, { left: '\\(', right: '\\)', display: false }, { left: '\\[', right: '\\]', display: true } ], throwOnError: false }); }); </script> {% endif %} {% endblock head %} {% block content %} {% include "_header.html" %} <div id="wrapper"> <div id="blank"></div> <aside {% if config.extra.blur_effect %} class="blur" {% endif %}> {% if page.extra.toc is defined %}{% set show_toc = page.extra.toc %}{% else %}{% set show_toc = config.extra.toc %}{% endif %} {% if show_toc and page.toc %} <nav> <ul> {% for h2 in page.toc %} <li> <a class="h2" href="#{{ h2.id | safe }}">{{ h2.title }}</a> {% if h2.children %} <ul> {% for h3 in h2.children %} <li> <a class="h3" href="#{{ h3.id | safe }}">{{ h3.title }}</a> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> </nav> {% endif %} {% if config.extra.back_to_top %} <button id="back-to-top" aria-label="back to top"> {% set icon = load_data(path="static/icon/arrow-up.svg") %} {{ icon | safe }} </button> {% endif %} </aside> <main> <div> {% if page.extra.copy is defined %}{% set allow_copy = page.extra.copy %}{% else %}{% set allow_copy = config.extra.copy %}{% endif %} {% if allow_copy %} {% set copy_icon = load_data(path="static/icon/copy.svg") %} {% set check_icon = load_data(path="static/icon/check.svg") %} <div id="copy-cfg" style="display: none;" data-copy-icon="{{ copy_icon }}" data-check-icon="{{ check_icon }}"></div> {% endif %} {% set backlink_icon = load_data(path="static/icon/backlink.svg") %} <article class="prose" data-backlink-icon="{{ backlink_icon }}"> <h1>{{ page.title }}</h1> <div id="post-info"> <div id="date"> <span id="publish">{{ page.date | date }}</span> {% if page.updated and page.updated != page.date -%} <span>Updated on <span id="updated">{{ page.updated | date }}</span></span> {% endif -%} </div> {% if page.extra.display_tags is defined %}{% set display_tags = page.extra.display_tags %}{% elif config.extra.display_tags is defined %}{% set display_tags = config.extra.display_tags %}{% else %}{% set display_tags = true %}{% endif %} {% if page.taxonomies.tags is defined and display_tags == true %} <div id="tags"> {% for tag in page.taxonomies.tags -%} {% set tag_slugify = tag | slugify -%} <a href="{{ config.base_url ~ '/tags/' ~ tag_slugify }}"><span>#</span>{{ tag }}</a> {%- endfor %} </div> {% endif %} </div> {% if page.extra.outdate_alert is defined %}{% set show_outdate_alert = page.extra.outdate_alert %}{% else %}{% set show_outdate_alert = config.extra.outdate_alert %}{% endif %} {% if page.extra.outdate_alert_days is defined %}{% set outdate_alert_days = page.extra.outdate_alert_days %}{% else %}{% set outdate_alert_days = config.extra.outdate_alert_days %}{% endif %} {% if show_outdate_alert -%} <blockquote id="outdate_alert" class="callout alert hidden" data-days="{{ outdate_alert_days }}" data-alert-text-before="{{ config.extra.outdate_alert_text_before }}" data-alert-text-after="{{ config.extra.outdate_alert_text_after }}"> {% set icon = load_data(path="static/icon/alert.svg") %} <div class="icon"> {{ icon | safe }} </div> <div class="content"></div> </blockquote> {% endif %} {% if page.extra.truncate_summary is defined %}{% set truncate_summary = page.extra.truncate_summary %}{% elif config.extra.truncate_summary is defined %}{% set truncate_summary = config.extra.truncate_summary %}{% else %}{% set truncate_summary = false %}{% endif %} {% if truncate_summary == true and page.summary %} {{ page.content | trim_start_matches(pat=page.summary) | safe }} {% else %} {{ page.content | safe }} {% endif %} </article> {% if page.extra.comment is defined %}{% set show_comment = page.extra.comment %}{% else %}{% set show_comment = config.extra.comment %}{% endif %} {% if show_comment %} <div class="giscus"></div> {% include "_giscus_script.html" %} {% endif %} </div> {% include "_footer.html" %} </main> </div> {% endblock content %} {% block script %} <script src="/js/lightense.min.js"></script> {% if page.extra.mermaid %} <script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; mermaid.initialize({ startOnLoad: true }); </script> {% endif %} {% endblock script %}