154 lines
6.5 KiB
HTML
154 lines
6.5 KiB
HTML
{% 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 %} |