123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- <!DOCTYPE html>
- <html lang="{{ .Site.LanguageCode | default "en-us" }}">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="generator" content="Source Themes Academic {{ .Site.Data.academic.version }}">
- {{ .Hugo.Generator }}
- {{ with .Site.Params.name }}<meta name="author" content="{{ . }}">{{ end }}
- {{ $scr := .Scratch }}
- {{/* Generate page description. */}}
- {{ $scr.Set "description" .Site.Params.role }}
- {{ if .Params.abstract }}
- {{ $scr.Set "description" .Params.abstract }}
- {{ else if .Params.summary }}
- {{ $scr.Set "description" .Params.summary }}
- {{ else if .IsPage }}
- {{ $scr.Set "description" .Summary }}
- {{ end }}
- <meta name="description" content="{{ $scr.Get "description" }}">
- {{ range .Translations }}
- <link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
- {{ end }}
- <link rel="alternate" hreflang="{{ .Site.LanguageCode | default "en-us" }}" href="{{ .Permalink }}">
- {{ partial "css/parse_theme.css" . }}
- {{ $css := .Site.Data.assets.css }}
- {{ $js := .Site.Data.assets.js }}
- {{ if ne ($scr.Get "primary") "#fff" }}
- <meta name="theme-color" content="{{ $scr.Get "primary" }}">
- {{ end }}
- {{/* Attempt to load local vendor CSS, otherwise load from CDN. */}}
- {{ $scr.Set "vendor_css_filename" "main.min.css" }}
- {{ $scr.Set "vendor_js_filename" "main.min.js" }}
- {{ if and (fileExists (printf "static/css/vendor/%s" ($scr.Get "vendor_css_filename"))) (fileExists (printf "static/js/vendor/%s" ($scr.Get "vendor_js_filename"))) }}
- {{ $scr.Set "use_cdn" 0 }}
- <link rel="stylesheet" href="{{ printf "/css/vendor/%s" ($scr.Get "vendor_css_filename") | relURL }}">
- {{ else }}
- {{ $scr.Set "use_cdn" 1 }}
- {{ printf "<link rel=\"stylesheet\" href=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\">" (printf $css.bootstrap.url $css.bootstrap.version) $css.bootstrap.sri | safeHTML }}
- {{ printf "<link rel=\"stylesheet\" href=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\">" (printf $css.academicons.url $css.academicons.version) $css.academicons.sri | safeHTML }}
- {{ printf "<link rel=\"stylesheet\" href=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\">" (printf $css.fontAwesome.url $css.fontAwesome.version) $css.fontAwesome.sri | safeHTML }}
- {{ printf "<link rel=\"stylesheet\" href=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\">" (printf $css.fancybox.url $css.fancybox.version) $css.fancybox.sri | safeHTML }}
- {{/* Default to enabling highlighting, but allow the user to override it in .Params or .Site.Params.
- Use $scr to store "highlight_enabled", so that we can read it again in footer.html. */}}
- {{ $scr.Set "highlight_enabled" true }}
- {{ if isset .Params "highlight" }}
- {{ $scr.Set "highlight_enabled" .Params.highlight }}
- {{ else if isset .Site.Params "highlight" }}
- {{ $scr.Set "highlight_enabled" .Site.Params.highlight }}
- {{ end }}
- {{ if ($scr.Get "highlight_enabled") }}
- {{ $v := $css.highlight.version }}
- {{ with .Site.Params.highlight_style }}
- {{ printf "<link rel=\"stylesheet\" href=\"%s\" crossorigin=\"anonymous\">" (printf $css.highlight.url $css.highlight.version .) | safeHTML }}
- {{ else }}
- {{ if eq ($scr.Get "light") true }}
- {{ printf "<link rel=\"stylesheet\" href=\"%s\" crossorigin=\"anonymous\">" (printf $css.highlight.url $css.highlight.version "github") | safeHTML }}
- {{ else }}
- {{ printf "<link rel=\"stylesheet\" href=\"%s\" crossorigin=\"anonymous\">" (printf $css.highlight.url $css.highlight.version "dracula") | safeHTML }}
- {{ end }}
- {{ end }}
- {{ end }}
- {{ if or (eq .Site.Params.map 2) (eq .Site.Params.map 3) }}
- {{ printf "<link rel=\"stylesheet\" href=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\">" (printf $css.leaflet.url $css.leaflet.version) $css.leaflet.sri | safeHTML }}
- {{ end }}
- {{ if eq .Site.Params.search.engine 2 }}
- {{ printf "<link rel=\"stylesheet\" href=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\">" (printf $css.instantsearch.url $css.instantsearch.version) $css.instantsearch.sri | safeHTML }}
- {{ printf "<link rel=\"stylesheet\" href=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\">" (printf $css.instantsearchTheme.url $css.instantsearchTheme.version) $css.instantsearchTheme.sri | safeHTML }}
- {{ end }}
- {{ end }}
- {{/* We cannot use SRI with Google Fonts because the CSS is dynamically generated according to the user agent. */}}
- {{ with ($scr.Get "google_fonts") }}
- <link rel="stylesheet" href="{{ printf "//fonts.googleapis.com/css?family=%s" . }}">
- {{ end }}
- <link rel="stylesheet" href="{{ "styles.css" | relLangURL }}">
- {{ range .Site.Params.custom_css }}
- <link rel="stylesheet" href="{{ "/css/" | relURL }}{{ . }}">
- {{ end }}
- {{ if not .Site.IsServer }}
- {{ if .Site.GoogleAnalytics }}
- <script>
- window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
- ga('create', '{{ .Site.GoogleAnalytics }}', 'auto');
- {{ if .Site.Params.privacy_pack }}ga('set', 'anonymizeIp', true);{{ end }}
- ga('require', 'eventTracker');
- ga('require', 'outboundLinkTracker');
- ga('require', 'urlChangeTracker');
- ga('send', 'pageview');
- </script>
- <script async src="//www.google-analytics.com/analytics.js"></script>
- {{ if ($scr.Get "use_cdn") }}
- {{ printf "<script async src=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" (printf $js.autotrack.url $js.autotrack.version) $js.autotrack.sri | safeHTML }}
- {{ end }}
- {{ end }}
- {{ end }}
- {{ if or .Site.RSSLink .RSSLink }}
- <link rel="alternate" href="{{ .RSSLink | default .Site.RSSLink }}" type="application/rss+xml" title="{{ .Site.Title }}">
- <link rel="feed" href="{{ .RSSLink | default .Site.RSSLink }}" type="application/rss+xml" title="{{ .Site.Title }}">
- {{ end }}
- <link rel="manifest" href="{{ "site.webmanifest" | relURL }}">
- <link rel="icon" type="image/png" href="{{ "/img/icon.png" | relURL }}">
- <link rel="apple-touch-icon" type="image/png" href="{{ "/img/icon-192.png" | relURL }}">
- <link rel="canonical" href="{{ .Permalink }}">
- <meta property="twitter:card" content="summary_large_image">
- {{ range where $.Site.Params.social ".icon" "twitter" }}
- <meta property="twitter:site" content="@{{ replaceRE "^//twitter.com/([^/]+)" "$1" .link }}">
- <meta property="twitter:creator" content="@{{ replaceRE "^//twitter.com/([^/]+)" "$1" .link }}">
- {{ end }}
- <meta property="og:site_name" content="{{ .Site.Title }}">
- <meta property="og:url" content="{{ .Permalink }}">
- <meta property="og:title" content="{{ if not .IsHome }}{{ .Title }} | {{ end }}{{ .Site.Title }}">
- <meta property="og:description" content="{{ $scr.Get "description" }}">
- {{- with .Params.header.image }}<meta property="og:image" content="{{ printf "img/%s" . | absURL }}">{{end}}
- <meta property="og:locale" content="{{ .Site.LanguageCode | default "en-us" }}">
- {{ if .IsPage }}
- {{ if not .PublishDate.IsZero }}<meta property="article:published_time" content="{{ .PublishDate.Format "2006-01-02T15:04:05-07:00" | safeHTML }}">
- {{ else if not .Date.IsZero }}<meta property="article:published_time" content="{{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }}">{{ end }}
- {{ if not .Lastmod.IsZero }}<meta property="article:modified_time" content="{{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }}">{{ end }}
- {{ else }}
- {{ if not .Date.IsZero }}<meta property="og:updated_time" content="{{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }}">{{ end }}
- {{ end }}
- {{ partial "cookie_consent" . }}
- {{ partial "head_custom" . }}
- <title>{{ if not .IsHome }}{{ .Title }} | {{ end }}{{ .Site.Title }}</title>
- </head>
- <body id="top" data-spy="scroll" data-target="{{ if or .IsHome .Params.widgets }}#navbar-main{{ else }}#toc{{ end }}" data-offset="71" {{ if not ($scr.Get "light") }}class="dark"{{ end }}>
|