Better SEO, OpenGraph, schema.org and clean generated code (#481)

This commit is contained in:
José M. Requena Plens 2021-12-31 17:46:42 +01:00 committed by GitHub
parent 7f532552e4
commit b950fc3fdb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 896 additions and 602 deletions

View File

@ -15,4 +15,6 @@ group :jekyll_plugins do
gem 'jemoji'
gem 'unicode_utils'
gem 'webrick'
gem 'htmlcompressor'
gem 'htmlbeautifier'
end

View File

@ -13,6 +13,7 @@ footer_text: >
Powered by <a href="http://jekyllrb.com/" target="_blank">Jekyll</a> with <a href="https://github.com/alshedivat/al-folio">al-folio</a> theme.
Hosted by <a href="https://pages.github.com/" target="_blank">GitHub Pages</a>.
Photos from <a href="https://unsplash.com" target="_blank">Unsplash</a>.
keywords: jekyll, jekyll-theme, academic-website, portfolio-website # add your own keywords or leave empty
lang: en # the language of your site (for example: en, fr, cn, ru, etc.)
icon: 🔥 # the emoji used as the favicon
@ -40,10 +41,11 @@ max_width: 800px
# TODO: add layout settings (single page vs. multi-page)
# -----------------------------------------------------------------------------
# Open Graph
# Open Graph & Schema.org
# -----------------------------------------------------------------------------
# Display links to the page with a preview object on social media.
serve_og_meta: false # Include Open Graph meta tags in the HTML head
serve_schema_org: false # Include Schema.org in the HTML head
og_image: # The site-wide (default for all links) Open Graph preview image
# -----------------------------------------------------------------------------
@ -72,8 +74,10 @@ rss_icon: true
contact_note: >
You can even add a little note about which of these is the best way to reach you.
google_analytics: UA-XXXXXXXXX # out your google-analytics code
panelbear_analytics: XXXXXXXXX # panelbear analytics site ID
google_analytics: # your google-analytics ID (format: UA-XXXXXXXXX)
google_site_verification: # your google-site-verification ID (Google Search Console)
bing_site_verification: # out your bing-site-verification ID (Bing Webmaster)
panelbear_analytics: # panelbear analytics site ID (format: XXXXXXXXX)
# -----------------------------------------------------------------------------
# Blog
@ -158,10 +162,26 @@ defaults:
path: "assets/**/*.*"
values:
sitemap: false
# Extras
github: [metadata]
# -----------------------------------------------------------------------------
# Jekyll optimization
# -----------------------------------------------------------------------------
# HTML remove comments (<!-- .... -->)
remove_HTML_comments: false
# HTML beautifier (_plugins/beautify.rb) / https://github.com/threedaymonk/htmlbeautifier
beautify: false # This function has conflict with the code snippets, they can be displayed incorrectly
# HTML minify (_plugins/minify.rb) Thanks to: https://www.ffbit.com/blog/2021/03/17/html-minification-in-jekyll.html
minify: false
# CSS/SASS minify
sass:
style: compressed
# -----------------------------------------------------------------------------
# Jekyll Archives
# -----------------------------------------------------------------------------
@ -242,6 +262,8 @@ jekyll-diagrams:
enable_google_analytics: false # enables google analytics
enable_panelbear_analytics: false # enables panelbear analytics
enable_google_verification: false # enables google site verification
enable_bing_verification: false # enables bing site verification
enable_mansory: true # enables automatic project cards arangement
enable_math: true # enables math typesetting (uses MathJax)
enable_tooltips: false # enables automatic tooltip links generated

View File

@ -1,17 +1,16 @@
{% assign path = include.path | remove: ".jpg" | remove: ".jpeg" | remove: ".png" | remove: ".tiff" %}
{%- assign path = include.path | remove: ".jpg" | remove: ".jpeg" | remove: ".png" | remove: ".tiff" -%}
<figure>
<picture>
{% for i in site.imagemagick.widths %}
<source media="(max-width: {{ i }}px)" srcset="{{ path | relative_url }}-{{ i }}.webp">
{% endfor %}
{% for i in site.imagemagick.widths -%}
<source media="(max-width: {{ i }}px)" srcset="{{ path | relative_url }}-{{ i }}.webp" />
{% endfor -%}
<!-- Fallback to the original file -->
<img {% if include.class %}class="{{ include.class }}"{% endif %} src="{{ include.path | relative_url }}" {% if include.alt %}alt="{{ alt }}"{% endif %} {% if include.title %}title="{{ title }}"{% endif %} {% if include.zoomable %}data-zoomable{% endif %} />
</picture>
{% if include.caption %}<figcaption class="caption">{{ include.caption }}</figcaption>{% endif %}
{%- if include.caption -%}<figcaption class="caption">{{ include.caption }}</figcaption>{%- endif %}
</figure>

View File

@ -1,27 +1,25 @@
{% if site.footer_fixed %}
<footer class="fixed-bottom">
<div class="container mt-0">
&copy; Copyright {{ site.time | date: '%Y' }} {{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}.
{{ site.footer_text }}
{% if site.impressum_path %}
<a href="{{ site.url }}{{ site.baseurl }}{{ site.impressum_path }}">Impressum</a>.
{% endif %}
{% if site.last_updated %}
Last updated: {{ "now" | date: '%B %d, %Y' }}.
{% endif %}
</div>
</footer>
{% else %}
<footer class="sticky-bottom mt-5">
<div class="container">
&copy; Copyright {{ site.time | date: '%Y' }} {{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}.
{{ site.footer_text }}
{% if site.impressum_path %}
<a href="{{ site.url }}{{ site.baseurl }}{{ site.impressum_path }}">Impressum</a>.
{% endif %}
{% if site.last_updated %}
Last updated: {{ "now" | date: '%B %d, %Y' }}.
{% endif %}
</div>
</footer>
{% endif %}
{% if site.footer_fixed %}
<footer class="fixed-bottom">
<div class="container mt-0">
&copy; Copyright {{ site.time | date: '%Y' }} {{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}. {{ site.footer_text }}
{%- if site.impressum_path -%}
<a href="{{ site.url }}{{ site.baseurl }}{{ site.impressum_path }}">Impressum</a>.
{%- endif -%}
{%- if site.last_updated -%}
Last updated: {{ "now" | date: '%B %d, %Y' }}.
{%- endif %}
</div>
</footer>
{%- else -%}
<footer class="sticky-bottom mt-5">
<div class="container">
&copy; Copyright {{ site.time | date: '%Y' }} {{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}. {{ site.footer_text }}
{%- if site.impressum_path -%}
<a href="{{ site.url }}{{ site.baseurl }}{{ site.impressum_path }}">Impressum</a>.
{%- endif -%}
{%- if site.last_updated -%}
Last updated: {{ "now" | date: '%B %d, %Y' }}.
{%- endif %}
</div>
</footer>
{%- endif %}

View File

@ -1,50 +1,29 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- Metadata, OpenGraph and Schema.org -->
{% include metadata.html %}
<title>
{% if site.title == "blank" %}
{{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}
{% else %}
{{ site.title }}
{% endif %}
{% if page.title != "blank" and page.url != "/" %}
| {{ page.title }}
{% endif %}
</title>
<meta name="description" content="{{ site.description }}">
<!-- Bootstrap & MDB -->
<link href="https://stackpath.bootstrapcdn.com/bootstrap/{{ site.bootstrap.version }}/css/bootstrap.min.css" rel="stylesheet" integrity="{{ site.bootstrap.integrity.css }}" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/{{ site.mdb.version }}/css/mdb.min.css" integrity="{{ site.mdb.integrity.css }}" crossorigin="anonymous" />
<!-- Open Graph -->
{% if site.serve_og_meta %}
<meta property="og:site_name" content="{{ site.description }}" />
<meta property="og:type" content="object" />
<meta property="og:title" content="{{ site.name }}" />
<meta property="og:url" content="{{ page.url | prepend: site.baseurl | prepend: site.url }}" />
<meta property="og:description" content="{{ page.title }}" />
<meta property="og:image" content="{%- if page.og_image -%}{{ page.og_image }}{%- else -%}{{ site.og_image }}{%- endif -%}" />
{% endif %}
<!-- Fonts & Icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/{{ site.fontawesome.version }}/css/all.min.css" integrity="{{ site.fontawesome.integrity }}" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/academicons/{{ site.academicons.version }}/css/academicons.min.css" integrity="{{ site.academicons.integrity }}" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons">
<!-- Bootstrap & MDB -->
<link href="https://stackpath.bootstrapcdn.com/bootstrap/{{ site.bootstrap.version }}/css/bootstrap.min.css" rel="stylesheet" integrity="{{ site.bootstrap.integrity.css }}" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/{{ site.mdb.version }}/css/mdb.min.css" integrity="{{ site.mdb.integrity.css }}" crossorigin="anonymous" />
<!-- Code Syntax Highlighting -->
<link rel="stylesheet" href="https://gitcdn.link/repo/jwarby/jekyll-pygments-themes/master/{{ site.highlight_theme }}.css" />
<!-- Fonts & Icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/{{ site.fontawesome.version }}/css/all.min.css" integrity="{{ site.fontawesome.integrity }}" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/academicons/{{ site.academicons.version }}/css/academicons.min.css" integrity="{{ site.academicons.integrity }}" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons">
<!-- Styles -->
{% if site.icon != empty -%}
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>{{ site.icon }}</text></svg>">
{%- endif %}
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
<link rel="canonical" href="{{ page.url | replace:'index.html','' | absolute_url }}">
<!-- Code Syntax Highlighting -->
<link rel="stylesheet" href="https://gitcdn.link/repo/jwarby/jekyll-pygments-themes/master/{{ site.highlight_theme }}.css" />
{%- if site.enable_darkmode %}
<!-- Styles -->
{% if site.icon != empty %}
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>{{ site.icon }}</text></svg>">
{% endif %}
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
<link rel="canonical" href="{{ page.url | replace:'index.html','' | absolute_url }}">
{% if site.enable_darkmode %}
<!-- Dark Mode -->
<script src="{{ '/assets/js/theme.js' | relative_url }}"></script>
<script src="{{ '/assets/js/dark_mode.js' | relative_url }}"></script>
{% endif %}
<!-- Dark Mode -->
<script src="{{ '/assets/js/theme.js' | relative_url }}"></script>
<script src="{{ '/assets/js/dark_mode.js' | relative_url }}"></script>
{%- endif -%}

View File

@ -1,92 +1,93 @@
<header>
<!-- Nav Bar -->
<nav id="navbar" class="navbar navbar-light navbar-expand-sm {% if site.navbar_fixed %}fixed-top{% else %}sticky-top{% endif %}">
<div class="container">
{% if page.title != "about" %}
<a class="navbar-brand title font-weight-lighter" href="{{ site.baseurl | prepend: site.url }}/">
{% if site.title == "blank" %}<span class="font-weight-bold">{{ site.first_name }}</span> {{ site.middle_name }} {{ site.last_name }}{% else %}{{ site.title }}{% endif %}
</a>
{% elsif site.enable_navbar_social %}
<!-- Social Icons -->
<div class="navbar-brand social">
{% include social.html %}
</div>
{% endif %}
<!-- Navbar Toggle -->
<button class="navbar-toggler collapsed ml-auto" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar top-bar"></span>
<span class="icon-bar middle-bar"></span>
<span class="icon-bar bottom-bar"></span>
</button>
<div class="collapse navbar-collapse text-right" id="navbarNav">
<ul class="navbar-nav ml-auto flex-nowrap">
<!-- About -->
<li class="nav-item {% if page.title == 'about' %}active{% endif %}">
<a class="nav-link" href="{{ '/' | relative_url }}">
about
{% if page.title == "about" %}
<span class="sr-only">(current)</span>
{% endif %}
</a>
</li>
{% if site.blog_name %}
<!-- Blog -->
<li class="nav-item {% if page.url contains 'blog' %}active{% endif %}">
<a class="nav-link" href="{{ '/blog/' | relative_url }}">
blog
{% if page.title == "blog" %}
<span class="sr-only">(current)</span>
{% endif %}
</a>
</li>
<header>
<!-- Nav Bar -->
<nav id="navbar" class="navbar navbar-light navbar-expand-sm {% if site.navbar_fixed %}fixed-top{% else %}sticky-top{% endif %}">
<div class="container">
{% if page.title != "about" -%}
<a class="navbar-brand title font-weight-lighter" href="{{ site.baseurl | prepend: site.url }}/">
{%- if site.title == "blank" -%}<span class="font-weight-bold">{{ site.first_name }}</span> {{ site.middle_name }} {{ site.last_name }}{%- else -%}{{ site.title }}{%- endif -%}
</a>
{%- elsif site.enable_navbar_social -%}
<!-- Social Icons -->
<div class="navbar-brand social">
{% include social.html %}
</div>
{% endif %}
<!-- Other pages -->
{% assign sorted_pages = site.pages | sort: "title" %}
{% for p in sorted_pages %}
{% if p.nav and p.autogen == nil %}
{% if p.dropdown %}
<li class="nav-item dropdown {% if page.title == p.title %}active{% endif %}">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ p.title }}
{% if page.title == p.title %}
<span class="sr-only">(current)</span>
{% endif %}
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
{% for child in p.children %}
{% if child.title == 'divider' %}
<div class="dropdown-divider"></div>
{% else %}
<a class="dropdown-item" href="{{ child.permalink | relative_url }}">{{ child.title }}</a>
{% endif %}
{% endfor %}
</div>
</li>
{% else %}
<li class="nav-item {% if page.title == p.title %}active{% endif %}">
<a class="nav-link" href="{{ p.url | relative_url }}">
{{ p.title }}
{% if page.title == p.title %}
<span class="sr-only">(current)</span>
{% endif %}
</a>
</li>
{% endif %}
{% endif %}
{% endfor %}
{% if site.enable_darkmode %}
<div class = "toggle-container">
<a id = "light-toggle">
<!-- Navbar Toggle -->
<button class="navbar-toggler collapsed ml-auto" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar top-bar"></span>
<span class="icon-bar middle-bar"></span>
<span class="icon-bar bottom-bar"></span>
</button>
<div class="collapse navbar-collapse text-right" id="navbarNav">
<ul class="navbar-nav ml-auto flex-nowrap">
<!-- About -->
<li class="nav-item {% if page.title == 'about' %}active{% endif %}">
<a class="nav-link" href="{{ '/' | relative_url }}">about
{%- if page.title == "about" -%}
<span class="sr-only">(current)</span>
{%- endif -%}
</a>
</li>
{% if site.blog_name %}
<!-- Blog -->
<li class="nav-item {% if page.url contains 'blog' %}active{% endif %}">
<a class="nav-link" href="{{ '/blog/' | relative_url }}">blog
{%- if page.title == "blog" -%}
<span class="sr-only">(current)</span>
{%- endif -%}
</a>
</li>
{%- endif %}
<!-- Other pages -->
{%- assign sorted_pages = site.pages | sort: "title" -%}
{%- for p in sorted_pages -%}
{%- if p.nav and p.autogen == nil -%}
{%- if p.dropdown %}
<li class="nav-item dropdown {% if page.title == p.title %}active{% endif %}">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ p.title }}
{%- if page.title == p.title -%}
<span class="sr-only">(current)</span>
{%- endif -%}
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
{%- for child in p.children -%}
{%- if child.title == 'divider' %}
<div class="dropdown-divider"></div>
{%- else %}
<a class="dropdown-item" href="{{ child.permalink | relative_url }}">{{ child.title }}</a>
{%- endif -%}
{% endfor %}
</div>
</li>
{%- else %}
<li class="nav-item {% if page.title == p.title %}active{% endif %}">
<a class="nav-link" href="{{ p.url | relative_url }}">{{ p.title }}
{%- if page.title == p.title -%}
<span class="sr-only">(current)</span>
{%- endif -%}
</a>
</li>
{%- endif -%}
{%- endif -%}
{% endfor -%}
{%- if site.enable_darkmode %}
<!-- Toogle theme mode -->
<div class = "toggle-container">
<a id = "light-toggle">
<i class="fas fa-moon"></i>
<i class="fas fa-sun"></i>
</a>
</div>
{% endif %}
</ul>
</div>
</div>
</nav>
</header>
</a>
</div>
{%- endif %}
</ul>
</div>
</div>
</nav>
</header>

154
_includes/metadata.html Normal file
View File

@ -0,0 +1,154 @@
{% if site.enable_google_verification or site.enable_bing_verification %}
<!-- Website verification -->
{% if site.enable_google_verification -%}
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
{%- endif -%}
{% if site.enable_bing_verification -%}
<meta name="msvalidate.01" content="{{ site.bing_site_verification }}" />
{%- endif -%}
{%- endif %}
<!-- Standard metadata -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>
{%- if site.title == "blank" -%}
{%- capture title -%}{{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}{%- endcapture -%}
{%- else -%}
{%- capture title -%}{{ site.title }}{%- endcapture -%}
{%- endif -%}
{%- if page.title != "blank" and page.url != "/" -%}
{{ title }} | {{ page.title }}
{%- else -%}
{{ title }}
{%- endif -%}
</title>
<meta name="author" content="{{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}" />
<meta name="description" content="{%- if page.description -%}{{ page.description }}{%- else -%}{{ site.description }}{%- endif -%}" />
{%- if page.keywords or site.keywords %}
<meta name="keywords" content="{%- if page.keywords -%}{{ page.keywords }}{%- else -%}{{ site.keywords }}{%- endif -%}" />
{%- endif %}
{%- if site.serve_og_meta %}
<!-- OpenGraph -->
<meta property="og:site_name" content="{{ site.title }}" />
<meta property="og:type" content="website" />
<meta property="og:title" content="{%- if page.title -%}{{ site.title }} | {{ page.title }}{%- else -%}{{ site.title }}{%- endif -%}" />
<meta property="og:url" content="{{ page.url | prepend: site.baseurl | prepend: site.url | remove_first: 'index.html' }}" />
<meta property="og:description" content="{%- if page.description -%}{{ page.description }}{%- else -%}{{ site.description }}{%- endif -%}" />
{% if page.og_image or site.og_image -%}
<meta property="og:image" content="{%- if page.og_image -%}{{ page.og_image }}{%- else -%}{{ site.og_image }}{%- endif -%}" />
{%- endif %}
<meta property="og:locale" content="{{ site.lang }}" />
<!-- Twitter card -->
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="{%- if page.title -%}{{ page.title }}{%- else -%}{{ site.title }}{%- endif -%}" />
<meta name="twitter:description" content="{%- if page.description -%}{{ page.description }}{%- else -%}{{ site.description }}{%- endif -%}" />
{% if page.og_image or site.og_image -%}
<meta name="twitter:image" content="{%- if page.og_image -%}{{ page.og_image }}{%- else -%}{{ site.og_image }}{%- endif -%}" />
{%- endif %}
{% if site.twitter_username -%}
<meta name="twitter:site" content="@{{ site.twitter_username }}" />
<meta name="twitter:creator" content="@{{ site.twitter_username }}" />
{%- endif %}
{%- endif %}
{%- if site.serve_schema_org %}
<!-- Schema.org -->
{%- comment -%} Social links generator for "sameAs schema" {%- endcomment %}
{% assign sameaslinks = "" | split: "," %}
{%- if site.orcid_id -%}
{%- capture link -%}https://orcid.org/{{ site.orcid_id }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.scholar_userid -%}
{%- capture link -%}https://scholar.google.com/citations?user={{ site.scholar_userid }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.publons_id -%}
{%- capture link -%}https://publons.com/a/{{ site.publons_id }}/{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.research_gate_profile -%}
{%- capture link -%}https://www.researchgate.net/profile/{{site.research_gate_profile}}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.github_username -%}
{%- capture link -%}https://github.com/{{ site.github_username }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.linkedin_username -%}
{%- capture link -%}https://www.linkedin.com/in/{{ site.linkedin_username }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.twitter_username -%}
{%- capture link -%}https://twitter.com/{{ site.twitter_username }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.medium_username -%}
{%- capture link -%}https://medium.com/@{{ site.medium_username }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.quora_username -%}
{%- capture link -%}https://www.quora.com/profile/{{ site.quora_username }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.blogger_url -%}
{%- capture link -%}{{ site.blogger_url }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.work_url -%}
{%- capture link -%}{{ site.work_url }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.wikidata_id -%}
{%- capture link -%}https://www.wikidata.org/wiki/{{ site.wikidata_id }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.strava_userid -%}
{%- capture link -%}https://www.strava.com/athletes/{{ site.strava_userid }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.keybase_username -%}
{%- capture link -%}https://keybase.io/{{ site.keybase_username }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.gitlab_username -%}
{%- capture link -%}https://gitlab.com/{{ site.gitlab_username }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.dblp_url -%}
{%- capture link -%}{{ site.dblp_url }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if site.stackoverflow_id -%}
{%- capture link -%}https://stackoverflow.com/users/{{ site.stackoverflow_id }}{%- endcapture -%}
{%- assign sameaslinks = sameaslinks | push: link -%}
{%- endif -%}
{%- if sameaslinks != blank -%}
{%- assign sameaslinks = sameaslinks | split: "" -%}
{%- endif -%}
<script type="application/ld+json">
{
"author":
{
"@type": "Person",
"name": "{{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}"
},
"url": "{{ page.url | prepend: site.baseurl | prepend: site.url }}",
"@type": "WebSite",
"description": "{%- if page.description -%}{{ page.description }}{%- else if site.description -%}{{ site.description }}{%- endif -%}",
"headline": "{%- if page.title -%}{{ page.title }}{%- else -%}{{ site.title }}{%- endif -%}",
{% if sameaslinks != blank -%}
"sameAs": {{ sameaslinks }},
{%- endif %}
"name": "{{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}",
"@context": "https://schema.org"
}
</script>
{%- endif %}

View File

@ -1,24 +1,25 @@
<div class="news">
<h2>news</h2>
{% if site.news %}
<div class="table-responsive">
<table class="table table-sm table-borderless">
{% assign news = site.news | reverse %}
{% for item in news limit: site.news_limit %}
<tr>
<th scope="row">{{ item.date | date: "%b %-d, %Y" }}</th>
<td>
{% if item.inline %}
{{ item.content | remove: '<p>' | remove: '</p>' | emojify }}
{% else %}
<a class="news-title" href="{{ item.url | relative_url }}">{{ item.title }}</a>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</div>
{% else %}
<p>No news so far...</p>
{% endif %}
</div>
<div class="news">
<h2>news</h2>
{% if site.news -%}
<div class="table-responsive">
<table class="table table-sm table-borderless">
{%- assign news = site.news | reverse -%}
{% for item in news limit: site.news_limit %}
<tr>
<th scope="row">{{ item.date | date: "%b %-d, %Y" }}</th>
<td>
{% if item.inline -%}
{{ item.content | remove: '<p>' | remove: '</p>' | emojify }}
{%- else -%}
<a class="news-title" href="{{ item.url | relative_url }}">{{ item.title }}</a>
{%- endif %}
</td>
</tr>
{%- endfor %}
</table>
</div>
{%- else -%}
<p>No news so far...</p>
{%- endif %}
</div>

View File

@ -1,17 +1,17 @@
{% if paginator.total_pages > 1 %}
{%- if paginator.total_pages > 1 -%}
<nav aria-label="Blog page naviation">
<ul class="pagination pagination-lg justify-content-center">
<li class="page-item {% unless paginator.previous_page %}disabled{% endunless %}">
<a class="page-link" href="{{ paginator.previous_page_path | relative_url }}" tabindex="-1" aria-disabled="{{ paginator.previous_page }}">Newer</a>
</li>
{% if paginator.page_trail %}
{% for trail in paginator.page_trail %}
{%- if paginator.page_trail -%}
{% for trail in paginator.page_trail -%}
<li class="page-item {% if page.url == trail.path %}active{% endif %}"><a class="page-link" href="{{ trail.path | relative_url }}" title="{{trail.title}}">{{ trail.num }}</a></li>
{% endfor %}
{% endif %}
{% endfor -%}
{%- endif -%}
<li class="page-item {% unless paginator.next_page %}disabled{% endunless %}">
<a class="page-link" href="{{ paginator.next_page_path | relative_url }}">Older</a>
</li>
</ul>
</nav>
{% endif %}
{%- endif -%}

View File

@ -1,34 +1,36 @@
<div class="grid-item">
{% if project.redirect %}
<a href="{{ project.redirect }}">
{% else %}
<a href="{{ project.url | relative_url }}">
{% endif %}
<div class="card hoverable">
{% if project.img %}
{% include figure.html
path=project.img
alt="project thumbnail" %}
{% endif %}
<div class="card-body">
<h2 class="card-title text-lowercase">{{ project.title }}</h2>
<p class="card-text">{{ project.description }}</p>
<div class="row ml-1 mr-1 p-0">
{% if project.github %}
<div class="github-icon">
<div class="icon" data-toggle="tooltip" title="Code Repository">
<a href="{{ project.github }}"><i class="fab fa-github gh-icon"></i></a>
<!-- _includes/projects.html -->
<div class="grid-item">
{% if project.redirect -%}
<a href="{{ project.redirect }}">
{%- else -%}
<a href="{{ project.url | relative_url }}">
{%- endif %}
<div class="card hoverable">
{%- if project.img %}
{%- include figure.html
path=project.img
alt="project thumbnail" -%}
{%- endif %}
<div class="card-body">
<h2 class="card-title text-lowercase">{{ project.title }}</h2>
<p class="card-text">{{ project.description }}</p>
<div class="row ml-1 mr-1 p-0">
{%- if project.github -%}
<div class="github-icon">
<div class="icon" data-toggle="tooltip" title="Code Repository">
<a href="{{ project.github }}"><i class="fab fa-github gh-icon"></i></a>
</div>
{%- if project.github_stars -%}
<span class="stars" data-toggle="tooltip" title="GitHub Stars">
<i class="fas fa-star"></i>
<span id="{{ project.github_stars }}-stars"></span>
</span>
{%- endif %}
</div>
{%- endif %}
</div>
{% if project.github_stars %}
<span class="stars" data-toggle="tooltip" title="GitHub Stars">
<i class="fas fa-star"></i>
<span id="{{ project.github_stars }}-stars"></span>
</span>
{% endif %}
</div>
{% endif %}
</div>
</div>
</div>
</a>
</div>
</a>
</div>

View File

@ -1,12 +1,12 @@
<div class="card-item col">
{% if project.redirect %}
{%- if project.redirect -%}
<a href="{{ project.redirect }}">
{% else %}
{%- else -%}
<a href="{{ project.url | relative_url }}">
{% endif %}
{%- endif -%}
<div class="card hoverable">
<div class="row g-0">
{% if project.img %}
{%- if project.img -%}
<div class="card-img col-md-6">
{% responsive_image_block %}
path: {{ project.img }}
@ -14,26 +14,26 @@
{% endresponsive_image_block %}
</div>
<div class="col-md-6">
{% else %}
{%- else -%}
<div class="col-md-12">
{% endif %}
{%- endif -%}
<div class="card-body">
<h3 class="card-title text-lowercase">{{ project.title }}</h3>
<p class="card-text">{{ project.description }}</p>
<div class="row ml-1 mr-1 p-0">
{% if project.github %}
{%- if project.github -%}
<div class="github-icon">
<div class="icon" data-toggle="tooltip" title="Code Repository">
<a href="{{ project.github }}"><i class="fab fa-github gh-icon"></i></a>
</div>
{% if project.github_stars %}
{%- if project.github_stars -%}
<span class="stars" data-toggle="tooltip" title="GitHub Stars">
<i class="fas fa-star"></i>
<span id="{{ project.github_stars }}-stars"></span>
</span>
{% endif %}
{%- endif -%}
</div>
{% endif %}
{%- endif -%}
</div>
</div>
</div>

View File

@ -1,21 +1,18 @@
{% if site.enable_google_analytics %}
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', '{{ site.google_analytics }}');
</script>
{% endif %}
{% if site.enable_panelbear_analytics %}
<!-- Panelbear Analytics - We respect your privacy -->
<script async src="https://cdn.panelbear.com/analytics.js?site={{site.panelbear_analytics}}"></script>
<script>
{%- if site.enable_google_analytics -%}
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', '{{ site.google_analytics }}');
</script>
{%- endif -%}
{%- if site.enable_panelbear_analytics -%}
<!-- Panelbear Analytics - We respect your privacy -->
<script async src="https://cdn.panelbear.com/analytics.js?site={{site.panelbear_analytics}}"></script>
<script>
window.panelbear = window.panelbear || function() { (window.panelbear.q = window.panelbear.q || []).push(arguments); };
panelbear('config', { site: '{{site.panelbear_analytics}}' });
</script>
{% endif %}
</script>
{%- endif -%}

View File

@ -1,4 +1,4 @@
<!-- Bootsrap & MDB scripts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/{{ site.popper.version }}/umd/popper.min.js" integrity="{{ site.popper.integrity }}" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/{{ site.bootstrap.version }}/js/bootstrap.min.js" integrity="{{ site.bootstrap.integrity.js }}" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/{{ site.mdb.version }}/js/mdb.min.js" integrity="{{ site.mdb.integrity.js }}" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/{{ site.popper.version }}/umd/popper.min.js" integrity="{{ site.popper.integrity }}" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/{{ site.bootstrap.version }}/js/bootstrap.min.js" integrity="{{ site.bootstrap.integrity.js }}" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/{{ site.mdb.version }}/js/mdb.min.js" integrity="{{ site.mdb.integrity.js }}" crossorigin="anonymous"></script>

View File

@ -1,2 +1,2 @@
<!-- jQuery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/{{ site.jquery.version }}/jquery.min.js" integrity="{{ site.jquery.integrity }}" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/{{ site.jquery.version }}/jquery.min.js" integrity="{{ site.jquery.integrity }}" crossorigin="anonymous"></script>

View File

@ -1,6 +1,6 @@
{% if site.enable_mansory %}
<!-- Mansory & imagesLoaded -->
<script defer src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
<script defer src="https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.min.js"></script>
<script defer src="{{ '/assets/js/mansory.js' | relative_url }}" type="text/javascript"></script>
{% endif %}
{%- if site.enable_mansory -%}
<!-- Mansory & imagesLoaded -->
<script defer src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
<script defer src="https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.min.js"></script>
<script defer src="{{ '/assets/js/mansory.js' | relative_url }}" type="text/javascript"></script>
{%- endif -%}

View File

@ -1,12 +1,12 @@
{% if site.enable_math %}
<!-- MathJax -->
<script type="text/javascript">
window.MathJax = {
tex: {
tags: 'ams'
}
};
</script>
<script defer type="text/javascript" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@{{ site.mathjax.version }}/es5/tex-mml-chtml.js"></script>
<script defer src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
{% endif %}
{%- if site.enable_math -%}
<!-- MathJax -->
<script type="text/javascript">
window.MathJax = {
tex: {
tags: 'ams'
}
};
</script>
<script defer type="text/javascript" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@{{ site.mathjax.version }}/es5/tex-mml-chtml.js"></script>
<script defer src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
{%- endif %}

View File

@ -1,15 +1,14 @@
{% if site.enable_tooltips %}
<!-- Enable Tooltips -->
<script type="text/javascript">
$(function () {$('[data-toggle="tooltip"]').tooltip()})
</script>
{% endif %}
<!-- Enable Tooltips -->
<script type="text/javascript">
$(function () {$('[data-toggle="tooltip"]').tooltip()})
</script>
{%- endif %}
{%- if site.enable_medium_zoom %}
<!-- Medium Zoom JS -->
<script src="https://cdn.jsdelivr.net/npm/medium-zoom@{{ site.medium_zoom.version }}/dist/medium-zoom.min.js" integrity="{{ site.medium_zoom.integrity }}" crossorigin="anonymous"></script>
<script src="{{ '/assets/js/zoom.js' | relative_url }}"></script>
{%- endif -%}
{% if site.enable_medium_zoom %}
<!-- Medium Zoom JS -->
<script src="https://cdn.jsdelivr.net/npm/medium-zoom@{{ site.medium_zoom.version }}/dist/medium-zoom.min.js" integrity="{{ site.medium_zoom.integrity }}" crossorigin="anonymous"></script>
<script src="{{ '/assets/js/zoom.js' | relative_url }}"></script>
{% endif %}
<!-- Load Common JS -->
<script src="{{ '/assets/js/common.js' | relative_url }}"></script>
<!-- Load Common JS -->
<script src="{{ '/assets/js/common.js' | relative_url }}"></script>

View File

@ -1,4 +1,5 @@
<div class="publications">
<h2>selected publications</h2>
{% bibliography -f papers -q @*[selected=true]* %}
</div>
<div class="publications">
<h2>selected publications</h2>
{% bibliography -f papers -q @*[selected=true]* %}
</div>

View File

@ -1,20 +1,57 @@
{% if site.email %}<a href="mailto:{{ site.email | encode_email }}" title="email"><i class="fas fa-envelope"></i></a>{% endif %}
{% if site.orcid_id %}<a href="https://orcid.org/{{ site.orcid_id }}" title="ORCID"><i class="ai ai-orcid"></i></a>{% endif %}
{% if site.scholar_userid %}<a href="https://scholar.google.com/citations?user={{ site.scholar_userid }}" title="Google Scholar"><i class="ai ai-google-scholar"></i></a>{% endif %}
{% if site.publons_id %}<a href="https://publons.com/a/{{ site.publons_id }}/" title="Publons"><i class="ai ai-publons"></i></a>{% endif %}
{% if site.research_gate_profile %}<a href="https://www.researchgate.net/profile/{{site.research_gate_profile}}/" title="ResearchGate"><i class="ai ai-researchgate"></i></a>{% endif %}
{% if site.github_username %}<a href="https://github.com/{{ site.github_username }}" title="GitHub"><i class="fab fa-github"></i></a>{% endif %}
{% if site.linkedin_username %}<a href="https://www.linkedin.com/in/{{ site.linkedin_username }}" title="LinkedIn"><i class="fab fa-linkedin"></i></a>{% endif %}
{% if site.twitter_username %}<a href="https://twitter.com/{{ site.twitter_username }}" title="Twitter"><i class="fab fa-twitter"></i></a>{% endif %}
{% if site.medium_username %}<a href="https://medium.com/@{{ site.medium_username }}" title="Medium"><i class="fab fa-medium"></i></a>{% endif %}
{% if site.quora_username %}<a href="https://www.quora.com/profile/{{ site.quora_username }}" title="Quora"><i class="fab fa-quora"></i></a>{% endif %}
{% if site.blogger_url %}<a href="{{ site.blogger_url }}" title="Blogger"><i class="fab fa-blogger-b"></i></a>{% endif %}
{% if site.work_url %}<a href="{{ site.work_url }}" title="Work"><i class="fas fa-briefcase"></i></a>{% endif %}
{% if site.wikidata_id %}<a href="https://www.wikidata.org/wiki/{{ site.wikidata_id }}" title="Wikidata"><i class="fas fa-barcode"></i></a>{% endif %}
{% if site.strava_userid %}<a href="https://www.strava.com/athletes/{{ site.strava_userid }}" title="Strava"><i class="fab fa-strava"></i></a>{% endif %}
{% if site.keybase_username %}<a href="https://keybase.io/{{ site.keybase_username }}" title="Keybase"><i class="fab fa-keybase"></i></a>{% endif %}
{% if site.gitlab_username %}<a href="https://gitlab.com/{{ site.gitlab_username }}" title="GitLab"><i class="fab fa-gitlab"></i></a>{% endif %}
{% if site.dblp_url %}<a href="{{ site.dblp_url }}" title="DBLP"><i class="ai ai-dblp"></i></a>{% endif %}
{% if site.stackoverflow_id %}<a href="https://stackoverflow.com/users/{{ site.stackoverflow_id }}" title="Stackoverflow"><i class="fab fa-stack-overflow"></i></a>{% endif %}
{% if site.rss_icon %}<a href="{{ site.baseurl | prepend: site.url }}/feed.xml" title="RSS Feed"><i class="fas fa-rss-square"></i></a>{% endif %}
{%- if site.email -%}
<a href="mailto:{{ site.email | encode_email }}" title="email"><i class="fas fa-envelope"></i></a>
{% endif %}
{%- if site.orcid_id -%}
<a href="https://orcid.org/{{ site.orcid_id }}" title="ORCID"><i class="ai ai-orcid"></i></a>
{% endif %}
{%- if site.scholar_userid -%}
<a href="https://scholar.google.com/citations?user={{ site.scholar_userid }}" title="Google Scholar"><i class="ai ai-google-scholar"></i></a>
{% endif %}
{%- if site.publons_id -%}
<a href="https://publons.com/a/{{ site.publons_id }}/" title="Publons"><i class="ai ai-publons"></i></a>
{% endif %}
{%- if site.research_gate_profile -%}
<a href="https://www.researchgate.net/profile/{{site.research_gate_profile}}/" title="ResearchGate"><i class="ai ai-researchgate"></i></a>
{% endif %}
{%- if site.github_username -%}
<a href="https://github.com/{{ site.github_username }}" title="GitHub"><i class="fab fa-github"></i></a>
{% endif %}
{%- if site.linkedin_username -%}
<a href="https://www.linkedin.com/in/{{ site.linkedin_username }}" title="LinkedIn"><i class="fab fa-linkedin"></i></a>
{% endif %}
{%- if site.twitter_username -%}
<a href="https://twitter.com/{{ site.twitter_username }}" title="Twitter"><i class="fab fa-twitter"></i></a>
{% endif %}
{%- if site.medium_username -%}
<a href="https://medium.com/@{{ site.medium_username }}" title="Medium"><i class="fab fa-medium"></i></a>
{% endif %}
{%- if site.quora_username -%}
<a href="https://www.quora.com/profile/{{ site.quora_username }}" title="Quora"><i class="fab fa-quora"></i></a>
{% endif %}
{%- if site.blogger_url -%}
<a href="{{ site.blogger_url }}" title="Blogger"><i class="fab fa-blogger-b"></i></a>
{% endif %}
{%- if site.work_url -%}
<a href="{{ site.work_url }}" title="Work"><i class="fas fa-briefcase"></i></a>
{% endif %}
{%- if site.wikidata_id -%}
<a href="https://www.wikidata.org/wiki/{{ site.wikidata_id }}" title="Wikidata"><i class="fas fa-barcode"></i></a>
{% endif %}
{%- if site.strava_userid -%}
<a href="https://www.strava.com/athletes/{{ site.strava_userid }}" title="Strava"><i class="fab fa-strava"></i></a>
{% endif %}
{%- if site.keybase_username -%}
<a href="https://keybase.io/{{ site.keybase_username }}" title="Keybase"><i class="fab fa-keybase"></i></a>
{% endif %}
{%- if site.gitlab_username -%}
<a href="https://gitlab.com/{{ site.gitlab_username }}" title="GitLab"><i class="fab fa-gitlab"></i></a>
{% endif %}
{%- if site.dblp_url -%}
<a href="{{ site.dblp_url }}" title="DBLP"><i class="ai ai-dblp"></i></a>
{% endif %}
{%- if site.stackoverflow_id -%}
<a href="https://stackoverflow.com/users/{{ site.stackoverflow_id }}" title="Stackoverflow"><i class="fab fa-stack-overflow"></i></a>
{% endif %}
{%- if site.rss_icon -%}
<a href="{{ site.baseurl | prepend: site.url }}/feed.xml" title="RSS Feed"><i class="fas fa-rss-square"></i></a>
{% endif %}

View File

@ -2,52 +2,57 @@
layout: default
---
<div class="post">
<!-- about.html -->
<div class="post">
<header class="post-header">
<h1 class="post-title">
{% if site.title == "blank" -%}<span class="font-weight-bold">{{ site.first_name }}</span> {{ site.middle_name }} {{ site.last_name }}{%- else -%}{{ site.title }}{%- endif %}
</h1>
<p class="desc">{{ page.subtitle }}</p>
</header>
<header class="post-header">
<h1 class="post-title">
{% if site.title == "blank" %}<span class="font-weight-bold">{{ site.first_name }}</span> {{ site.middle_name }} {{ site.last_name }}{% else %}{{ site.title }}{% endif %}
</h1>
<p class="desc">{{ page.description }}</p>
</header>
<article>
{% if page.profile -%}
<div class="profile float-{%- if page.profile.align == 'left' -%}left{%- else -%}right{%- endif -%}">
{%- if page.profile.image %}
{%- assign profile_image_path = page.profile.image | prepend: 'assets/img/' -%}
{% include figure.html
path=profile_image_path
class="img-fluid z-dept-1 rounded" -%}
{% endif -%}
{%- if page.profile.address %}
<div class="address">
{{ page.profile.address }}
</div>
{%- endif %}
</div>
{%- endif %}
<article>
{% if page.profile %}
<div class="profile float-{% if page.profile.align == 'left' %}left{% else %}right{% endif %}">
{% if page.profile.image %}
{% assign profile_image_path = page.profile.image | prepend: 'assets/img/' %}
{% include figure.html
path=profile_image_path
class="img-fluid z-dept-1 rounded"%}
{% endif %}
{% if page.profile.address %}
<div class="address">
{{ page.profile.address }}
</div>
{% endif %}
</div>
{% endif %}
<div class="clearfix">
{{ content }}
</div>
<div class="clearfix">
{{ content }}
</div>
{% if page.news -%}
<!-- News -->
{%- include news.html %}
{%- endif %}
{% if page.selected_papers -%}
<!-- Selected papers -->
{%- include selected_papers.html %}
{%- endif %}
{%- if page.social %}
<!-- Social -->
<div class="social">
<div class="contact-icons">
{% include social.html %}
</div>
{% if page.news %}
{% include news.html %}
{% endif %}
{% if page.selected_papers %}
{% include selected_papers.html %}
{% endif %}
{% if page.social %}
<div class="social">
<div class="contact-icons">
{% include social.html %}
</div>
<div class="contact-note">{{ site.contact_note }}</div>
</div>
{% endif %}
</article>
<div class="contact-note">
{{ site.contact_note }}
</div>
</div>
{%- endif %}
</article>
</div>

View File

@ -1,151 +1,158 @@
---
---
<!-- _layouts/bib.html -->
<div class="row">
<div class="col-sm-2 abbr">
{%- if entry.abbr -%}
{%- if site.data.venues[entry.abbr] -%}
<abbr class="badge"><a href="{{site.data.venues[entry.abbr].url}}">{{entry.abbr}}</a></abbr>
{%- else -%}
<abbr class="badge">{{entry.abbr}}</abbr>
{%- endif -%}
{%- endif -%}
</div>
<div class="row">
<div class="col-sm-2 abbr">
{% if entry.abbr %}
{% if site.data.venues[entry.abbr] %}
<abbr class="badge"><a href="{{site.data.venues[entry.abbr].url}}">{{entry.abbr}}</a></abbr>
{% else %}
<abbr class="badge">{{entry.abbr}}</abbr>
{% endif %}
{% endif %}
</div>
<!-- Entry bib key -->
<div id="{{entry.key}}" class="col-sm-8">
{% if entry.type == "thesis" -%}
{{reference}}
{%- else %}
<!-- Title -->
<div class="title">{{entry.title}}</div>
<!-- Author -->
<div class="author">
{%- for author in entry.author_array -%}
{%- assign author_is_self = false -%}
{%- if author.last == site.scholar.last_name%}
{%- if site.scholar.first_name contains author.first -%}
{%- assign author_is_self = true -%}
{%- endif -%}
{%- endif -%}
{%- assign coauthor_url = nil -%}
{%- if site.data.coauthors[author.last] -%}
{%- for coauthor in site.data.coauthors[author.last] -%}
{%- if coauthor.firstname contains author.first -%}
{%- assign coauthor_url = coauthor.url -%}
{%- break -%}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{%- if forloop.length == 1 -%}
{%- if author_is_self %}
<em>{{author.last}}, {{author.first}}</em>
{%- else -%}
{{author.last}}, {{author.first}}
{%- endif -%}
{%- else -%}
{%- unless forloop.last -%}
{% if author_is_self %}
<em>{{author.last}}, {{author.first}}</em>,&nbsp;
{%- else -%}
{% if coauthor_url -%}
<a href="{{coauthor_url}}">{{author.last}}, {{author.first}}</a>,&nbsp;
{%- else -%}
{{author.last}}, {{author.first}},&nbsp;
{%- endif -%}
{%- endif -%}
{%- else -%}
{% if author_is_self -%}
and <em>{{author.last}}, {{author.first}}</em>
{% else -%}
{%- if coauthor_url -%}
and <a href="{{coauthor_url}}">{{author.last}}, {{author.first}}</a>
{% else -%}
and {{author.last}}, {{author.first}}
{%- endif -%}
{%- endif -%}
{%- endunless -%}
{%- endif -%}
{%- endfor %}
</div>
<div id="{{entry.key}}" class="col-sm-8">
{% if entry.type == "thesis" %}
{{reference}}
{% else %}
<div class="title">{{entry.title}}</div>
<div class="author">
{% for author in entry.author_array %}
{% assign author_is_self = false %}
{% if author.last == site.scholar.last_name%}
{% if site.scholar.first_name contains author.first%}
{% assign author_is_self = true %}
{% endif %}
{% endif %}
{% assign coauthor_url = nil %}
{% if site.data.coauthors[author.last] %}
{% for coauthor in site.data.coauthors[author.last] %}
{% if coauthor.firstname contains author.first %}
{% assign coauthor_url = coauthor.url %}
{% break %}
{% endif %}
{% endfor %}
{% endif %}
{% if forloop.length == 1 %}
{% if author_is_self %}
<em>{{author.last}}, {{author.first}}</em>
{% else %}
{{author.last}}, {{author.first}}
{% endif %}
{% else %}
{% unless forloop.last %}
{% if author_is_self %}
<em>{{author.last}}, {{author.first}}</em>,
{% else %}
{% if coauthor_url %}
<a href="{{coauthor_url}}">{{author.last}}, {{author.first}}</a>,
{% else %}
{{author.last}}, {{author.first}},
{% endif %}
{% endif %}
{% else %}
{% if author_is_self %}
and <em>{{author.last}}, {{author.first}}</em>
{% else %}
{% if coauthor_url %}
and <a href="{{coauthor_url}}">{{author.last}}, {{author.first}}</a>
{% else %}
and {{author.last}}, {{author.first}}
{% endif %}
{% endif %}
{% endunless %}
{% endif %}
{% endfor %}
<!-- Journal/Book title and date -->
{% if entry.type == "article" -%}
{%- capture entrytype -%}<em>{{entry.journal}}</em>{%- endcapture -%}
{%- elsif entry.type == "inproceedings" -%}
{%- capture entrytype -%}<em>In {{entry.booktitle}}</em> {%- endcapture -%}
{%- endif -%}
{%- if entry.month -%}
{%- capture entrymonth -%}{{ " " }}{{ entry.month | capitalize }}{%- endcapture -%}
{%- endif -%}
{%- if entry.year -%}
{%- capture entryyear -%}{{ " " }}{{entry.year}}{%- endcapture -%}
{%- endif -%}
{%- capture periodical -%}{{ entrytype }}{{ entrymonth }}{{ entryyear }}{%- endcapture -%}
<div class="periodical">
{{ periodical | strip }}
</div>
{%- endif %}
<!-- Links/Buttons -->
<div class="links">
{%- if entry.abstract %}
<a class="abstract btn btn-sm z-depth-0" role="button">Abs</a>
{%- endif %}
{%- if entry.arxiv %}
<a href="http://arxiv.org/abs/{{ entry.arxiv }}" class="btn btn-sm z-depth-0" role="button">arXiv</a>
{%- endif %}
{%- if entry.bibtex_show %}
<a class="bibtex btn btn-sm z-depth-0" role="button">Bib</a>
{%- endif %}
{%- if entry.html %}
<a href="{{ entry.html }}" class="btn btn-sm z-depth-0" role="button">HTML</a>
{%- endif %}
{%- if entry.pdf %}
{% if entry.pdf contains '://' -%}
<a href="{{ entry.pdf }}" class="btn btn-sm z-depth-0" role="button">PDF</a>
{%- else -%}
<a href="{{ entry.pdf | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">PDF</a>
{%- endif %}
{%- endif %}
{%- if entry.supp %}
{% if entry.supp contains '://' -%}
<a href="{{ entry.supp }}" class="btn btn-sm z-depth-0" role="button">Supp</a>
{%- else -%}
<a href="{{ entry.supp | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">Supp</a>
{%- endif %}
{%- endif %}
{%- if entry.blog %}
<a href="{{ entry.blog }}" class="btn btn-sm z-depth-0" role="button">Blog</a>
{%- endif %}
{%- if entry.code %}
<a href="{{ entry.code }}" class="btn btn-sm z-depth-0" role="button">Code</a>
{%- endif %}
{%- if entry.poster %}
{% if entry.poster contains '://' -%}
<a href="{{ entry.poster }}" class="btn btn-sm z-depth-0" role="button">Poster</a>
{%- else -%}
<a href="{{ entry.poster | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">Poster</a>
{%- endif %}
{%- endif %}
{%- if entry.slides %}
{% if entry.slides contains '://' -%}
<a href="{{ entry.slides }}" class="btn btn-sm z-depth-0" role="button">Slides</a>
{%- else -%}
<a href="{{ entry.slides | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">Slides</a>
{%- endif %}
{%- endif %}
{%- if entry.website %}
<a href="{{ entry.website }}" class="btn btn-sm z-depth-0" role="button">Website</a>
{%- endif %}
</div>
{% if entry.abstract -%}
<!-- Hidden abstract block -->
<div class="abstract hidden">
<p>{{ entry.abstract }}</p>
</div>
{%- endif -%}
{% if entry.bibtex_show -%}
<!-- Hidden bibtex block -->
<div class="bibtex hidden">
{% highlight bibtex %}{{ entry.bibtex }}{% endhighlight %}
</div>
{%- endif %}
</div>
</div>
<div class="periodical">
{% if entry.type == "article" %}
<em>{{entry.journal}}</em>
{% elsif entry.type == "inproceedings" %}
<em>In {{entry.booktitle}}</em>
{% endif %}
{% if entry.month %}
{{entry.month | capitalize}}
{% endif %}
{% if entry.year %}
{{entry.year}}
{% endif %}
</div>
{% endif %}
<div class="links">
{% if entry.abstract %}
<a class="abstract btn btn-sm z-depth-0" role="button">Abs</a>
{% endif %}
{% if entry.arxiv %}
<a href="http://arxiv.org/abs/{{ entry.arxiv }}" class="btn btn-sm z-depth-0" role="button">arXiv</a>
{% endif %}
{% if entry.bibtex_show %}
<a class="bibtex btn btn-sm z-depth-0" role="button">Bib</a>
{% endif %}
{% if entry.html %}
<a href="{{ entry.html }}" class="btn btn-sm z-depth-0" role="button">HTML</a>
{% endif %}
{% if entry.pdf %}
{% if entry.pdf contains '://' %}
<a href="{{ entry.pdf }}" class="btn btn-sm z-depth-0" role="button">PDF</a>
{% else %}
<a href="{{ entry.pdf | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">PDF</a>
{% endif %}
{% endif %}
{% if entry.supp %}
{% if entry.supp contains '://' %}
<a href="{{ entry.supp }}" class="btn btn-sm z-depth-0" role="button">Supp</a>
{% else %}
<a href="{{ entry.supp | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">Supp</a>
{% endif %}
{% endif %}
{% if entry.blog %}
<a href="{{ entry.blog }}" class="btn btn-sm z-depth-0" role="button">Blog</a>
{% endif %}
{% if entry.code %}
<a href="{{ entry.code }}" class="btn btn-sm z-depth-0" role="button">Code</a>
{% endif %}
{% if entry.poster %}
{% if entry.poster contains '://' %}
<a href="{{ entry.poster }}" class="btn btn-sm z-depth-0" role="button">Poster</a>
{% else %}
<a href="{{ entry.poster | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">Poster</a>
{% endif %}
{% endif %}
{% if entry.slides %}
{% if entry.slides contains '://' %}
<a href="{{ entry.slides }}" class="btn btn-sm z-depth-0" role="button">Slides</a>
{% else %}
<a href="{{ entry.slides | prepend: '/assets/pdf/' | relative_url }}" class="btn btn-sm z-depth-0" role="button">Slides</a>
{% endif %}
{% endif %}
{% if entry.website %}
<a href="{{ entry.website }}" class="btn btn-sm z-depth-0" role="button">Website</a>
{% endif %}
</div>
<!-- Hidden abstract block -->
{% if entry.abstract %}
<div class="abstract hidden">
<p>{{ entry.abstract }}</p>
</div>
{% endif %}
<!-- Hidden bibtex block -->
{% if entry.bibtex_show %}
<div class="bibtex hidden">
{% highlight bibtex %}{{ entry.bibtex }}{% endhighlight %}
</div>
{% endif %}
</div>
</div>

View File

@ -1,27 +1,30 @@
---
layout: parse
---
<!DOCTYPE html>
<html lang="{{ site.lang }}">
<!-- Head -->
<head>
{% if page.redirect %}<meta http-equiv="refresh" content="3; url={{ site.baseurl | prepend: site.url }}/" />{% endif %}
{% include head.html %}
{%- if page.redirect -%}
<meta http-equiv="refresh" content="3; url={{ site.baseurl | prepend: site.url }}/" />
{%- endif -%}
{% include head.html %}
</head>
<body class="{% if site.navbar_fixed %}fixed-top-nav{% endif %} {% unless site.footer_fixed %}sticky-bottom-footer{% endunless %}">
<!-- Body -->
<body class="{%- if site.navbar_fixed -%}fixed-top-nav{%- endif -%} {% unless site.footer_fixed %}sticky-bottom-footer{% endunless %}">
<!-- Header -->
{% include header.html %}
{%- include header.html %}
<!-- Content -->
<div class="container mt-5">
{{ content }}
</div>
<!-- Footer -->
{% include footer.html %}
{%- include footer.html %}
</body>
{% include scripts/jquery.html %}
@ -30,5 +33,4 @@
{% include scripts/misc.html %}
{% include scripts/mathjax.html %}
{% include scripts/analytics.html %}
</html>

View File

@ -1,16 +1,20 @@
<!DOCTYPE html>
<!-- _layouts/distill.html -->
<html>
<head>
{% include head.html %}
{%- include head.html %}
{% include scripts/mathjax.html %}
<!-- Distill js -->
<script src="{{ '/assets/js/distillpub/template.v2.js' | relative_url }}"></script>
<script src="{{ '/assets/js/distillpub/transforms.v2.js' | relative_url }}"></script>
<script src="{{ '/assets/js/distillpub/overrides.js' | relative_url }}"></script>
{% if page._styles %}
<!-- Page/Post style -->
<style type="text/css">
{{ page._styles }}
</style>
{% endif %}
{%- endif %}
</head>
<d-front-matter>
@ -19,7 +23,7 @@
"description": "{{ page.description }}",
"published": "{{ page.date | date: '%B %-d, %Y' }}",
"authors": [
{% for author in page.authors %}
{% for author in page.authors -%}
{
"author": "{{ author.name }}",
"authorURL": "{{ author.url }}",
@ -49,14 +53,12 @@
}</script>
</d-front-matter>
<body class="{% if site.navbar_fixed %}fixed-top-nav{% endif %} {% unless site.footer_fixed %}sticky-bottom-footer{% endunless %}">
<body class="{%- if site.navbar_fixed -%}fixed-top-nav{%- endif -%} {%- unless site.footer_fixed -%}sticky-bottom-footer{%- endunless -%}">
<!-- Header -->
{% include header.html %}
{%- include header.html %}
<!-- Content -->
<div class="post distill">
<d-title>
@ -67,23 +69,23 @@
<d-byline></d-byline>
<d-article>
{% if page.toc %}
{% if page.toc -%}
<d-contents>
<nav class="l-text figcaption">
<h3>Contents</h3>
{% for section in page.toc %}
{% for section in page.toc -%}
<div><a href="#{{ section.name | downcase | replace: ' ','-' }}">{{ section.name }}</a></div>
{% if section.subsections %}
{% if section.subsections -%}
<ul>
{% for subsection in section.subsections %}
{% for subsection in section.subsections -%}
<li><a href="#{{ subsection.name | downcase | replace: ' ','-' }}">{{ subsection.name }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
{%- endif -%}
{%- endfor %}
</nav>
</d-contents>
{% endif %}
{%- endif %}
{{ content }}
</d-article>
@ -96,8 +98,7 @@
</div>
<!-- Footer -->
{% include footer.html %}
{%- include footer.html %}
</body>

View File

@ -1,15 +1,16 @@
---
layout: default
---
<div class="post">
<!-- page.html -->
<div class="post">
<header class="post-header">
<h1 class="post-title">{{ page.title }}</h1>
<p class="post-description">{{ page.description }}</p>
</header>
<header class="post-header">
<h1 class="post-title">{{ page.title }}</h1>
<p class="post-description">{{ page.description }}</p>
</header>
<article>
{{ content }}
</article>
<article>
{{ content }}
</article>
</div>
</div>

30
_layouts/parse.html Normal file
View File

@ -0,0 +1,30 @@
{%- if site.remove_HTML_comments -%}
{%- assign _comments = "<!-- -->" | split: " " -%}
{%- capture _comment_befores -%}{{ content }}{%- endcapture -%}
{%- assign _comment_befores = _comment_befores | split: _comments.first -%}
{%- for _comment_before in _comment_befores -%}
{%- if forloop.first -%}
{%- continue -%}
{%- endif -%}
{%- capture _comment_outside -%}
{%- if _carry -%}
{{ _comments.first }}
{%- endif -%}
{{ _comment_before }}
{%- endcapture -%}
{%- capture _comment -%}
{%- unless _carry -%}
{{ _comments.first }}
{%- endunless -%}
{{ _comment_outside | split: _comments.last | first }}
{%- if _comment_outside contains _comments.last -%}
{{ _comments.last }}
{%- assign _carry = false -%}
{%- else -%}
{%- assign _carry = true -%}
{%- endif -%}
{%- endcapture -%}
{%- assign content = content | remove_first: _comment -%}
{%- endfor -%}
{%- endif -%}
{{ content | beautify | minify }}

View File

@ -1,12 +1,13 @@
---
layout: default
---
{% assign year = page.date | date: "%Y" %}
{% assign tags = page.tags | join: "" %}
{% assign categories = page.categories | join: "" %}
<!-- _layouts/post.html -->
{%- assign year = page.date | date: "%Y" -%}
{%- assign tags = page.tags | join: "" -%}
{%- assign categories = page.categories | join: "" -%}
{% if page._styles %}
<!-- Page/Post style -->
<style type="text/css">
{{ page._styles }}
</style>
@ -16,23 +17,23 @@ layout: default
<header class="post-header">
<h1 class="post-title">{{ page.title }}</h1>
<p class="post-meta">{{ page.date | date: "%B %-d, %Y" }}{% if page.author %} • {{ page.author }}{% endif %}{% if page.meta %} • {{ page.meta }}{% endif %}</p>
<p class="post-meta">{{ page.date | date: "%B %-d, %Y" }}{%- if page.author -%} • {{ page.author }}{%- endif -%}{%- if page.meta -%} • {{ page.meta }}{%- endif -%}</p>
<p class="post-tags">
<a href="{{ year | prepend: '/blog/' | prepend: site.baseurl}}"> <i class="fas fa-calendar fa-sm"></i> {{ year }} </a>
{% if tags != "" %}
{%- if tags != "" %}
&nbsp; &middot; &nbsp;
{% for tag in page.tags %}
{% for tag in page.tags -%}
<a href="{{ tag | prepend: '/blog/tag/' | prepend: site.baseurl}}">
<i class="fas fa-hashtag fa-sm"></i> {{ tag }}</a> &nbsp;
{% endfor %}
{% endfor -%}
{% endif %}
{% if categories != "" %}
{%- if categories != "" %}
&nbsp; &middot; &nbsp;
{% for category in page.categories %}
{% for category in page.categories -%}
<a href="{{ category | prepend: '/blog/category/' | prepend: site.baseurl}}">
<i class="fas fa-tag fa-sm"></i> {{ category }}</a> &nbsp;
{% endfor %}
{% endfor -%}
{% endif %}
</p>
@ -42,7 +43,7 @@ layout: default
{{ content }}
</article>
{% if site.disqus_shortname and page.comments %}
{%- if site.disqus_shortname and page.comments -%}
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '{{ site.disqus_shortname }}';
@ -55,6 +56,6 @@ layout: default
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
{% endif %}
{%- endif %}
</div>

View File

@ -2,7 +2,7 @@
layout: about
title: about
permalink: /
description: <a href="#">Affiliations</a>. Address. Contacts. Moto. Etc.
subtitle: <a href='#'>Affiliations</a>. Address. Contacts. Moto. Etc.
profile:
align: right

View File

@ -7,51 +7,51 @@ nav: true
display_categories: [work, fun]
horizontal: false
---
<!-- pages/projects.md -->
<div class="projects">
{% if site.enable_project_categories and page.display_categories %}
{%- if site.enable_project_categories and page.display_categories %}
<!-- Display categorized projects -->
{% for category in page.display_categories %}
<h2 class="category">{{ category }}</h2>
{% assign categorized_projects = site.projects | where: "category", category %}
{% assign sorted_projects = categorized_projects | sort: "importance" %}
<!-- Generate cards for each project -->
{% if page.horizontal %}
<div class="container">
<div class="row row-cols-2">
{% for project in sorted_projects %}
{% include projects_horizontal.html %}
{% endfor %}
</div>
</div>
{% else %}
<div class="grid">
{% for project in sorted_projects %}
{% include projects.html %}
{% endfor %}
</div>
{% endif %}
{% endfor %}
{% else %}
<!-- Display projects without categories -->
{% assign sorted_projects = site.projects | sort: "importance" %}
<!-- Generate cards for each project -->
{% if page.horizontal %}
<div class="container">
<div class="row row-cols-2">
{% for project in sorted_projects %}
{% include projects_horizontal.html %}
{% endfor %}
</div>
</div>
{% else %}
<div class="grid">
{% for project in sorted_projects %}
{% include projects.html %}
{% endfor %}
</div>
{% endif %}
{% endif %}
{%- for category in page.display_categories %}
<h2 class="category">{{ category }}</h2>
{%- assign categorized_projects = site.projects | where: "category", category -%}
{%- assign sorted_projects = categorized_projects | sort: "importance" %}
<!-- Generate cards for each project -->
{% if page.horizontal -%}
<div class="container">
<div class="row row-cols-2">
{%- for project in sorted_projects -%}
{% include projects_horizontal.html %}
{%- endfor %}
</div>
</div>
{%- else -%}
<div class="grid">
{%- for project in sorted_projects -%}
{% include projects.html %}
{%- endfor %}
</div>
{%- endif -%}
{% endfor %}
{%- else -%}
<!-- Display projects without categories -->
{%- assign sorted_projects = site.projects | sort: "importance" -%}
<!-- Generate cards for each project -->
{% if page.horizontal -%}
<div class="container">
<div class="row row-cols-2">
{%- for project in sorted_projects -%}
{% include projects_horizontal.html %}
{%- endfor %}
</div>
</div>
{%- else -%}
<div class="grid">
{%- for project in sorted_projects -%}
{% include projects.html %}
{%- endfor %}
</div>
{%- endif -%}
{%- endif -%}
</div>

View File

@ -6,10 +6,10 @@ description: publications by categories in reversed chronological order. generat
years: [1956, 1950, 1935, 1905]
nav: true
---
<!-- _pages/publications.md -->
<div class="publications">
{% for y in page.years %}
{%- for y in page.years %}
<h2 class="year">{{y}}</h2>
{% bibliography -f papers -q @*[year={{y}}]* %}
{% endfor %}

27
_plugins/beautify.rb Normal file
View File

@ -0,0 +1,27 @@
require 'htmlbeautifier'
module Jekyll
module StripHTML
def beautify(content)
if beautify_enabled?
content = HtmlBeautifier.beautify(content)
else
content
end
end
private
def beautify_enabled?
config = @context.registers[:site].config
true?(config['beautify'])
end
def true?(obj)
obj.to_s.downcase == 'true'
end
end
end
Liquid::Template.register_filter(Jekyll::StripHTML)

28
_plugins/minify.rb Normal file
View File

@ -0,0 +1,28 @@
# Source: https://www.ffbit.com/blog/2021/03/17/html-minification-in-jekyll.html
require 'htmlcompressor'
module Jekyll
module MinifyFilter
def minify(content)
if minify_enabled?
compressor = HtmlCompressor::Compressor.new
compressor.compress content
else
content
end
end
private
def minify_enabled?
config = @context.registers[:site].config
true?(config['minify'])
end
def true?(obj)
obj.to_s.downcase == 'true'
end
end
end
Liquid::Template.register_filter(Jekyll::MinifyFilter)