<meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> {{- if hugo.IsProduction | or (eq site.Params.env "production") }} <meta name="robots" content="index, follow"> {{- else }} <meta name="robots" content="noindex, nofollow"> {{- end }} {{- /* Title */}} <title>{{ if .IsHome }}{{ else }}{{ if .Title }}{{ .Title }} | {{ end }}{{ end }}{{ site.Title }}</title> {{- /* Meta */}} {{- if .IsHome }} {{ with site.Params.keywords -}}<meta name="keywords" content="{{- range $i, $e := . }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}">{{ end }} {{- else }} <meta name="keywords" content="{{ if .Params.keywords -}} {{- range $i, $e := .Params.keywords }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- else }} {{- range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- end -}}"> {{- end }} <meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if or .IsPage .IsSection}} {{- .Summary | default (printf "%s - %s" .Title site.Title) }}{{- else }} {{- with site.Params.description }}{{ . }}{{- end }}{{- end }}{{- end -}}"> <meta name="author" content="{{ (partial "author.html" . ) }}"> <link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}"> {{- if site.Params.analytics.googlesiteVerificationTag }} <meta name="google-site-verification" content="{{ site.Params.analytics.googlesiteVerificationTag }}"> {{- end }} {{- if site.Params.analytics.yandexsiteVerificationTag }} <meta name="yandex-verification" content="{{ site.Params.analytics.yandexsiteVerificationTag }}"> {{- end }} {{- if site.Params.analytics.bingsiteVerificationTag }} <meta name="msvalidate.01" content="{{ site.Params.analytics.bingsiteVerificationTag }}"> {{- end }} {{- /* Styles */}} {{- $theme_vars := (resources.Get "css/core/theme-vars.css") }} {{- $reset := (resources.Get "css/core/reset.css") }} {{- $media := (resources.Get "css/core/zmedia.css") }} {{- $common := (resources.Match "css/common/*.css") | resources.Concat "assets/css/common.css" }} {{- /* include `an-old-hope` if hljs is on */}} {{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default false) }} {{- $hljs := (cond ($isHLJSdisabled) (" " | resources.FromString "assets/css/hljs-blank.css") (resources.Get "css/hljs/an-old-hope.min.css")) }} {{- /* order is important */}} {{- $core := (slice $theme_vars $reset $common $hljs $media) | resources.Concat "assets/css/core.css" }} {{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" }} {{- /* bundle all required css */}} {{- /* Add extended css after theme style */ -}} {{- $stylesheet := (slice $core $extended) | resources.Concat "assets/css/stylesheet.css" | minify }} {{- if not site.Params.assets.disableFingerprinting }} {{- $stylesheet := $stylesheet | fingerprint }} <link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" integrity="{{ $stylesheet.Data.Integrity }}" rel="preload stylesheet" as="style"> {{- else }} <link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style"> {{- end }} {{- /* Search */}} {{- if (eq .Layout `search`) -}} <link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json"> {{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" site.Params.fuseOpts)) }} {{- $fusejs := resources.Get "js/fuse.basic.min.js" }} {{- if not site.Params.assets.disableFingerprinting }} {{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify | fingerprint }} <script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script> {{- else }} {{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify }} <script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script> {{- end }} {{- end -}} {{- /* Highlight.js */}} {{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default .Params.disableHLJS ) }} {{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }} {{- if not site.Params.assets.disableFingerprinting }} {{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify | fingerprint }} <script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}" onload="hljs.initHighlightingOnLoad();"></script> {{- else }} {{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify }} <script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></script> {{- end }} {{- end }} {{- /* Favicons */}} <link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}"> <link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}"> <link rel="icon" type="image/png" sizes="32x32" href="{{ site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL }}"> <link rel="apple-touch-icon" href="{{ site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL }}"> <link rel="mask-icon" href="{{ site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL }}"> <meta name="theme-color" content="{{ site.Params.assets.theme_color | default "#2e2e33" }}"> <meta name="msapplication-TileColor" content="{{ site.Params.assets.msapplication_TileColor | default "#2e2e33" }}"> {{- /* RSS */}} {{ range .AlternativeOutputFormats -}} <link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}"> {{ end -}} {{- range .AllTranslations -}} <link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}"> {{ end -}} <noscript> <style> #theme-toggle, .top-link { display: none; } </style> {{- if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark")) }} <style> @media (prefers-color-scheme: dark) { :root { --theme: rgb(29, 30, 32); --entry: rgb(46, 46, 51); --primary: rgb(218, 218, 219); --secondary: rgb(155, 156, 157); --tertiary: rgb(65, 66, 68); --content: rgb(196, 196, 197); --hljs-bg: rgb(46, 46, 51); --code-bg: rgb(55, 56, 62); --border: rgb(51, 51, 51); } .list { background: var(--theme); } .list:not(.dark)::-webkit-scrollbar-track { background: 0 0; } .list:not(.dark)::-webkit-scrollbar-thumb { border-color: var(--theme); } } </style> {{- end }} </noscript> {{- partial "extend_head.html" . -}} {{- /* Misc */}} {{- if hugo.IsProduction | or (eq site.Params.env "production") }} {{- template "_internal/google_analytics.html" . }} {{- template "partials/templates/opengraph.html" . }} {{- template "partials/templates/twitter_cards.html" . }} {{- template "partials/templates/schema_json.html" . }} {{- end -}}