feat: migration vers template academic-homepage original
Build and Deploy Jekyll / deploy (push) Successful in 42s
@@ -2,6 +2,9 @@ _site/
|
||||
.sass-cache/
|
||||
.jekyll-cache/
|
||||
.jekyll-metadata
|
||||
vendor/
|
||||
# Ignore folders generated by Bundler
|
||||
.bundle/
|
||||
vendor/
|
||||
Gemfile.lock
|
||||
|
||||
.DS_Store
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
---
|
||||
layout: default
|
||||
title: "404 — Page introuvable"
|
||||
layout: prompt
|
||||
title: 404 - Page Not Found
|
||||
---
|
||||
<div style="text-align:center;padding:4rem 0">
|
||||
<div style="font-size:4rem;margin-bottom:1rem">🔭</div>
|
||||
<h1 style="font-size:1.5rem;margin-bottom:1rem">Page introuvable</h1>
|
||||
<p style="color:var(--text-muted);margin-bottom:2rem">Cette page n'existe pas ou a été déplacée.</p>
|
||||
<a href="/" style="background:var(--accent);color:white;padding:8px 20px;border-radius:8px;text-decoration:none">Retour à l'accueil</a>
|
||||
</div>
|
||||
<h1 class="mt-5">404</h1>
|
||||
<p class="lead">The requested page could not be found.</p>
|
||||
<p><a href="{{ '/' | relative_url }}">Go home</a></p>
|
||||
|
||||
@@ -1,4 +1,33 @@
|
||||
source "https://rubygems.org"
|
||||
gem "jekyll", "~> 4.3"
|
||||
gem "jekyll-seo-tag"
|
||||
gem "webrick"
|
||||
|
||||
# Hello! This is where you manage which Jekyll version is used to run.
|
||||
# When you want to use a different version, change it below, save the
|
||||
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
||||
#
|
||||
# bundle exec jekyll serve
|
||||
#
|
||||
# This will help ensure the proper Jekyll version is running.
|
||||
# Happy Jekylling!
|
||||
gem "jekyll", "~> 3.9"
|
||||
|
||||
# This is the default theme for new Jekyll sites. You may change this to anything you like.
|
||||
# gem "minima", "~> 2.0"
|
||||
|
||||
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
|
||||
# uncomment the line below. To upgrade, run `bundle update github-pages`.
|
||||
# gem "github-pages", group: :jekyll_plugins
|
||||
|
||||
# If you have any plugins, put them here!
|
||||
group :jekyll_plugins do
|
||||
gem "jekyll-email-protect"
|
||||
end
|
||||
|
||||
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
||||
|
||||
# Performance-booster for watching directories on Windows
|
||||
# Version updated to 0.2: https://github.com/luost26/academic-homepage/issues/23
|
||||
gem "wdm", "~> 0.2" if Gem.win_platform?
|
||||
|
||||
gem "webrick", "~> 1.7"
|
||||
gem "kramdown-parser-gfm"
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Shitong Luo
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,86 @@
|
||||
# academic-homepage
|
||||
|
||||
[](https://luost26.github.io/academic-homepage/)
|
||||
|
||||
[](https://github.com/luost26/academic-homepage/actions/workflows/pages/pages-build-deployment)
|
||||
[](https://hits.sh/github.com/luost26/academic-homepage/)
|
||||
[](https://github.com/luost26/academic-homepage)
|
||||
[](https://github.com/luost26/academic-homepage/forks)
|
||||
<!--[](https://validator.nu/?doc=https%3A%2F%2Fluost26.github.io%2Facademic-homepage)-->
|
||||
|
||||
A GitHub Pages (Jekyll) template for personal academic website. Click [here](https://luost26.github.io/academic-homepage/) to see the demo.
|
||||
|
||||
## User Community
|
||||
|
||||
[🏡](https://luost.me/)
|
||||
[:star:](https://cch1999.github.io/)
|
||||
[:star:](https://kyrrego.github.io/)
|
||||
[:star:](https://ced3-han.github.io/)
|
||||
[:star:](https://lihengchen.com/)
|
||||
[:star:](https://hpwang-whu.github.io/)
|
||||
[:star:](https://zhang-yingyi.github.io/)
|
||||
[:star:](https://wby24.github.io/)
|
||||
[:star:](https://pengfeixu.com/)
|
||||
[:star:](https://boqiuphd.github.io/)
|
||||
[:star:](https://www.huabing.li/)
|
||||
[:star:](https://xiecuiying.github.io/)
|
||||
[:star:](https://hannyang.github.io/)
|
||||
[:star:](https://king-play.github.io/)
|
||||
[🤖](https://andrewcwlee.github.io)
|
||||
[:star:](https://laiyao1.github.io)
|
||||
[🌜](https://tmsultan.github.io)
|
||||
[🚀](https://zaxguo.github.io)
|
||||
[:gemini:](https://hongyang-du.github.io)
|
||||
[:star:](https://thuanz123.github.io)
|
||||
[🧬](https://gdalba.github.io/)
|
||||
[:star:](https://yhhan.com/)
|
||||
[🌔](https://chen-huaneng.github.io/academic)
|
||||
[:star:](https://jwklee.github.io/)
|
||||
[😼](https://onethousandwu.com/)
|
||||
[🔬](https://kwen-chen.github.io/)
|
||||
[🧑🔬](https://shengxiang-lin.github.io/)
|
||||
|
||||
:hugs: Feel free to tell us if you are using this template for your website by creating an issue [here](https://github.com/luost26/academic-homepage/issues/new?assignees=&labels=&projects=&template=user-report.md&title=I+am+using+this+template%21).
|
||||
|
||||
### Acknowledgements
|
||||
|
||||
The improvements of this template have been inspired by the customizations and feedbacks from the following users:
|
||||
- 😼 [onethousandwu.com](https://onethousandwu.com/): increased corner radius [[Repo]](https://github.com/oneThousand1000/oneThousand1000.github.io)
|
||||
- :star: [shiwonkim.github.io](https://shiwonkim.github.io/): two-column main page layout [[Repo]](https://github.com/shiwonkim/shiwonkim.github.io)
|
||||
- :star: [yqxie99.github.io](https://yqxie99.github.io/): blog feature [[Repo]](https://github.com/YQXie99/YQXie99.github.io/tree/feat/add_blog_page)
|
||||
- :star: [kwen-chen.github.io](https://kwen-chen.github.io/): blog feature [[Repo]](https://github.com/Kwen-Chen/Kwen-Chen.github.io)
|
||||
|
||||
## Need Help?
|
||||
|
||||
If you run into **any** issues while using this template, or have suggestions for improvements, please don't hesitate to create an issue [here](https://github.com/luost26/academic-homepage/issues/new).
|
||||
|
||||
### FAQs
|
||||
|
||||
- [Need blogging feature?](https://github.com/luost26/academic-homepage/issues/13#issuecomment-2646371324)
|
||||
- [How to show citation count for papers?](https://github.com/luost26/academic-homepage/issues/29#issuecomment-3222496187)
|
||||
|
||||
|
||||
## Getting Started
|
||||
|
||||
1. First, click the "Use this template" button to create a new repository. The name of the repository should be `<your-github-username>.github.io` (click [here](https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites) to learn more about naming a GitHub Pages repository).
|
||||
|
||||
### Running Locally (Debug & Preview)
|
||||
|
||||
2. Follow the **step 1** and **step 2** of the instruction [here](https://jekyllrb.com/docs/) to install prerequisites and jekyll.
|
||||
|
||||
3. Clone your forked repository to your local machine.
|
||||
|
||||
4. Run the following command in the root directory of the repository:
|
||||
|
||||
```bash
|
||||
bundle exec jekyll serve
|
||||
```
|
||||
|
||||
5. Browse to the displayed URL to see the website.
|
||||
|
||||
### Deploying to GitHub Pages
|
||||
|
||||
2. Go to the repository settings and enable GitHub Pages. Detailed instructions can be found [here](https://docs.github.com/en/pages/getting-started-with-github-pages/creating-a-github-pages-site#creating-your-site).
|
||||
|
||||
3. Navigate to your created website, and follow the instructions displayed on the homepage (if any) to finalize the setup.
|
||||
|
||||
@@ -1,26 +1,41 @@
|
||||
title: "Aloïs Coquillard"
|
||||
name: "Aloïs Coquillard"
|
||||
position: "PhD Student / Researcher"
|
||||
affiliation: "University Name"
|
||||
affiliation_link: "https://university.edu"
|
||||
email: "alois.coquillard@ens-lyon.fr"
|
||||
description: "Physicist passionate about electronics and computing"
|
||||
baseurl: ""
|
||||
url: "https://alocoq.fr"
|
||||
#github: "johndoe"
|
||||
linkedin: "aloïs-coquillard-690506267"
|
||||
#google_scholar: ""
|
||||
#orcid: ""
|
||||
#twitter: ""
|
||||
# Welcome to Jekyll!
|
||||
#
|
||||
# This config file is meant for settings that affect your whole blog, values
|
||||
# which you are expected to set up once and rarely edit after that. If you find
|
||||
# yourself editing this file very often, consider using Jekyll's data files
|
||||
# feature for the data you need to update frequently.
|
||||
#
|
||||
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
||||
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
|
||||
|
||||
# Site settings
|
||||
# These are used to personalize your new site. If you look in the HTML files,
|
||||
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
|
||||
# You can create any custom variable you would like, and they will be accessible
|
||||
# in the templates via {{ site.myvariable }}.
|
||||
baseurl: "/academic-homepage" # the subpath of your site, e.g. /blog
|
||||
|
||||
# Build settings
|
||||
markdown: kramdown
|
||||
highlighter: rouge
|
||||
permalink: /:title/
|
||||
collections:
|
||||
news:
|
||||
output: false
|
||||
publications:
|
||||
output: false
|
||||
showcase:
|
||||
output: false
|
||||
plugins:
|
||||
- jekyll-seo-tag
|
||||
- jekyll-email-protect
|
||||
|
||||
# Exclude from processing.
|
||||
# The following items will not be processed, by default. Create a custom list
|
||||
# to override the default setting.
|
||||
# exclude:
|
||||
# - Gemfile
|
||||
# - Gemfile.lock
|
||||
# - node_modules
|
||||
# - vendor/bundle/
|
||||
# - vendor/cache/
|
||||
# - vendor/gems/
|
||||
# - vendor/ruby/
|
||||
|
||||
# timezone: Asia/Shanghai
|
||||
|
||||
collections:
|
||||
- publications
|
||||
- news
|
||||
- showcase
|
||||
- posts
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
"Your Name":
|
||||
bold: true
|
||||
|
||||
"Robert White":
|
||||
url: https://www.google.com/?q=Robert+White
|
||||
|
||||
"Charles Green (MIT)":
|
||||
name: Charles Green
|
||||
url: https://www.google.com/?q=Charles+Green+MIT
|
||||
|
||||
"Charles Green (Stanford)":
|
||||
name: Charles Green
|
||||
url: https://www.google.com/?q=Charles+Green+Stanford
|
||||
|
||||
"Garrett Harris":
|
||||
url: https://www.google.com/?q=Garrett+Harris
|
||||
|
||||
"James Wang":
|
||||
url: https://www.google.com/?q=James+Wang
|
||||
|
||||
"John Doe":
|
||||
url: https://www.google.com/?q=John+Doe
|
||||
@@ -0,0 +1,10 @@
|
||||
homepage:
|
||||
show_experience: true
|
||||
show_news: true
|
||||
show_selected_publications: true
|
||||
num_news: 10
|
||||
|
||||
# Feel free to replace the footer text if you would like to, but I will greatly appreciate it
|
||||
# if you keep the link to the template so that more people can benefit from it. Thanks!
|
||||
footer_text: >-
|
||||
<a href="https://github.com/luost26/academic-homepage" target="_blank"><i class="fas fa-pencil-ruler"></i> academic-homepage</a>
|
||||
@@ -1,9 +1,13 @@
|
||||
- title: "Accueil"
|
||||
url: "/"
|
||||
- title: "Publications"
|
||||
url: "/publications"
|
||||
- title: "Projets"
|
||||
url: "/showcase"
|
||||
- title: "Blog"
|
||||
url: "https://blog.alocoq.fr"
|
||||
external: true
|
||||
pages:
|
||||
# NOTE: `name` field must match the `navbar_title` field in the page's front matter to ensure the correct page is highlighted in the navbar.
|
||||
# For example, the `navbar_title` field in `showcase.html` is "Showcase" and the `name` field here should also be "Showcase"
|
||||
- name: Home
|
||||
url: /
|
||||
- name: Home (Layout 2)
|
||||
url: /index_layout2
|
||||
- name: Publications
|
||||
url: /publications
|
||||
- name: Blog
|
||||
url: /blog
|
||||
- name: Showcase
|
||||
url: /showcase
|
||||
|
||||
@@ -1,16 +1,61 @@
|
||||
bio: >
|
||||
Je suis physicien passionné par l'électronique et l'informatique.
|
||||
Mes travaux portent sur [ton domaine de recherche].
|
||||
primary_name: "Your Name"
|
||||
secondary_name: ""
|
||||
navbar_name: "Your Name"
|
||||
|
||||
interests:
|
||||
- Physique expérimentale
|
||||
- Électronique
|
||||
- Informatique embarquée
|
||||
positions:
|
||||
- name: Title or Position
|
||||
- name: Affiliation Name
|
||||
logo: /assets/images/badges/MIT_Social_circle.png # Logo is optional
|
||||
|
||||
|
||||
email: "your@email.com"
|
||||
# cv_link: link-to-your-cv-file
|
||||
gscholar: xFmQpf4AAAAJ # This is an example, replace it with your own Google Scholar ID
|
||||
github: your_github_id
|
||||
twitter: your_twitter_id # Do not include the '@' symbol
|
||||
# wechat_qrcode: /assets/images/etc/wechat.jpg
|
||||
# wechat_prompt: >-
|
||||
# Please tell me your <strong>name</strong> and <strong>affiliation</strong> (current or past) when adding my wechat. Thanks!
|
||||
# linkedin: your-linked-in-id
|
||||
# orcid: 0000-0000-0000-0000
|
||||
|
||||
short_bio_text_justify: false
|
||||
short_bio: >-
|
||||
<p>
|
||||
A <a href="https://en.wikipedia.org/wiki/Bicolor_cat" target="_blank">bicolor cat</a> is a cat with white fur combined with fur of some other colour, for example solid black, tabby, or colourpointed.
|
||||
</p>
|
||||
<p>
|
||||
There are various patterns of a bicolour cat. These range from the Van-patterned (colour on the crown of the head
|
||||
and the tail only) to a solid colour with a throat locket or medallion. Bicolour coats are found in many cat breeds,
|
||||
as well as being common in domestic longhair and domestic shorthair cats.
|
||||
</p>
|
||||
|
||||
portrait_url: /assets/images/photos/portrait.jpg
|
||||
portrait_caption: >-
|
||||
Photo by Manja Vitolic on Unsplash (this caption is optional, comment it out to disable).
|
||||
|
||||
education:
|
||||
- degree: "PhD en Physique"
|
||||
institution: "Université de ..."
|
||||
year: "2020 – présent"
|
||||
- degree: "Master de Physique"
|
||||
institution: "Université de ..."
|
||||
year: "2018 – 2020"
|
||||
- name: Massachusetts Institute of Technology
|
||||
logo: /assets/images/badges/MIT_Social_circle.png
|
||||
position: >-
|
||||
Department of Electrical Engineering and Computer Science <br/>
|
||||
Ph.D. Student
|
||||
date: Sep. 2024 - present
|
||||
- name: Peking University
|
||||
logo: /assets/images/badges/PKU_red.png
|
||||
position: B.S. in Computer Science
|
||||
date: Sep. 2019 - Jul. 2021
|
||||
|
||||
# experience:
|
||||
# - name: Peking University
|
||||
# logo: /assets/images/badges/PKU_red.png
|
||||
# position: Research Intern
|
||||
# date: Sep. 2019 - Jul. 2021
|
||||
|
||||
awards:
|
||||
- name: Award Name 2
|
||||
date: 2024
|
||||
- name: Award Name 1
|
||||
date: 2021
|
||||
- name: A quick brown fox jumps over the lazy dog and runs away award
|
||||
date: 2021
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<footer class="footer border-top py-2 mt-5 bg-white small">
|
||||
<div class="{% if page.container_class %}{{ page.container_class }}{% else %}container-lg{% endif %}">
|
||||
<div class="row my-3">
|
||||
<div class="col-6">
|
||||
<div class="text-muted">
|
||||
<i>Last updated: {{ "now" | date: "%b %Y" }}</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="text-right text-muted">
|
||||
{{ site.data.display.footer_text }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@@ -0,0 +1,18 @@
|
||||
<nav class="navbar navbar-expand-sm navbar-light fixed-top mb-5 shadow-sm">
|
||||
<div class="{% if page.container_class %}{{ page.container_class }}{% else %}container-lg{% endif %}">
|
||||
<a class="navbar-brand"><strong>{{site.data.profile.navbar_name}}</strong></a>
|
||||
<button class="navbar-toggler" style="font-size: 1em; padding: 0.5em;" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<i class="fas fa-map"></i> Menu
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
{% for item in site.data.navigation.pages %}
|
||||
<li class="nav-item {% if item.name == page.navbar_title or include.active_page == item.name %}active{% endif %}">
|
||||
<a class="nav-link" href="{{ item.url | relative_url }}">{{ item.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -0,0 +1,60 @@
|
||||
{%- assign authors = include.authors -%}
|
||||
{%- assign has_eq_contrib = false -%}
|
||||
{%- assign has_corresponding = false -%}
|
||||
|
||||
{%- for _key in authors -%}
|
||||
{%- assign last_char = _key | slice: -1, 1%}
|
||||
{%- assign last_2chars = _key | slice: -2, 2%}
|
||||
{%- if last_2chars == "*#" or last_2chars == "#*" -%}
|
||||
{%- assign key = _key | replace: "#*", "" | replace: "*#", "" -%}
|
||||
{%- assign mark = "*<sup>#</sup>" -%}
|
||||
{%- assign has_eq_contrib = true -%}
|
||||
{%- assign has_corresponding = true -%}
|
||||
{%- elsif last_char == "*" -%}
|
||||
{%- assign key = _key | split: "*" | first -%}
|
||||
{%- assign mark = "*" -%}
|
||||
{%- assign has_eq_contrib = true -%}
|
||||
{%- elsif last_char == "#" -%}
|
||||
{%- assign key = _key | split: "#" | first -%}
|
||||
{%- assign mark = '<sup>#</sup>' -%}
|
||||
{%- assign has_corresponding = true -%}
|
||||
{%- else -%}
|
||||
{%- assign key = _key -%}
|
||||
{%- assign mark = "" -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- assign info = site.data.authors[key] -%}
|
||||
|
||||
{%- if info['name'] -%}
|
||||
{%- assign name = info['name'] -%}
|
||||
{%- else -%}
|
||||
{%- assign name = key -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- if info['bold'] == true -%}
|
||||
{%- assign display_name = name | append: mark | prepend: "<strong>" | append: "</strong>" -%}
|
||||
{%- else -%}
|
||||
{%- assign display_name = name | append: mark -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- if info['url'] -%}
|
||||
<a class="text-body" target="_blank" href="{{ info['url'] }}">{{ display_name }}</a>{%- if forloop.index < authors.size -%}, {% endif -%}
|
||||
{%- else -%}
|
||||
<span class="text-body">
|
||||
{{ display_name }}{%- if forloop.index < authors.size -%}, {% endif -%}
|
||||
</span>
|
||||
{%- endif -%}
|
||||
|
||||
{%- endfor -%}
|
||||
|
||||
{%- if has_eq_contrib or has_corresponding %}
|
||||
<mark>(
|
||||
{%- if has_eq_contrib -%}
|
||||
* <i> equal contribution</i>
|
||||
{%- endif -%}
|
||||
{%- if has_corresponding -%}
|
||||
{%- if has_eq_contrib -%}, {% endif -%}
|
||||
<sup>#</sup> <i> corresponding author</i>
|
||||
{%- endif -%}
|
||||
)</mark>
|
||||
{%- endif -%}
|
||||
@@ -0,0 +1,39 @@
|
||||
{% assign item = include.item %}
|
||||
{% assign hide_bottom_border = include.hide_bottom_border %}
|
||||
{% assign first = include.first %}
|
||||
{% assign last = include.last %}
|
||||
|
||||
<div class="border-bottom border-gray p-3 {% if hide_bottom_border %}border-0{% endif %}">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h5 class="mb-2">
|
||||
<a href="{{ item.url | relative_url }}" class="text-dark text-decoration-none">
|
||||
{{ item.title }}
|
||||
</a>
|
||||
</h5>
|
||||
<div class="text-muted small mb-2">
|
||||
<i class="fas fa-calendar-alt"></i> {{ item.date | date: "%B %d, %Y" }}
|
||||
{% if item.tags %}
|
||||
<span class="ml-3">
|
||||
<i class="fas fa-tags"></i>
|
||||
{% for tag in item.tags %}
|
||||
<span class="badge badge-light">{{ tag }}</span>
|
||||
{% endfor %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="text-muted small">
|
||||
{% if item.excerpt %}
|
||||
{{ item.excerpt | strip_html | truncate: 500 }}
|
||||
{% else %}
|
||||
{{ item.content | strip_html | truncate: 500 }}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
<a href="{{ item.url | relative_url }}">
|
||||
Read more <i class="fas fa-angle-double-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,31 @@
|
||||
<div>
|
||||
<div id="{{ include.id | slugify }}" class="carousel slide" data-ride="carousel">
|
||||
<ol class="carousel-indicators">
|
||||
{% for item in include.images %}
|
||||
<li data-target="#{{ include.id | slugify }}" data-slide-to="{{ forloop.index0 }}" {% if forloop.index == 1 %}class="active"{% endif %}></li>
|
||||
{% endfor %}
|
||||
</ol>
|
||||
<div class="carousel-inner" style="height: {{ include.height }};">
|
||||
{% for item in include.images %}
|
||||
<div class="carousel-item {% if forloop.index == 1 %}active{% endif %}">
|
||||
{% if item.link %}<a href="{{ item.link }}" target="_blank">{% endif %}
|
||||
<div class="lazy always-load d-block rounded-xl" data-src="{{ item.src | relative_url }}" style="height: {{ include.height }};">
|
||||
</div>
|
||||
<div class="carousel-caption d-none d-md-block">
|
||||
<h5>{{ item.title }}</h5>
|
||||
<p>{{ item.desc }}</p>
|
||||
</div>
|
||||
{% if item.link %}</a>{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="carousel-control-prev" type="button" data-target="#{{ include.id | slugify }}" data-slide="prev">
|
||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||
<span class="sr-only">Previous</span>
|
||||
</div>
|
||||
<div class="carousel-control-next" type="button" data-target="#{{ include.id | slugify }}" data-slide="next">
|
||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||
<span class="sr-only">Next</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,26 @@
|
||||
<div id="ghpages-domain-debug-message" class="row mt-3 d-none">
|
||||
<div class="col">
|
||||
<div class="alert alert-warning my-0" role="alert">
|
||||
<h5><i class="fas fa-exclamation-triangle"></i> Warning</h5>
|
||||
<strong>Problem:</strong>
|
||||
The current name of your GitHub Pages repository ("<code class="repo-name-text"></code>") does not match the recommended repository name for your site ("<code class="domain-name-text"></code>").
|
||||
<br>
|
||||
<strong>Solution:</strong> Please consider renaming the repository to "<code class="domain-name-text"></code>", so that your site can be accessed directly at "<code>http://<span class="domain-name-text"></span></code>".
|
||||
However, if the current repository name is intended, you can ignore this message by removing {% raw %}"<code>{% include widgets/debug_repo_name.html %}</code>"{% endraw %} in <code>index.html</code>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
striped_pathname = location.pathname.replace(/\/+$/, "");
|
||||
document.querySelectorAll(".repo-name-text").forEach(function(element){
|
||||
element.textContent = striped_pathname.replace("/", "");
|
||||
});
|
||||
document.querySelectorAll(".domain-name-text").forEach(function(element){
|
||||
element.textContent = location.hostname;
|
||||
});
|
||||
|
||||
if (location.hostname.search("github.io") != -1 && striped_pathname != ""){
|
||||
document.getElementById("ghpages-domain-debug-message").classList.remove('d-none');
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,24 @@
|
||||
<div id="url-debug-message" class="row mt-3 d-none">
|
||||
<div class="col">
|
||||
<div class="alert alert-warning my-0" role="alert">
|
||||
<h5><i class="fas fa-exclamation-triangle"></i> Action required</h5>
|
||||
<strong>Problem:</strong>
|
||||
The current root path of this site is "<code class="root-path-text"></code>",
|
||||
which does not match the <code>baseurl</code> ("<code>{{ site.baseurl }}</code>") configured in <code>_config.yml</code>.
|
||||
<br>
|
||||
|
||||
<strong>Solution:</strong>
|
||||
Please set the <code>baseurl</code> in <code>_config.yml</code> to "<code class="root-path-text"></code>".
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
striped_pathname = location.pathname.replace(/\/+$/, "");
|
||||
if(striped_pathname != "{{ site.baseurl }}"){
|
||||
document.getElementById("url-debug-message").classList.remove('d-none');
|
||||
}
|
||||
document.querySelectorAll(".root-path-text").forEach(function(element){
|
||||
element.textContent = striped_pathname;
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,75 @@
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
<div class="card border-0 shadow-sm bg-white">
|
||||
<div class="card-body p-4">
|
||||
<div class="row" data-masonry='{"percentPosition": true }'>
|
||||
{% if site.data.profile.education %}
|
||||
<div class="col-lg-6">
|
||||
<div class="mx-2 my-1">
|
||||
<h6>Education</h6>
|
||||
<ul class="list-unstyled mb-1">
|
||||
{% for item in site.data.profile.education %}
|
||||
<li class="media mb-1">
|
||||
<img src="{{ item.logo | relative_url }}" alt="{{ item.name }}" style="width: 18px;" class="mr-1 mt-1">
|
||||
<div class="media-body">
|
||||
<div>{{ item.name }}</div>
|
||||
<div class="small">{{ item.dept }}</div>
|
||||
<div class="small d-flex">
|
||||
<div>{{ item.position }}</div>
|
||||
<div class="mt-auto ml-auto no-break"><em>{{ item.date }}</em></div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.experience %}
|
||||
<div class="col-lg-6">
|
||||
<div class="mx-2 my-1">
|
||||
<h6>Experience</h6>
|
||||
<ul class="list-unstyled mb-1">
|
||||
{% for item in site.data.profile.experience %}
|
||||
<li class="media mb-1">
|
||||
<img src="{{ item.logo | relative_url }}" alt="{{ item.name }}" style="width: 18px;" class="mr-1 mt-1">
|
||||
<div class="media-body">
|
||||
<div>{{ item.name }}</div>
|
||||
<div class="small">{{ item.dept }}</div>
|
||||
<div class="small d-flex">
|
||||
<div>{{ item.position }}</div>
|
||||
<div class="mt-auto ml-auto no-break"><em>{{ item.date }}</em></div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.awards %}
|
||||
<div class="col-lg-6">
|
||||
<div class="mx-2 my-1">
|
||||
<h6>Honors & Awards</h6>
|
||||
<ul class="list small pl-3 mb-1">
|
||||
{% for item in site.data.profile.awards %}
|
||||
<li>
|
||||
<div class="d-flex">
|
||||
<div>{{ item.name }}</div>
|
||||
<div class="ml-auto mt-auto no-break"><em>{{ item.date }}</em></div>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,21 @@
|
||||
{% assign news_by_year = site.news | sort: "date" | reverse | slice: 0, include.limit | group_by_exp: "item", "item.date | date: '%Y'" -%}
|
||||
|
||||
<div class="my-3 bg-white shadow-sm rounded-xl">
|
||||
<h6 class="p-3 mb-0 border-bottom border-gray"><i class="fas fa-rss"></i> News</h6>
|
||||
<div class="px-3 pb-1 small">
|
||||
{% for year in news_by_year %}
|
||||
<div class="media py-1 {% if not_first -%}border-top border-gray{%- endif %}">
|
||||
{% assign not_first = true %}
|
||||
<div class="mr-3 text-muted my-1">{{ year.name }}</div>
|
||||
<div class="media-body">
|
||||
{% for item in year.items %}
|
||||
<div class="my-1 d-flex">
|
||||
<div>{{ item.title }}</div>
|
||||
<div class="ml-auto mt-auto text-muted no-break"><i>{{ item.date | date: "%b %d" }}</i></div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,121 @@
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card border-0 shadow-sm bg-white">
|
||||
<div class="card-body p-5">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
{% if site.data.profile.portrait_url %}
|
||||
<!-- When the screen is wider than md, float the portrait on the right -->
|
||||
<div class="figure float-right ml-4 mb-4 d-none d-md-block">
|
||||
<img
|
||||
src="{{ site.data.profile.portrait_url | relative_url }}"
|
||||
class="figure-img img-fluid img-thumbnail"
|
||||
style="height: 200px;"
|
||||
data-toggle="tooltip"
|
||||
data-placement="top"
|
||||
title="{{ site.data.profile.portrait_caption }}">
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="d-flex">
|
||||
<div class="h1 font-weight-normal">
|
||||
{{ site.data.profile.primary_name }} <small>{{ site.data.profile.secondary_name }}</small>
|
||||
</div>
|
||||
{% if site.data.profile.portrait_url %}
|
||||
<div class="ml-auto d-md-none">
|
||||
<a target="_blank" href="{{ site.data.profile.portrait_url | relative_url }}">
|
||||
<img src="{{ site.data.profile.portrait_url | relative_url }}" class="rounded-circle" style="height: 48px;" alt="Portrait">
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="text-profile-position">
|
||||
{% for position in site.data.profile.positions %}
|
||||
{% if position.logo -%}
|
||||
<img src="{{ position.logo | relative_url }}" alt="Logo" class="inline-badge"/>
|
||||
{%- endif %}
|
||||
{{ position.name }}<br/>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="text-profile-bio mt-3" {% if site.data.profile.short_bio_text_justify %}style="text-align: justify;"{% endif %}>
|
||||
{{ site.data.profile.short_bio }}
|
||||
</div>
|
||||
{% if site.data.profile.cv_link %}
|
||||
<a target="_blank" href="{{ site.data.profile.cv_link | relative_url }}"><i class="fas fa-file-alt"></i> Curriculum Vitae</a> <br/>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<hr />
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<a class="pr-3" href="mailto:{{ site.data.profile.email | encode_email }}">
|
||||
<i class="fas fa-at"></i> <span class="email-text">{{ site.data.profile.email | replace: "@", "(at)" }}</span>
|
||||
</a>
|
||||
|
||||
{% if site.data.profile.gscholar %}
|
||||
{%- if site.data.profile.gscholar contains 'scholar.google' -%}
|
||||
{%- assign gscholar_url = site.data.profile.gscholar -%}
|
||||
{%- else -%}
|
||||
{%- assign gscholar_url = 'https://scholar.google.com/citations?user=' | append: site.data.profile.gscholar -%}
|
||||
{%- endif -%}
|
||||
<a class="pr-3 no-break" target="_blank" href="{{ gscholar_url }}">
|
||||
<i class="fab fa-google-scholar"></i> Google Scholar
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.github %}
|
||||
<a class="pr-3 no-break" target="_blank" href="https://github.com/{{ site.data.profile.github }}">
|
||||
<i class="fab fa-github"></i> GitHub
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.wechat_qrcode %}
|
||||
<a class="pr-3 no-break" data-toggle="modal" data-target="#modal-wechat">
|
||||
<i class="fab fa-weixin"></i> WeChat
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.twitter %}
|
||||
<a class="pr-3 no-break" target="_blank" href="https://twitter.com/{{ site.data.profile.twitter }}">
|
||||
<i class="fab fa-twitter"></i> Twitter
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.linkedin %}
|
||||
<a class="pr-3 no-break" target="_blank" href="https://www.linkedin.com/in/{{ site.data.profile.linkedin }}">
|
||||
<i class="fab fa-linkedin"></i> LinkedIn
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.orcid %}
|
||||
<a class="pr-3 no-break" target="_blank" href="https://orcid.org/{{ site.data.profile.orcid }}">
|
||||
<i class="fab fa-orcid"></i> ORCID
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if site.data.profile.wechat_qrcode %}
|
||||
<div class="modal fade" id="modal-wechat" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-sm">
|
||||
<div class="modal-content">
|
||||
<div class="modal-body p-0">
|
||||
<img src="{{ site.data.profile.wechat_qrcode | relative_url }}" class="img-fluid">
|
||||
</div>
|
||||
{% if site.data.profile.wechat_prompt %}
|
||||
<div class="modal-body p-1">
|
||||
{{ site.data.profile.wechat_prompt }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,25 @@
|
||||
<div class="mt-3 d-md-none"></div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card border-0 shadow-sm bg-white">
|
||||
<div class="card-body p-4">
|
||||
<div class="row px-3 pt-3">
|
||||
<div class="col h3">
|
||||
About Me
|
||||
</div>
|
||||
</div>
|
||||
<div class="row p-3">
|
||||
<div class="col">
|
||||
<div class="text-profile-bio mt-0" {% if site.data.profile.short_bio_text_justify %}style="text-align: justify;"{% endif %}>
|
||||
{{ site.data.profile.short_bio }}
|
||||
</div>
|
||||
{% if site.data.profile.cv_link %}
|
||||
<a target="_blank" href="{{ site.data.profile.cv_link | relative_url }}"><i class="fas fa-file-alt"></i> Curriculum Vitae</a> <br/>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,113 @@
|
||||
<div class="row sticky-top" style="top: 80px">
|
||||
<div class="col">
|
||||
<div class="card border-0 shadow-sm bg-white">
|
||||
<div class="card-body px-4 pt-4 pb-3">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
{% if site.data.profile.portrait_url %}
|
||||
<!-- When the screen is wider than md, float the portrait on the right -->
|
||||
<div class="figure d-none d-md-block">
|
||||
<img
|
||||
src="{{ site.data.profile.portrait_url | relative_url }}"
|
||||
class="figure-img img-fluid"
|
||||
data-toggle="tooltip"
|
||||
data-placement="top"
|
||||
title="{{ site.data.profile.portrait_caption }}">
|
||||
</div>
|
||||
<div class="mb-3 d-md-none text-center">
|
||||
<img src="{{ site.data.profile.portrait_url | relative_url }}" class="rounded-circle" style="max-width: 50%;" alt="Portrait">
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-center h4">
|
||||
{{ site.data.profile.primary_name }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row small">
|
||||
<div class="col text-center">
|
||||
{% for position in site.data.profile.positions %}
|
||||
{{ position.name }}<br/>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row small">
|
||||
<div class="col text-center">
|
||||
<a class="email-text" href="mailto:{{ site.data.profile.email | encode_email }}">
|
||||
{{ site.data.profile.email | replace: "@", "(at)" }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2">
|
||||
<div class="col text-center h4">
|
||||
{% if site.data.profile.gscholar %}
|
||||
{%- if site.data.profile.gscholar contains 'scholar.google' -%}
|
||||
{%- assign gscholar_url = site.data.profile.gscholar -%}
|
||||
{%- else -%}
|
||||
{%- assign gscholar_url = 'https://scholar.google.com/citations?user=' | append: site.data.profile.gscholar -%}
|
||||
{%- endif -%}
|
||||
<a class="px-1 no-break" target="_blank" href="{{ gscholar_url }}">
|
||||
<i class="fab fa-google-scholar"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.github %}
|
||||
<a class="px-1 no-break" target="_blank" href="https://github.com/{{ site.data.profile.github }}">
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.wechat_qrcode %}
|
||||
<a class="px-1 no-break" data-toggle="modal" data-target="#modal-wechat">
|
||||
<i class="fab fa-weixin"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.twitter %}
|
||||
<a class="px-1 no-break" target="_blank" href="https://twitter.com/{{ site.data.profile.twitter }}">
|
||||
<i class="fab fa-twitter"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.linkedin %}
|
||||
<a class="px-1 no-break" target="_blank" href="https://www.linkedin.com/in/{{ site.data.profile.linkedin }}">
|
||||
<i class="fab fa-linkedin"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.profile.orcid %}
|
||||
<a class="px-1 no-break" target="_blank" href="https://orcid.org/{{ site.data.profile.orcid }}">
|
||||
<i class="fab fa-orcid"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% if site.data.profile.wechat_qrcode %}
|
||||
<div class="modal fade" id="modal-wechat" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-sm">
|
||||
<div class="modal-content">
|
||||
<div class="modal-body p-0">
|
||||
<img src="{{ site.data.profile.wechat_qrcode | relative_url }}" class="img-fluid">
|
||||
</div>
|
||||
{% if site.data.profile.wechat_prompt %}
|
||||
<div class="modal-body p-1">
|
||||
{{ site.data.profile.wechat_prompt }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,14 @@
|
||||
{% assign publications = include.publications %}
|
||||
<div class="my-3 p-0 bg-white shadow-sm rounded-xl">
|
||||
<h6 class="border-bottom border-gray p-3 mb-0">
|
||||
{% if include.title %}{{ include.title }}{% else %}<i class="fas fa-star"></i> Selected Recent Publications{% endif %}
|
||||
<a href="{{ 'publications' | relative_url }}">(view all <i class="fas fa-angle-double-right"></i>)</a>
|
||||
</h6>
|
||||
{% for item in publications limit:include.limit %}
|
||||
{% include widgets/publication_item.html item=item first=false last=false %}
|
||||
{% endfor %}
|
||||
<h6 class="d-block p-3 mt-0 text-right">
|
||||
<a href="{{ 'publications' | relative_url }}">All publications <i class="fas fa-angle-double-right"></i></a>
|
||||
</h6>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
{% assign item = include.item %}
|
||||
<div class="d-none d-md-block">
|
||||
<div class="row no-gutters {% unless include.hide_bottom_border %}border-bottom{% endunless %} border-gray">
|
||||
<div class="col-md-3 col-xl-2 mb-md-0 p-md-3">
|
||||
{%- if item.cover -%}
|
||||
<img data-src="{{ item.cover | relative_url }}" alt="{{ item.title }}" class="lazy w-100 rounded-sm" src="{{ '/assets/images/empty_300x200.png' | relative_url }}">
|
||||
{%- else -%}
|
||||
<svg class="bubble-visual-hash lazy w-100 rounded-sm" data-bubble-visual-hash="{{ item.id }}" viewBox="0 0 300 200"></svg>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
<div class="col-md-9 col-xl-10 p-3 pl-md-0">
|
||||
<h5 class="mt-0 mb-1 font-weight-normal">{{ item.title }}</h5>
|
||||
<p class="mt-0 mb-0 small">{% include widgets/author_list.html authors=item.authors %}</p>
|
||||
<p class="mt-0 mb-0 small">{{item.pub_pre}}<i>{{ item.pub }}</i>{{ item.pub_post }} {{ item.pub_date }} {{ item.pub_last }} <span data-semantic-scholar-id="{{ item.semantic_scholar_id }}"></span></p>
|
||||
<p class="mt-0 mb-0 small text-muted">{{ item.abstract }}</p>
|
||||
|
||||
<p class="small pb-0 mb-0 lh-125 text-muted abstract-links">
|
||||
{% for link in item.links %}
|
||||
{% if link[1].url %}
|
||||
<a target="{{ link[1]['target'] }}" href="{{ link[1]['url'] }}">[{{ link[0] }}]</a>
|
||||
{% else %}
|
||||
<a target="_blank" href="{{ link[1] }}">[{{ link[0] }}]</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row no-gutters d-md-none {% unless include.hide_bottom_border %}border-bottom{% endunless %} border-gray {% if include.first %}rounded-xl-top{% endif %} {% if include.last %}rounded-xl-bottom{% endif %} {% if item.cover %}lazy{% endif %}" data-src="{{ item.cover | relative_url }}">
|
||||
<div class="w-100 {% if include.first %}rounded-xl-top{% endif %} {% if include.last %}rounded-xl-bottom{% endif %}" style="background-color: rgba(255,255,255,0.9);">
|
||||
<div class="d-flex align-items-start flex-column py-3 px-4">
|
||||
<div class="mb-auto"></div>
|
||||
<div>
|
||||
<h5 class="mt-0 mb-1 font-weight-normal">{{ item.title }}</h5>
|
||||
<p class="mt-0 mb-0 small">{% include widgets/author_list.html authors=item.authors %}</p>
|
||||
<p class="mt-0 mb-0 small">{{item.pub_pre}}<i>{{ item.pub }}</i>{{ item.pub_post }} {{ item.pub_date }} {{ item.pub_last }} <span data-semantic-scholar-id="{{ item.semantic_scholar_id }}"></span></p>
|
||||
<p class="mt-0 mb-0 small text-muted">{{ item.abstract }}</p>
|
||||
|
||||
<p class="small pb-0 mb-0 lh-125 text-muted abstract-links">
|
||||
{% for link in item.links %}
|
||||
{% if link[1].url %}
|
||||
<a target="{{ link[1]['target'] }}" href="{{ link[1]['url'] }}">[{{ link[0] }}]</a>
|
||||
{% else %}
|
||||
<a target="_blank" href="{{ link[1] }}">[{{ link[0] }}]</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,90 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<!-- Template: https://github.com/luost26/academic-homepage -->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>{{ page.title }} - {{ site.data.profile.navbar_name }}</title>
|
||||
|
||||
<!-- Stylesheets -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" integrity="sha512-P5MgMn1jBN01asBgU0z60Qk4QxiXo86+wlFahKrsQf37c9cro517WzVSPPV1tDKzhku2iJ2FVgL67wG03SGnNA==" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/academicons/1.9.1/css/academicons.min.css" integrity="sha512-b1ASx0WHgVFL5ZQhTgiPWX+68KjS38Jk87jg7pe+qC7q9YkEtFq0z7xCglv7qGIs/68d3mAp+StfC8WKC5SSAg==" crossorigin="anonymous" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,300;0,400;0,700;0,900;1,300;1,400;1,700;1,900&family=Fira+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Source+Code+Pro:ital,wght@0,200..900;1,200..900&display=swap" rel="stylesheet">
|
||||
<!-- Math and Code -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="{{ '/assets/css/global.css' | relative_url }}">
|
||||
<link rel="stylesheet" href="{{ '/assets/css/blog.css' | relative_url }}">
|
||||
</head>
|
||||
<body class="bg-light d-flex flex-column min-vh-100" {{ page.body_attr }}>
|
||||
{% include navbar.html active_page="Blog" %}
|
||||
|
||||
<main class="flex-grow-1">
|
||||
<div class="blog-layout-wrapper">
|
||||
<div class="blog-main">
|
||||
<article class="bg-white rounded-xl p-4 mb-4" style="border: 1px solid #f0f0f0;">
|
||||
<header class="mb-4">
|
||||
<h1 class="display-4 mb-3">{{ page.title }}</h1>
|
||||
<div class="text-muted mb-3">
|
||||
<i class="fas fa-calendar-alt"></i> {{ page.date | date: "%B %d, %Y" }}
|
||||
{% if page.tags %}
|
||||
<span class="ml-3">
|
||||
<i class="fas fa-tags"></i>
|
||||
{% for tag in page.tags %}
|
||||
<span class="badge badge-light">{{ tag }}</span>
|
||||
{% endfor %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="blog-content">
|
||||
{{ content }}
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<div class="blog-toc-sidebar">
|
||||
<nav id="blog-toc" class="blog-toc-nav">
|
||||
<div class="blog-toc-title">Table of Contents</div>
|
||||
<ul class="blog-toc-list"></ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{% include footer.html %}
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.lazy/1.7.9/jquery.lazy.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js" integrity="sha512-XKa9Hemdy1Ui3KSGgJdgMyYlUg1gM+QhL6cnlyTe2qzMCYm4nAZ1PsVerQzTTXzonUR+dmswHqgJPuwCq1MaAg==" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/github-buttons/2.14.2/buttons.min.js" integrity="sha512-OYwZx04hKFeFNYrWxIyo3atgGpb+cxU0ENWBZs72X7T9U+NoHPM1ftUn/Mfw7dRDXrqWA6M1wBg6z6fGE32aeA==" crossorigin="anonymous"></script>
|
||||
<script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
|
||||
<script src="https://unpkg.com/imagesloaded@5/imagesloaded.pkgd.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-core.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js" crossorigin="anonymous"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
renderMathInElement(document.body, {
|
||||
delimiters: [
|
||||
{left: '$$', right: '$$', display: true},
|
||||
{left: '$', right: '$', display: false}
|
||||
],
|
||||
throwOnError : false
|
||||
});
|
||||
|
||||
Prism.highlightAll();
|
||||
});
|
||||
</script>
|
||||
<script src="{{ '/assets/js/blog.js' | relative_url }}"></script>
|
||||
<script src="{{ '/assets/js/common.js' | relative_url }}"></script>
|
||||
<script src="{{ '/assets/js/bubble_visual_hash.js' | relative_url }}"></script>
|
||||
<script src="{{ '/assets/js/semantic_scholar_citation_count.js' | relative_url }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,31 +1,51 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<html lang="en">
|
||||
<!-- Template: https://github.com/luost26/academic-homepage -->
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{ page.title | default: site.title }}</title>
|
||||
<link rel="stylesheet" href="/assets/css/main.css">
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🔬</text></svg>">
|
||||
{% seo %}
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>{{ page.title }} - {{ site.data.profile.navbar_name }}</title>
|
||||
|
||||
<!-- Stylesheets -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" integrity="sha512-P5MgMn1jBN01asBgU0z60Qk4QxiXo86+wlFahKrsQf37c9cro517WzVSPPV1tDKzhku2iJ2FVgL67wG03SGnNA==" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/academicons/1.9.1/css/academicons.min.css" integrity="sha512-b1ASx0WHgVFL5ZQhTgiPWX+68KjS38Jk87jg7pe+qC7q9YkEtFq0z7xCglv7qGIs/68d3mAp+StfC8WKC5SSAg==" crossorigin="anonymous" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,300;0,400;0,700;0,900;1,300;1,400;1,700;1,900&family=Fira+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Source+Code+Pro:ital,wght@0,200..900;1,200..900&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="{{ '/assets/css/global.css' | relative_url }}">
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar">
|
||||
<div class="nav-inner">
|
||||
<a class="nav-brand" href="/">{{ site.name }}</a>
|
||||
<div class="nav-links">
|
||||
{% for item in site.data.navigation %}
|
||||
{% if item.external %}
|
||||
<a href="{{ item.url }}" target="_blank" rel="noopener">{{ item.title }}</a>
|
||||
{% else %}
|
||||
<a href="{{ item.url }}" {% if page.url == item.url %}class="active"{% endif %}>{{ item.title }}</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<body class="bg-light" {{ page.body_attr }}>
|
||||
{% include navbar.html %}
|
||||
<div class="{% if page.container_class %}{{ page.container_class }}{% else %}container-lg{% endif %}">
|
||||
{{content}}
|
||||
</div>
|
||||
</nav>
|
||||
<main>{{ content }}</main>
|
||||
<footer>
|
||||
<p>© {{ 'now' | date: "%Y" }} {{ site.name }} — <a href="mailto:{{ site.email }}">{{ site.email }}</a></p>
|
||||
</footer>
|
||||
{% include footer.html %}
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.lazy/1.7.9/jquery.lazy.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js" integrity="sha512-XKa9Hemdy1Ui3KSGgJdgMyYlUg1gM+QhL6cnlyTe2qzMCYm4nAZ1PsVerQzTTXzonUR+dmswHqgJPuwCq1MaAg==" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/github-buttons/2.14.2/buttons.min.js" integrity="sha512-OYwZx04hKFeFNYrWxIyo3atgGpb+cxU0ENWBZs72X7T9U+NoHPM1ftUn/Mfw7dRDXrqWA6M1wBg6z6fGE32aeA==" crossorigin="anonymous"></script>
|
||||
<script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
|
||||
<script src="https://unpkg.com/imagesloaded@5/imagesloaded.pkgd.min.js"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
renderMathInElement(document.body, {
|
||||
delimiters: [
|
||||
{left: '$$', right: '$$', display: true},
|
||||
{left: '$', right: '$', display: false}
|
||||
],
|
||||
throwOnError : false
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script src="{{ '/assets/js/common.js' | relative_url }}"></script>
|
||||
<script src="{{ '/assets/js/bubble_visual_hash.js' | relative_url }}"></script>
|
||||
<script src="{{ '/assets/js/semantic_scholar_citation_count.js' | relative_url }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="h-100">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>{{ page.title }}</title>
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" integrity="sha512-P5MgMn1jBN01asBgU0z60Qk4QxiXo86+wlFahKrsQf37c9cro517WzVSPPV1tDKzhku2iJ2FVgL67wG03SGnNA==" crossorigin="anonymous" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,300;0,400;0,700;0,900;1,300;1,400;1,700;1,900&family=Raleway:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="{{ '/assets/css/global.css' | relative_url }}">
|
||||
</head>
|
||||
<style type="text/css">
|
||||
.container {
|
||||
width: auto;
|
||||
max-width: 680px;
|
||||
padding: 0 15px;
|
||||
}
|
||||
</style>
|
||||
<body class="d-flex flex-column h-100">
|
||||
<main role="main" class="flex-shrink-0">
|
||||
<div class="container">
|
||||
{{ content }}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
title: Lorem ipsum sit amet, consectetur adipiscing elit, sed do eiusmod tempor
|
||||
date: 2022-01-12 00:01:00 +0800
|
||||
---
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
title: "Scientists Discover New Species of Bioluminescent Fish in Mariana Trench"
|
||||
date: 2023-11-28 08:15:00 -0500
|
||||
---
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: >-
|
||||
AI-Powered Robot Chef Wins International Culinary Competition
|
||||
<span class="badge badge-pill badge-info badge-publication">Featured</span>
|
||||
date: 2023-09-05 18:30:00 +0200
|
||||
---
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: >-
|
||||
First Human Settlement Established on Mars, Marking New Era of Space Exploration.
|
||||
<a href="https://google.com" target="_blank">Read more <i class="fas fa-angle-double-right"></i></a>
|
||||
date: 2024-01-30 10:00:00 -0800
|
||||
---
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
title: "Virtual Reality Theme Park Opens, Redefining Entertainment Industry"
|
||||
date: 2024-03-22 17:30:00 UTC
|
||||
---
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
title: "AI Transforms Music Industry: <strong>First AI-Composed Symphony</strong> Debuts in New York"
|
||||
date: 2024-10-18 20:45:00 -0400
|
||||
---
|
||||
@@ -0,0 +1,624 @@
|
||||
---
|
||||
layout: blog_post
|
||||
title: 'This is the title of the blog post'
|
||||
date: 2024-01-01
|
||||
tags:
|
||||
- Blog
|
||||
- Post
|
||||
- Tag
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem.
|
||||
|
||||
# Headers
|
||||
|
||||
```
|
||||
# h1 Heading 8-)
|
||||
## h2 Heading
|
||||
### h3 Heading
|
||||
#### h4 Heading
|
||||
##### h5 Heading
|
||||
###### h6 Heading
|
||||
|
||||
Alternatively, for H1 and H2, an underline-ish style:
|
||||
|
||||
Alt-H1
|
||||
======
|
||||
|
||||
Alt-H2
|
||||
------
|
||||
```
|
||||
|
||||
# h1 Heading 8-)
|
||||
## h2 Heading
|
||||
### h3 Heading
|
||||
#### h4 Heading
|
||||
##### h5 Heading
|
||||
###### h6 Heading
|
||||
|
||||
Alternatively, for H1 and H2, an underline-ish style:
|
||||
|
||||
Alt-H1
|
||||
======
|
||||
|
||||
Alt-H2
|
||||
------
|
||||
|
||||
------
|
||||
|
||||
# Emphasis
|
||||
|
||||
```
|
||||
Emphasis, aka italics, with *asterisks* or _underscores_.
|
||||
|
||||
Strong emphasis, aka bold, with **asterisks** or __underscores__.
|
||||
|
||||
Combined emphasis with **asterisks and _underscores_**.
|
||||
|
||||
Strikethrough uses two tildes. ~~Scratch this.~~
|
||||
|
||||
**This is bold text**
|
||||
|
||||
__This is bold text__
|
||||
|
||||
*This is italic text*
|
||||
|
||||
_This is italic text_
|
||||
|
||||
~~Strikethrough~~
|
||||
```
|
||||
|
||||
Emphasis, aka italics, with *asterisks* or _underscores_.
|
||||
|
||||
Strong emphasis, aka bold, with **asterisks** or __underscores__.
|
||||
|
||||
Combined emphasis with **asterisks and _underscores_**.
|
||||
|
||||
Strikethrough uses two tildes. ~~Scratch this.~~
|
||||
|
||||
**This is bold text**
|
||||
|
||||
__This is bold text__
|
||||
|
||||
*This is italic text*
|
||||
|
||||
_This is italic text_
|
||||
|
||||
~~Strikethrough~~
|
||||
|
||||
------
|
||||
|
||||
# Lists
|
||||
|
||||
```
|
||||
1. First ordered list item
|
||||
2. Another item
|
||||
⋅⋅* Unordered sub-list.
|
||||
1. Actual numbers don't matter, just that it's a number
|
||||
⋅⋅1. Ordered sub-list
|
||||
4. And another item.
|
||||
|
||||
⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).
|
||||
|
||||
⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅
|
||||
⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅
|
||||
⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)
|
||||
|
||||
* Unordered list can use asterisks
|
||||
- Or minuses
|
||||
+ Or pluses
|
||||
|
||||
1. Make my changes
|
||||
1. Fix bug
|
||||
2. Improve formatting
|
||||
- Make the headings bigger
|
||||
2. Push my commits to GitHub
|
||||
3. Open a pull request
|
||||
* Describe my changes
|
||||
* Mention all the members of my team
|
||||
* Ask for feedback
|
||||
|
||||
+ Create a list by starting a line with `+`, `-`, or `*`
|
||||
+ Sub-lists are made by indenting 2 spaces:
|
||||
- Marker character change forces new list start:
|
||||
* Ac tristique libero volutpat at
|
||||
+ Facilisis in pretium nisl aliquet
|
||||
- Nulla volutpat aliquam velit
|
||||
+ Very easy!
|
||||
```
|
||||
|
||||
1. First ordered list item
|
||||
2. Another item
|
||||
⋅⋅* Unordered sub-list.
|
||||
1. Actual numbers don't matter, just that it's a number
|
||||
⋅⋅1. Ordered sub-list
|
||||
4. And another item.
|
||||
|
||||
⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).
|
||||
|
||||
⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅
|
||||
⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅
|
||||
⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)
|
||||
|
||||
* Unordered list can use asterisks
|
||||
- Or minuses
|
||||
+ Or pluses
|
||||
|
||||
1. Make my changes
|
||||
1. Fix bug
|
||||
2. Improve formatting
|
||||
- Make the headings bigger
|
||||
2. Push my commits to GitHub
|
||||
3. Open a pull request
|
||||
* Describe my changes
|
||||
* Mention all the members of my team
|
||||
* Ask for feedback
|
||||
|
||||
+ Create a list by starting a line with `+`, `-`, or `*`
|
||||
+ Sub-lists are made by indenting 2 spaces:
|
||||
- Marker character change forces new list start:
|
||||
* Ac tristique libero volutpat at
|
||||
+ Facilisis in pretium nisl aliquet
|
||||
- Nulla volutpat aliquam velit
|
||||
+ Very easy!
|
||||
|
||||
------
|
||||
|
||||
# Task lists
|
||||
|
||||
```
|
||||
- [x] Finish my changes
|
||||
- [ ] Push my commits to GitHub
|
||||
- [ ] Open a pull request
|
||||
- [x] @mentions, #refs, [links](), **formatting**, and <del>tags</del> supported
|
||||
- [x] list syntax required (any unordered or ordered list supported)
|
||||
- [x] this is a complete item
|
||||
- [ ] this is an incomplete item
|
||||
```
|
||||
|
||||
- [x] Finish my changes
|
||||
- [ ] Push my commits to GitHub
|
||||
- [ ] Open a pull request
|
||||
- [x] @mentions, #refs, [links](), **formatting**, and <del>tags</del> supported
|
||||
- [x] list syntax required (any unordered or ordered list supported)
|
||||
- [ ] this is a complete item
|
||||
- [ ] this is an incomplete item
|
||||
|
||||
------
|
||||
|
||||
# Ignoring Markdown formatting
|
||||
|
||||
You can tell GitHub to ignore (or escape) Markdown formatting by using \ before the Markdown character.
|
||||
|
||||
```
|
||||
Let's rename \*our-new-project\* to \*our-old-project\*.
|
||||
```
|
||||
|
||||
Let's rename \*our-new-project\* to \*our-old-project\*.
|
||||
|
||||
------
|
||||
|
||||
# Links
|
||||
|
||||
```
|
||||
[I'm an inline-style link](https://www.google.com)
|
||||
|
||||
[I'm an inline-style link with title](https://www.google.com "Google's Homepage")
|
||||
|
||||
[I'm a reference-style link][Arbitrary case-insensitive reference text]
|
||||
|
||||
[I'm a relative reference to a repository file](../blob/master/LICENSE)
|
||||
|
||||
[You can use numbers for reference-style link definitions][1]
|
||||
|
||||
Or leave it empty and use the [link text itself].
|
||||
|
||||
URLs and URLs in angle brackets will automatically get turned into links.
|
||||
http://www.example.com or <http://www.example.com> and sometimes
|
||||
example.com (but not on Github, for example).
|
||||
|
||||
Some text to show that the reference links can follow later.
|
||||
|
||||
[arbitrary case-insensitive reference text]: https://www.mozilla.org
|
||||
[1]: http://slashdot.org
|
||||
[link text itself]: http://www.reddit.com
|
||||
```
|
||||
|
||||
[I'm an inline-style link](https://www.google.com)
|
||||
|
||||
[I'm an inline-style link with title](https://www.google.com "Google's Homepage")
|
||||
|
||||
[I'm a reference-style link][Arbitrary case-insensitive reference text]
|
||||
|
||||
[I'm a relative reference to a repository file](../blob/master/LICENSE)
|
||||
|
||||
[You can use numbers for reference-style link definitions][1]
|
||||
|
||||
Or leave it empty and use the [link text itself].
|
||||
|
||||
URLs and URLs in angle brackets will automatically get turned into links.
|
||||
http://www.example.com or <http://www.example.com> and sometimes
|
||||
example.com (but not on Github, for example).
|
||||
|
||||
Some text to show that the reference links can follow later.
|
||||
|
||||
[arbitrary case-insensitive reference text]: https://www.mozilla.org
|
||||
[1]: http://slashdot.org
|
||||
[link text itself]: http://www.reddit.com
|
||||
|
||||
------
|
||||
|
||||
# Images
|
||||
|
||||
```
|
||||
Here's our logo (hover to see the title text):
|
||||
|
||||
Inline-style:
|
||||

|
||||
|
||||
Reference-style:
|
||||
![alt text][logo]
|
||||
|
||||
[logo]: https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 2"
|
||||
|
||||

|
||||

|
||||
|
||||
Like links, Images also have a footnote style syntax
|
||||
|
||||
![Alt text][id]
|
||||
|
||||
With a reference later in the document defining the URL location:
|
||||
|
||||
[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
|
||||
```
|
||||
|
||||
Here's our logo (hover to see the title text):
|
||||
|
||||
Inline-style:
|
||||

|
||||
|
||||
Reference-style:
|
||||
![alt text][logo]
|
||||
|
||||
[logo]: {{ '/assets/images/etc/tim_the_beaver.png' | relative_url }} "Logo Title Text 2"
|
||||
|
||||

|
||||
|
||||
Like links, Images also have a footnote style syntax
|
||||
|
||||
![Alt text][id]
|
||||
|
||||
With a reference later in the document defining the URL location:
|
||||
|
||||
[id]: {{ '/assets/images/etc/cat2.jpg' | relative_url }} "Cat 2"
|
||||
|
||||
------
|
||||
|
||||
# [Footnotes](https://github.com/markdown-it/markdown-it-footnote)
|
||||
|
||||
```
|
||||
Footnote 1 link[^first].
|
||||
|
||||
Footnote 2 link[^second].
|
||||
|
||||
Inline footnote^[Text of inline footnote] definition.
|
||||
|
||||
Duplicated footnote reference[^second].
|
||||
|
||||
[^first]: Footnote **can have markup**
|
||||
|
||||
and multiple paragraphs.
|
||||
|
||||
[^second]: Footnote text.
|
||||
```
|
||||
|
||||
Footnote 1 link[^first].
|
||||
|
||||
Footnote 2 link[^second].
|
||||
|
||||
Inline footnote^[Text of inline footnote] definition.
|
||||
|
||||
Duplicated footnote reference[^second].
|
||||
|
||||
[^first]: Footnote **can have markup**
|
||||
|
||||
and multiple paragraphs.
|
||||
|
||||
[^second]: Footnote text.
|
||||
|
||||
------
|
||||
|
||||
# Code and Syntax Highlighting
|
||||
|
||||
```
|
||||
Inline `code` has `back-ticks around` it.
|
||||
```
|
||||
|
||||
Inline `code` has `back-ticks around` it.
|
||||
|
||||
```c#
|
||||
using System.IO.Compression;
|
||||
|
||||
#pragma warning disable 414, 3021
|
||||
|
||||
namespace MyApplication
|
||||
{
|
||||
[Obsolete("...")]
|
||||
class Program : IInterface
|
||||
{
|
||||
public static List<int> JustDoIt(int count)
|
||||
{
|
||||
Console.WriteLine($"Hello {Name}!");
|
||||
return new List<int>(new int[] { 1, 2, 3 })
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```css
|
||||
@font-face {
|
||||
font-family: Chunkfive; src: url('Chunkfive.otf');
|
||||
}
|
||||
|
||||
body, .usertext {
|
||||
color: #F0F0F0; background: #600;
|
||||
font-family: Chunkfive, sans;
|
||||
}
|
||||
|
||||
@import url(print.css);
|
||||
@media print {
|
||||
a[href^=http]::after {
|
||||
content: attr(href)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```javascript
|
||||
function $initHighlight(block, cls) {
|
||||
try {
|
||||
if (cls.search(/\bno\-highlight\b/) != -1)
|
||||
return process(block, true, 0x0F) +
|
||||
` class="${cls}"`;
|
||||
} catch (e) {
|
||||
/* handle exception */
|
||||
}
|
||||
for (var i = 0 / 2; i < classes.length; i++) {
|
||||
if (checkCondition(classes[i]) === undefined)
|
||||
console.log('undefined');
|
||||
}
|
||||
}
|
||||
|
||||
export $initHighlight;
|
||||
```
|
||||
|
||||
```php
|
||||
require_once 'Zend/Uri/Http.php';
|
||||
|
||||
namespace Location\Web;
|
||||
|
||||
interface Factory
|
||||
{
|
||||
static function _factory();
|
||||
}
|
||||
|
||||
abstract class URI extends BaseURI implements Factory
|
||||
{
|
||||
abstract function test();
|
||||
|
||||
public static $st1 = 1;
|
||||
const ME = "Yo";
|
||||
var $list = NULL;
|
||||
private $var;
|
||||
|
||||
/**
|
||||
* Returns a URI
|
||||
*
|
||||
* @return URI
|
||||
*/
|
||||
static public function _factory($stats = array(), $uri = 'http')
|
||||
{
|
||||
echo __METHOD__;
|
||||
$uri = explode(':', $uri, 0b10);
|
||||
$schemeSpecific = isset($uri[1]) ? $uri[1] : '';
|
||||
$desc = 'Multi
|
||||
line description';
|
||||
|
||||
// Security check
|
||||
if (!ctype_alnum($scheme)) {
|
||||
throw new Zend_Uri_Exception('Illegal scheme');
|
||||
}
|
||||
|
||||
$this->var = 0 - self::$st;
|
||||
$this->list = list(Array("1"=> 2, 2=>self::ME, 3 => \Location\Web\URI::class));
|
||||
|
||||
return [
|
||||
'uri' => $uri,
|
||||
'value' => null,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
echo URI::ME . URI::$st1;
|
||||
|
||||
__halt_compiler () ; datahere
|
||||
datahere
|
||||
datahere */
|
||||
datahere
|
||||
```
|
||||
|
||||
------
|
||||
|
||||
# Tables
|
||||
|
||||
```
|
||||
Colons can be used to align columns.
|
||||
|
||||
| Tables | Are | Cool |
|
||||
| ------------- |:-------------:| -----:|
|
||||
| col 3 is | right-aligned | $1600 |
|
||||
| col 2 is | centered | $12 |
|
||||
| zebra stripes | are neat | $1 |
|
||||
|
||||
There must be at least 3 dashes separating each header cell.
|
||||
The outer pipes (|) are optional, and you don't need to make the
|
||||
raw Markdown line up prettily. You can also use inline Markdown.
|
||||
|
||||
Markdown | Less | Pretty
|
||||
--- | --- | ---
|
||||
*Still* | `renders` | **nicely**
|
||||
1 | 2 | 3
|
||||
|
||||
| First Header | Second Header |
|
||||
| ------------- | ------------- |
|
||||
| Content Cell | Content Cell |
|
||||
| Content Cell | Content Cell |
|
||||
|
||||
| Command | Description |
|
||||
| --- | --- |
|
||||
| git status | List all new or modified files |
|
||||
| git diff | Show file differences that haven't been staged |
|
||||
|
||||
| Command | Description |
|
||||
| --- | --- |
|
||||
| `git status` | List all *new or modified* files |
|
||||
| `git diff` | Show file differences that **haven't been** staged |
|
||||
|
||||
| Left-aligned | Center-aligned | Right-aligned |
|
||||
| :--- | :---: | ---: |
|
||||
| git status | git status | git status |
|
||||
| git diff | git diff | git diff |
|
||||
|
||||
| Name | Character |
|
||||
| --- | --- |
|
||||
| Backtick | ` |
|
||||
| Pipe | \| |
|
||||
```
|
||||
|
||||
Colons can be used to align columns.
|
||||
|
||||
| Tables | Are | Cool |
|
||||
| ------------- |:-------------:| -----:|
|
||||
| col 3 is | right-aligned | $1600 |
|
||||
| col 2 is | centered | $12 |
|
||||
| zebra stripes | are neat | $1 |
|
||||
|
||||
There must be at least 3 dashes separating each header cell.
|
||||
The outer pipes (|) are optional, and you don't need to make the
|
||||
raw Markdown line up prettily. You can also use inline Markdown.
|
||||
|
||||
Markdown | Less | Pretty
|
||||
--- | --- | ---
|
||||
*Still* | `renders` | **nicely**
|
||||
1 | 2 | 3
|
||||
|
||||
| First Header | Second Header |
|
||||
| ------------- | ------------- |
|
||||
| Content Cell | Content Cell |
|
||||
| Content Cell | Content Cell |
|
||||
|
||||
| Command | Description |
|
||||
| --- | --- |
|
||||
| git status | List all new or modified files |
|
||||
| git diff | Show file differences that haven't been staged |
|
||||
|
||||
| Command | Description |
|
||||
| --- | --- |
|
||||
| `git status` | List all *new or modified* files |
|
||||
| `git diff` | Show file differences that **haven't been** staged |
|
||||
|
||||
| Left-aligned | Center-aligned | Right-aligned |
|
||||
| :--- | :---: | ---: |
|
||||
| git status | git status | git status |
|
||||
| git diff | git diff | git diff |
|
||||
|
||||
| Name | Character |
|
||||
| --- | --- |
|
||||
| Backtick | ` |
|
||||
| Pipe | \| |
|
||||
|
||||
------
|
||||
|
||||
# Blockquotes
|
||||
|
||||
```
|
||||
> Blockquotes are very handy in email to emulate reply text.
|
||||
> This line is part of the same quote.
|
||||
|
||||
Quote break.
|
||||
|
||||
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
|
||||
|
||||
> Blockquotes can also be nested...
|
||||
>> ...by using additional greater-than signs right next to each other...
|
||||
> > > ...or with spaces between arrows.
|
||||
```
|
||||
|
||||
> Blockquotes are very handy in email to emulate reply text.
|
||||
> This line is part of the same quote.
|
||||
|
||||
Quote break.
|
||||
|
||||
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
|
||||
|
||||
> Blockquotes can also be nested...
|
||||
>> ...by using additional greater-than signs right next to each other...
|
||||
> > > ...or with spaces between arrows.
|
||||
|
||||
------
|
||||
|
||||
# Inline HTML
|
||||
|
||||
```
|
||||
<dl>
|
||||
<dt>Definition list</dt>
|
||||
<dd>Is something people use sometimes.</dd>
|
||||
|
||||
<dt>Markdown in HTML</dt>
|
||||
<dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
|
||||
</dl>
|
||||
```
|
||||
|
||||
<dl>
|
||||
<dt>Definition list</dt>
|
||||
<dd>Is something people use sometimes.</dd>
|
||||
|
||||
<dt>Markdown in HTML</dt>
|
||||
<dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
|
||||
</dl>
|
||||
|
||||
------
|
||||
|
||||
# Horizontal Rules
|
||||
|
||||
```
|
||||
Three or more...
|
||||
|
||||
---
|
||||
|
||||
Hyphens
|
||||
|
||||
***
|
||||
|
||||
Asterisks
|
||||
|
||||
___
|
||||
|
||||
Underscores
|
||||
```
|
||||
|
||||
Three or more...
|
||||
|
||||
---
|
||||
|
||||
Hyphens
|
||||
|
||||
***
|
||||
|
||||
Asterisks
|
||||
|
||||
___
|
||||
|
||||
Underscores
|
||||
|
||||
------
|
||||
@@ -0,0 +1,624 @@
|
||||
---
|
||||
layout: blog_post
|
||||
title: 'This is the title of the blog post'
|
||||
date: 2025-01-01
|
||||
tags:
|
||||
- Blog
|
||||
- Post
|
||||
- Tag
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem.
|
||||
|
||||
# Headers
|
||||
|
||||
```
|
||||
# h1 Heading 8-)
|
||||
## h2 Heading
|
||||
### h3 Heading
|
||||
#### h4 Heading
|
||||
##### h5 Heading
|
||||
###### h6 Heading
|
||||
|
||||
Alternatively, for H1 and H2, an underline-ish style:
|
||||
|
||||
Alt-H1
|
||||
======
|
||||
|
||||
Alt-H2
|
||||
------
|
||||
```
|
||||
|
||||
# h1 Heading 8-)
|
||||
## h2 Heading
|
||||
### h3 Heading
|
||||
#### h4 Heading
|
||||
##### h5 Heading
|
||||
###### h6 Heading
|
||||
|
||||
Alternatively, for H1 and H2, an underline-ish style:
|
||||
|
||||
Alt-H1
|
||||
======
|
||||
|
||||
Alt-H2
|
||||
------
|
||||
|
||||
------
|
||||
|
||||
# Emphasis
|
||||
|
||||
```
|
||||
Emphasis, aka italics, with *asterisks* or _underscores_.
|
||||
|
||||
Strong emphasis, aka bold, with **asterisks** or __underscores__.
|
||||
|
||||
Combined emphasis with **asterisks and _underscores_**.
|
||||
|
||||
Strikethrough uses two tildes. ~~Scratch this.~~
|
||||
|
||||
**This is bold text**
|
||||
|
||||
__This is bold text__
|
||||
|
||||
*This is italic text*
|
||||
|
||||
_This is italic text_
|
||||
|
||||
~~Strikethrough~~
|
||||
```
|
||||
|
||||
Emphasis, aka italics, with *asterisks* or _underscores_.
|
||||
|
||||
Strong emphasis, aka bold, with **asterisks** or __underscores__.
|
||||
|
||||
Combined emphasis with **asterisks and _underscores_**.
|
||||
|
||||
Strikethrough uses two tildes. ~~Scratch this.~~
|
||||
|
||||
**This is bold text**
|
||||
|
||||
__This is bold text__
|
||||
|
||||
*This is italic text*
|
||||
|
||||
_This is italic text_
|
||||
|
||||
~~Strikethrough~~
|
||||
|
||||
------
|
||||
|
||||
# Lists
|
||||
|
||||
```
|
||||
1. First ordered list item
|
||||
2. Another item
|
||||
⋅⋅* Unordered sub-list.
|
||||
1. Actual numbers don't matter, just that it's a number
|
||||
⋅⋅1. Ordered sub-list
|
||||
4. And another item.
|
||||
|
||||
⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).
|
||||
|
||||
⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅
|
||||
⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅
|
||||
⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)
|
||||
|
||||
* Unordered list can use asterisks
|
||||
- Or minuses
|
||||
+ Or pluses
|
||||
|
||||
1. Make my changes
|
||||
1. Fix bug
|
||||
2. Improve formatting
|
||||
- Make the headings bigger
|
||||
2. Push my commits to GitHub
|
||||
3. Open a pull request
|
||||
* Describe my changes
|
||||
* Mention all the members of my team
|
||||
* Ask for feedback
|
||||
|
||||
+ Create a list by starting a line with `+`, `-`, or `*`
|
||||
+ Sub-lists are made by indenting 2 spaces:
|
||||
- Marker character change forces new list start:
|
||||
* Ac tristique libero volutpat at
|
||||
+ Facilisis in pretium nisl aliquet
|
||||
- Nulla volutpat aliquam velit
|
||||
+ Very easy!
|
||||
```
|
||||
|
||||
1. First ordered list item
|
||||
2. Another item
|
||||
⋅⋅* Unordered sub-list.
|
||||
1. Actual numbers don't matter, just that it's a number
|
||||
⋅⋅1. Ordered sub-list
|
||||
4. And another item.
|
||||
|
||||
⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).
|
||||
|
||||
⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅
|
||||
⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅
|
||||
⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)
|
||||
|
||||
* Unordered list can use asterisks
|
||||
- Or minuses
|
||||
+ Or pluses
|
||||
|
||||
1. Make my changes
|
||||
1. Fix bug
|
||||
2. Improve formatting
|
||||
- Make the headings bigger
|
||||
2. Push my commits to GitHub
|
||||
3. Open a pull request
|
||||
* Describe my changes
|
||||
* Mention all the members of my team
|
||||
* Ask for feedback
|
||||
|
||||
+ Create a list by starting a line with `+`, `-`, or `*`
|
||||
+ Sub-lists are made by indenting 2 spaces:
|
||||
- Marker character change forces new list start:
|
||||
* Ac tristique libero volutpat at
|
||||
+ Facilisis in pretium nisl aliquet
|
||||
- Nulla volutpat aliquam velit
|
||||
+ Very easy!
|
||||
|
||||
------
|
||||
|
||||
# Task lists
|
||||
|
||||
```
|
||||
- [x] Finish my changes
|
||||
- [ ] Push my commits to GitHub
|
||||
- [ ] Open a pull request
|
||||
- [x] @mentions, #refs, [links](), **formatting**, and <del>tags</del> supported
|
||||
- [x] list syntax required (any unordered or ordered list supported)
|
||||
- [x] this is a complete item
|
||||
- [ ] this is an incomplete item
|
||||
```
|
||||
|
||||
- [x] Finish my changes
|
||||
- [ ] Push my commits to GitHub
|
||||
- [ ] Open a pull request
|
||||
- [x] @mentions, #refs, [links](), **formatting**, and <del>tags</del> supported
|
||||
- [x] list syntax required (any unordered or ordered list supported)
|
||||
- [ ] this is a complete item
|
||||
- [ ] this is an incomplete item
|
||||
|
||||
------
|
||||
|
||||
# Ignoring Markdown formatting
|
||||
|
||||
You can tell GitHub to ignore (or escape) Markdown formatting by using \ before the Markdown character.
|
||||
|
||||
```
|
||||
Let's rename \*our-new-project\* to \*our-old-project\*.
|
||||
```
|
||||
|
||||
Let's rename \*our-new-project\* to \*our-old-project\*.
|
||||
|
||||
------
|
||||
|
||||
# Links
|
||||
|
||||
```
|
||||
[I'm an inline-style link](https://www.google.com)
|
||||
|
||||
[I'm an inline-style link with title](https://www.google.com "Google's Homepage")
|
||||
|
||||
[I'm a reference-style link][Arbitrary case-insensitive reference text]
|
||||
|
||||
[I'm a relative reference to a repository file](../blob/master/LICENSE)
|
||||
|
||||
[You can use numbers for reference-style link definitions][1]
|
||||
|
||||
Or leave it empty and use the [link text itself].
|
||||
|
||||
URLs and URLs in angle brackets will automatically get turned into links.
|
||||
http://www.example.com or <http://www.example.com> and sometimes
|
||||
example.com (but not on Github, for example).
|
||||
|
||||
Some text to show that the reference links can follow later.
|
||||
|
||||
[arbitrary case-insensitive reference text]: https://www.mozilla.org
|
||||
[1]: http://slashdot.org
|
||||
[link text itself]: http://www.reddit.com
|
||||
```
|
||||
|
||||
[I'm an inline-style link](https://www.google.com)
|
||||
|
||||
[I'm an inline-style link with title](https://www.google.com "Google's Homepage")
|
||||
|
||||
[I'm a reference-style link][Arbitrary case-insensitive reference text]
|
||||
|
||||
[I'm a relative reference to a repository file](../blob/master/LICENSE)
|
||||
|
||||
[You can use numbers for reference-style link definitions][1]
|
||||
|
||||
Or leave it empty and use the [link text itself].
|
||||
|
||||
URLs and URLs in angle brackets will automatically get turned into links.
|
||||
http://www.example.com or <http://www.example.com> and sometimes
|
||||
example.com (but not on Github, for example).
|
||||
|
||||
Some text to show that the reference links can follow later.
|
||||
|
||||
[arbitrary case-insensitive reference text]: https://www.mozilla.org
|
||||
[1]: http://slashdot.org
|
||||
[link text itself]: http://www.reddit.com
|
||||
|
||||
------
|
||||
|
||||
# Images
|
||||
|
||||
```
|
||||
Here's our logo (hover to see the title text):
|
||||
|
||||
Inline-style:
|
||||

|
||||
|
||||
Reference-style:
|
||||
![alt text][logo]
|
||||
|
||||
[logo]: https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 2"
|
||||
|
||||

|
||||

|
||||
|
||||
Like links, Images also have a footnote style syntax
|
||||
|
||||
![Alt text][id]
|
||||
|
||||
With a reference later in the document defining the URL location:
|
||||
|
||||
[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
|
||||
```
|
||||
|
||||
Here's our logo (hover to see the title text):
|
||||
|
||||
Inline-style:
|
||||

|
||||
|
||||
Reference-style:
|
||||
![alt text][logo]
|
||||
|
||||
[logo]: {{ '/assets/images/etc/tim_the_beaver.png' | relative_url }} "Logo Title Text 2"
|
||||
|
||||

|
||||
|
||||
Like links, Images also have a footnote style syntax
|
||||
|
||||
![Alt text][id]
|
||||
|
||||
With a reference later in the document defining the URL location:
|
||||
|
||||
[id]: {{ '/assets/images/etc/cat2.jpg' | relative_url }} "Cat 2"
|
||||
|
||||
------
|
||||
|
||||
# [Footnotes](https://github.com/markdown-it/markdown-it-footnote)
|
||||
|
||||
```
|
||||
Footnote 1 link[^first].
|
||||
|
||||
Footnote 2 link[^second].
|
||||
|
||||
Inline footnote^[Text of inline footnote] definition.
|
||||
|
||||
Duplicated footnote reference[^second].
|
||||
|
||||
[^first]: Footnote **can have markup**
|
||||
|
||||
and multiple paragraphs.
|
||||
|
||||
[^second]: Footnote text.
|
||||
```
|
||||
|
||||
Footnote 1 link[^first].
|
||||
|
||||
Footnote 2 link[^second].
|
||||
|
||||
Inline footnote^[Text of inline footnote] definition.
|
||||
|
||||
Duplicated footnote reference[^second].
|
||||
|
||||
[^first]: Footnote **can have markup**
|
||||
|
||||
and multiple paragraphs.
|
||||
|
||||
[^second]: Footnote text.
|
||||
|
||||
------
|
||||
|
||||
# Code and Syntax Highlighting
|
||||
|
||||
```
|
||||
Inline `code` has `back-ticks around` it.
|
||||
```
|
||||
|
||||
Inline `code` has `back-ticks around` it.
|
||||
|
||||
```c#
|
||||
using System.IO.Compression;
|
||||
|
||||
#pragma warning disable 414, 3021
|
||||
|
||||
namespace MyApplication
|
||||
{
|
||||
[Obsolete("...")]
|
||||
class Program : IInterface
|
||||
{
|
||||
public static List<int> JustDoIt(int count)
|
||||
{
|
||||
Console.WriteLine($"Hello {Name}!");
|
||||
return new List<int>(new int[] { 1, 2, 3 })
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```css
|
||||
@font-face {
|
||||
font-family: Chunkfive; src: url('Chunkfive.otf');
|
||||
}
|
||||
|
||||
body, .usertext {
|
||||
color: #F0F0F0; background: #600;
|
||||
font-family: Chunkfive, sans;
|
||||
}
|
||||
|
||||
@import url(print.css);
|
||||
@media print {
|
||||
a[href^=http]::after {
|
||||
content: attr(href)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```javascript
|
||||
function $initHighlight(block, cls) {
|
||||
try {
|
||||
if (cls.search(/\bno\-highlight\b/) != -1)
|
||||
return process(block, true, 0x0F) +
|
||||
` class="${cls}"`;
|
||||
} catch (e) {
|
||||
/* handle exception */
|
||||
}
|
||||
for (var i = 0 / 2; i < classes.length; i++) {
|
||||
if (checkCondition(classes[i]) === undefined)
|
||||
console.log('undefined');
|
||||
}
|
||||
}
|
||||
|
||||
export $initHighlight;
|
||||
```
|
||||
|
||||
```php
|
||||
require_once 'Zend/Uri/Http.php';
|
||||
|
||||
namespace Location\Web;
|
||||
|
||||
interface Factory
|
||||
{
|
||||
static function _factory();
|
||||
}
|
||||
|
||||
abstract class URI extends BaseURI implements Factory
|
||||
{
|
||||
abstract function test();
|
||||
|
||||
public static $st1 = 1;
|
||||
const ME = "Yo";
|
||||
var $list = NULL;
|
||||
private $var;
|
||||
|
||||
/**
|
||||
* Returns a URI
|
||||
*
|
||||
* @return URI
|
||||
*/
|
||||
static public function _factory($stats = array(), $uri = 'http')
|
||||
{
|
||||
echo __METHOD__;
|
||||
$uri = explode(':', $uri, 0b10);
|
||||
$schemeSpecific = isset($uri[1]) ? $uri[1] : '';
|
||||
$desc = 'Multi
|
||||
line description';
|
||||
|
||||
// Security check
|
||||
if (!ctype_alnum($scheme)) {
|
||||
throw new Zend_Uri_Exception('Illegal scheme');
|
||||
}
|
||||
|
||||
$this->var = 0 - self::$st;
|
||||
$this->list = list(Array("1"=> 2, 2=>self::ME, 3 => \Location\Web\URI::class));
|
||||
|
||||
return [
|
||||
'uri' => $uri,
|
||||
'value' => null,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
echo URI::ME . URI::$st1;
|
||||
|
||||
__halt_compiler () ; datahere
|
||||
datahere
|
||||
datahere */
|
||||
datahere
|
||||
```
|
||||
|
||||
------
|
||||
|
||||
# Tables
|
||||
|
||||
```
|
||||
Colons can be used to align columns.
|
||||
|
||||
| Tables | Are | Cool |
|
||||
| ------------- |:-------------:| -----:|
|
||||
| col 3 is | right-aligned | $1600 |
|
||||
| col 2 is | centered | $12 |
|
||||
| zebra stripes | are neat | $1 |
|
||||
|
||||
There must be at least 3 dashes separating each header cell.
|
||||
The outer pipes (|) are optional, and you don't need to make the
|
||||
raw Markdown line up prettily. You can also use inline Markdown.
|
||||
|
||||
Markdown | Less | Pretty
|
||||
--- | --- | ---
|
||||
*Still* | `renders` | **nicely**
|
||||
1 | 2 | 3
|
||||
|
||||
| First Header | Second Header |
|
||||
| ------------- | ------------- |
|
||||
| Content Cell | Content Cell |
|
||||
| Content Cell | Content Cell |
|
||||
|
||||
| Command | Description |
|
||||
| --- | --- |
|
||||
| git status | List all new or modified files |
|
||||
| git diff | Show file differences that haven't been staged |
|
||||
|
||||
| Command | Description |
|
||||
| --- | --- |
|
||||
| `git status` | List all *new or modified* files |
|
||||
| `git diff` | Show file differences that **haven't been** staged |
|
||||
|
||||
| Left-aligned | Center-aligned | Right-aligned |
|
||||
| :--- | :---: | ---: |
|
||||
| git status | git status | git status |
|
||||
| git diff | git diff | git diff |
|
||||
|
||||
| Name | Character |
|
||||
| --- | --- |
|
||||
| Backtick | ` |
|
||||
| Pipe | \| |
|
||||
```
|
||||
|
||||
Colons can be used to align columns.
|
||||
|
||||
| Tables | Are | Cool |
|
||||
| ------------- |:-------------:| -----:|
|
||||
| col 3 is | right-aligned | $1600 |
|
||||
| col 2 is | centered | $12 |
|
||||
| zebra stripes | are neat | $1 |
|
||||
|
||||
There must be at least 3 dashes separating each header cell.
|
||||
The outer pipes (|) are optional, and you don't need to make the
|
||||
raw Markdown line up prettily. You can also use inline Markdown.
|
||||
|
||||
Markdown | Less | Pretty
|
||||
--- | --- | ---
|
||||
*Still* | `renders` | **nicely**
|
||||
1 | 2 | 3
|
||||
|
||||
| First Header | Second Header |
|
||||
| ------------- | ------------- |
|
||||
| Content Cell | Content Cell |
|
||||
| Content Cell | Content Cell |
|
||||
|
||||
| Command | Description |
|
||||
| --- | --- |
|
||||
| git status | List all new or modified files |
|
||||
| git diff | Show file differences that haven't been staged |
|
||||
|
||||
| Command | Description |
|
||||
| --- | --- |
|
||||
| `git status` | List all *new or modified* files |
|
||||
| `git diff` | Show file differences that **haven't been** staged |
|
||||
|
||||
| Left-aligned | Center-aligned | Right-aligned |
|
||||
| :--- | :---: | ---: |
|
||||
| git status | git status | git status |
|
||||
| git diff | git diff | git diff |
|
||||
|
||||
| Name | Character |
|
||||
| --- | --- |
|
||||
| Backtick | ` |
|
||||
| Pipe | \| |
|
||||
|
||||
------
|
||||
|
||||
# Blockquotes
|
||||
|
||||
```
|
||||
> Blockquotes are very handy in email to emulate reply text.
|
||||
> This line is part of the same quote.
|
||||
|
||||
Quote break.
|
||||
|
||||
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
|
||||
|
||||
> Blockquotes can also be nested...
|
||||
>> ...by using additional greater-than signs right next to each other...
|
||||
> > > ...or with spaces between arrows.
|
||||
```
|
||||
|
||||
> Blockquotes are very handy in email to emulate reply text.
|
||||
> This line is part of the same quote.
|
||||
|
||||
Quote break.
|
||||
|
||||
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
|
||||
|
||||
> Blockquotes can also be nested...
|
||||
>> ...by using additional greater-than signs right next to each other...
|
||||
> > > ...or with spaces between arrows.
|
||||
|
||||
------
|
||||
|
||||
# Inline HTML
|
||||
|
||||
```
|
||||
<dl>
|
||||
<dt>Definition list</dt>
|
||||
<dd>Is something people use sometimes.</dd>
|
||||
|
||||
<dt>Markdown in HTML</dt>
|
||||
<dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
|
||||
</dl>
|
||||
```
|
||||
|
||||
<dl>
|
||||
<dt>Definition list</dt>
|
||||
<dd>Is something people use sometimes.</dd>
|
||||
|
||||
<dt>Markdown in HTML</dt>
|
||||
<dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
|
||||
</dl>
|
||||
|
||||
------
|
||||
|
||||
# Horizontal Rules
|
||||
|
||||
```
|
||||
Three or more...
|
||||
|
||||
---
|
||||
|
||||
Hyphens
|
||||
|
||||
***
|
||||
|
||||
Asterisks
|
||||
|
||||
___
|
||||
|
||||
Underscores
|
||||
```
|
||||
|
||||
Three or more...
|
||||
|
||||
---
|
||||
|
||||
Hyphens
|
||||
|
||||
***
|
||||
|
||||
Asterisks
|
||||
|
||||
___
|
||||
|
||||
Underscores
|
||||
|
||||
------
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
layout: blog_post
|
||||
title: 'Acknowledgement'
|
||||
date: 2026-03-17
|
||||
tags:
|
||||
- Blog
|
||||
- Post
|
||||
- Tag
|
||||
---
|
||||
|
||||
|
||||
Thanks to [Yuqing Xie](https://yqxie99.github.io/) and [Kun Chen](https://kwen-chen.github.io/) for the contributions of the blog feature!
|
||||
|
||||
## Section 1
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "Lorem ipsum: Dolor sit amet, consectetur adipiscing elit"
|
||||
date: 2023-01-05 00:01:00 +0800
|
||||
selected: true
|
||||
pub: "Nature Communications"
|
||||
pub_date: "2023"
|
||||
abstract: >-
|
||||
Cover image is a photo by Thomas Renaud on Unsplash. The abstract of the publication is meant to be a TLDR (very brief summary with 1~2 sentences) of your paper.
|
||||
cover: /assets/images/covers/cover1.jpg
|
||||
authors:
|
||||
- Your Name*
|
||||
- Robert White*
|
||||
- John Doe
|
||||
- Charles Green (Stanford)
|
||||
links:
|
||||
Paper: https://www.cell.com
|
||||
---
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
title: "Pharetra Massa Massa Ultricies Mi Nisl Tincidunt"
|
||||
date: 2023-01-21 00:01:00 +0800
|
||||
selected: false
|
||||
pub: "International Conference on Learning Representations (ICLR)"
|
||||
pub_date: "2023"
|
||||
semantic_scholar_id: 11ac0b5634a282f1a0da204b98e7473d8b480dfb # use this to retrieve citation count
|
||||
abstract: >-
|
||||
Photo by Dessy Dimcheva on Unsplash. Please keep the description of your publication as brief as possible. 1~2 sentences is ideal. Otherwise, it will look too noisy. This is a <strong>counterexample</strong> to show how the publication will look like when the abstract is too long.
|
||||
The tangerine is a type of citrus fruit that is orange in color, that is considered either a variety of Citrus reticulata, the mandarin orange, or a closely related species, under the name Citrus tangerina, or yet as a hybrid (Citrus × tangerina) of mandarin orange varieties, with some pomelo contribution.
|
||||
According to the Oxford English Dictionary (OED), the word "tangerine" was originally an adjective meaning "Of or pertaining to, or native of Tangier, a seaport in Morocco, on the Strait of Gibraltar" and "a native of Tangier." The name was first used for fruit coming from Tangier, Morocco, described as a mandarin variety. The OED cites this usage from Addison's The Tatler in 1710 with similar uses from the 1800s. The adjective was applied to the fruit, once known scientifically as "Citrus nobilis var. tangeriana" which grew in the region of Tangiers. This usage appears in the 1800s.
|
||||
|
||||
cover: /assets/images/covers/cover2.jpg
|
||||
authors:
|
||||
- Charles Green (MIT)*
|
||||
- John Doe*
|
||||
- Robert White
|
||||
- James Wang
|
||||
- Your Name#
|
||||
links:
|
||||
Paper: https://www.biorxiv.org
|
||||
Code: https://github.com
|
||||
Unsplash: https://unsplash.com/photos/orange-fruit-on-white-table-cloth-ISX_imp8t1o
|
||||
---
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: "Publication without cover image"
|
||||
date: 2023-01-1 00:01:00 +0800
|
||||
selected: false
|
||||
pub: "International Conference on Learning Representations (ICLR)"
|
||||
# pub_pre: "Submitted to "
|
||||
# pub_post: 'Under review.'
|
||||
# pub_last: ' <span class="badge badge-pill badge-publication badge-success">Spotlight</span>'
|
||||
pub_date: "2023"
|
||||
|
||||
abstract: >-
|
||||
When the cover image is not provided, it will generate a random colorful bubble images as the cover image using the <code>bubble_visual_hash.js</code> script.
|
||||
# cover: /assets/images/covers/cover3.jpg
|
||||
authors:
|
||||
- Your Name*#
|
||||
- James Wang*
|
||||
- Some Other Name
|
||||
- John Doe
|
||||
links:
|
||||
Code: https://github.com/luost26/bubble-visual-hash
|
||||
Demo: https://luost26.github.io/bubble-visual-hash
|
||||
---
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: "Convallis a cras semper auctor neque vitae rutrum quisque non tellus orci ac"
|
||||
date: 2024-05-12 00:01:00 +0800
|
||||
selected: true
|
||||
pub: "International Conference on Machine Learning (ICML)"
|
||||
# pub_pre: "Submitted to "
|
||||
# pub_post: 'Under review.'
|
||||
pub_last: ' <span class="badge badge-pill badge-publication badge-success">Spotlight</span>'
|
||||
pub_date: "2024"
|
||||
semantic_scholar_id: 204e3073870fae3d05bcbc2f6a8e263d9b72e776 # use this to retrieve citation count
|
||||
abstract: >-
|
||||
Photo by Pineapple Supply Co. on Unsplash. Please put a tldr (too-long-didnt-read, 1~2 sentences) of your publication here. It is not recommended to put the actual abstract here because it is usually too long to fit in. $\LaTeX$ is supported. $a=b+c$.
|
||||
cover: /assets/images/covers/cover3.jpg
|
||||
authors:
|
||||
- Your Name
|
||||
- James Wang
|
||||
- Some Other Name
|
||||
- John Doe
|
||||
links:
|
||||
Code: https://github.com/luost26/academic-homepage
|
||||
Unsplash: https://unsplash.com/photos/sliced-in-half-pineapple--_PLJZmHZzk
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
show: true
|
||||
width: 3
|
||||
date: 2020-01-12 00:01:00 +0800
|
||||
group: Cats
|
||||
---
|
||||
<div>
|
||||
<img src="{{ 'assets/images/etc/cat1.jpg' | relative_url }}" class="img-fluid rounded-xl" >
|
||||
</div>
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
show: true
|
||||
width: 3
|
||||
date: 2020-01-12 00:01:00 +0800
|
||||
group: Cats
|
||||
---
|
||||
<div>
|
||||
<img data-src="{{ 'assets/images/etc/cat2.jpg' | relative_url }}" class="lazy w-100 rounded-xl" src="{{ '/assets/images/empty_300x200.png' | relative_url }}" data-toggle="tooltip" data-placement="top" title="Caption of this image">
|
||||
</div>
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
show: true
|
||||
width: 3
|
||||
date: 2020-01-12 00:01:00 +0800
|
||||
group: Cats
|
||||
---
|
||||
<div>
|
||||
<a href="https://unsplash.com/photos/russian-blue-cat-standing-near-ceramic-vase-with-artificial-flowers-Vv45XEMJWZk" target="_blank">
|
||||
<img data-src="https://images.unsplash.com/photo-1497473376897-16fbb7552478?q=80&w=2970&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" class="lazy w-100 rounded-xl" src="{{ '/assets/images/empty_300x200.png' | relative_url }}">
|
||||
</a>
|
||||
</div>
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
show: true
|
||||
width: 3
|
||||
date: 2020-01-10 00:01:00 +0800
|
||||
group: Cats
|
||||
---
|
||||
<div>
|
||||
<img data-src="https://images.unsplash.com/photo-1536070800722-f1a29a336bc7?q=80&w=2970&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" class="lazy w-100 rounded-xl-top" src="{{ '/assets/images/empty_300x200.png' | relative_url }}">
|
||||
<div class="card-body">
|
||||
<p class="card-text">
|
||||
Meow! I am a cat. <a href="https://unsplash.com/photos/russian-blue-cat-in-close-up-photography-1pjqSWDcgwo" target="_blank">Unsplash</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
show: true
|
||||
width: 3
|
||||
date: 2019-01-12 00:01:00 +0800
|
||||
group: Cats
|
||||
---
|
||||
<div>
|
||||
<img data-src="{{ site.data.profile.portrait_url | relative_url }}" class="lazy w-100 rounded-xl" src="{{ '/assets/images/empty_300x200.png' | relative_url }}">
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
show: true
|
||||
width: 1
|
||||
date: 2017-01-13 00:01:00 +0800
|
||||
class: "" # Override the default card style
|
||||
---
|
||||
<div>
|
||||
<img src="{{ 'assets/images/badges/PKU_red.png' | relative_url }}" class="img-fluid rounded-xl" >
|
||||
</div>
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
show: true
|
||||
width: 1
|
||||
date: 2017-01-12 00:01:00 +0800
|
||||
class: "" # Override the default card style
|
||||
---
|
||||
<div>
|
||||
<img src="{{ 'assets/images/badges/MIT_Social_circle.png' | relative_url }}" class="img-fluid rounded-xl" >
|
||||
</div>
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
show: true
|
||||
width: 1
|
||||
date: 2017-01-11 00:01:00 +0800
|
||||
class: "" # Override the default card style
|
||||
---
|
||||
<div>
|
||||
<img src="{{ 'assets/images/etc/tim_the_beaver.png' | relative_url }}" class="img-fluid rounded-xl" >
|
||||
</div>
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
show: false
|
||||
width: 6
|
||||
date: 2020-01-12 00:01:00 +0800
|
||||
---
|
||||
<div class="m-4">
|
||||
<h5>Education</h5>
|
||||
<ul class="list-unstyled mb-1">
|
||||
{% for item in site.data.profile.education %}
|
||||
<li class="media mb-1">
|
||||
<img src="{{ item.logo | relative_url }}" alt="{{ item.name }}" style="width: 18px;" class="mr-1 mt-1">
|
||||
<div class="media-body">
|
||||
<div>{{ item.name }}</div>
|
||||
<div class="small">{{ item.dept }}</div>
|
||||
<div class="small d-flex">
|
||||
<div>{{ item.position }}</div>
|
||||
<div class="mt-auto ml-auto no-break"><em>{{ item.date }}</em></div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
show: true
|
||||
width: 4
|
||||
date: 2017-01-14 00:01:00 +0800
|
||||
---
|
||||
<div class="p-4 text-center">
|
||||
$a^2 + b^2 = c^2$
|
||||
</div>
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
show: true
|
||||
width: 4
|
||||
date: 2020-01-12 00:01:00 +0800
|
||||
---
|
||||
|
||||
<div class="p-4">
|
||||
<h5>Disable Showcase Page?</h5>
|
||||
<hr />
|
||||
<p>
|
||||
If you want to disable this showcase page, you can hide it from the navigation bar by removing the showcase in <code>data/navigation.yml</code>
|
||||
</p>
|
||||
</div>
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
show: true
|
||||
width: 4
|
||||
date: 2020-01-12 00:01:00 +0800
|
||||
---
|
||||
<div>
|
||||
<img data-src="{{ 'assets/images/covers/cover1.jpg' | relative_url }}" class="lazy w-100 rounded-xl" src="{{ '/assets/images/empty_300x200.png' | relative_url }}">
|
||||
|
||||
<div class="card-img-overlay" style="overflow: scroll; background: rgb(255,255,255,0.8)">
|
||||
<h5 class="card-title">Image Lazyload</h5>
|
||||
<p class="card-text">
|
||||
It is highly recommended to use lazyload for images to improve page loading speed, especially for pages with many images.
|
||||
Example code snippet:
|
||||
</p>
|
||||
<p class="card-text">
|
||||
{% raw %}
|
||||
<code><img data-src="[Image URL]" class="lazy w-100 rounded-xl" src="{{ '/assets/images/empty_300x200.png' | relative_url }}"></code>
|
||||
{% endraw %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
show: true
|
||||
width: 4
|
||||
date: 2020-01-12 00:01:00 +0800
|
||||
---
|
||||
<div>
|
||||
<img data-src="https://api.star-history.com/svg?repos=luost26/academic-homepage&type=Date" class="lazy w-100 rounded-xl-top" src="{{ '/assets/images/empty_300x200.png' | relative_url }}">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">GitHub Star History</h5>
|
||||
<p class="card-text">
|
||||
This image shows the star history of the GitHub repository of this website.
|
||||
</p>
|
||||
<p class="card-text"><small><a href="https://github.com/luost26/academic-homepage" target="_blank">Give a star!</a></small></p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
show: true
|
||||
width: 4
|
||||
date: 2021-09-12 00:01:00 +0800
|
||||
height: 295px
|
||||
images:
|
||||
- src: https://picsum.photos/seed/first1111/800/800
|
||||
title: Photo 1
|
||||
desc: Description 1.
|
||||
link: https://picsum.photos/
|
||||
- src: https://picsum.photos/seed/second22/800/800
|
||||
title: Photo 2
|
||||
desc: Description 2
|
||||
- src: https://picsum.photos/seed/third33/800/800
|
||||
---
|
||||
|
||||
{% include widgets/carousel.html id=page.id images=page.images height=page.height %}
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
show: true
|
||||
width: 8
|
||||
date: 2024-01-12 00:01:00 +0800
|
||||
---
|
||||
|
||||
<div class="p-4">
|
||||
<h2>Welcome to Showcase!</h2>
|
||||
<hr />
|
||||
<p>
|
||||
<code>Showcase</code> is a page where you can show off almost anything you want. It can be the photo of your pets, your favorite books, your favorite projects, or anything else you want to show to the world.
|
||||
</p>
|
||||
<p>
|
||||
You can create a new showcase item by creating a new file in the <code>_showcase</code> folder. It gives you the highest flexibility to customize the item using any HTML code.
|
||||
</p>
|
||||
<p>
|
||||
Cards are ordered by the <code>date</code> field in the front matter in descending order. The <code>width</code> field is used to determine the width of the card, ranging from 1 to 12.
|
||||
Layout is done by the <a href="https://masonry.desandro.com/" target="_blank">Masonry</a> library.
|
||||
</p>
|
||||
<p>
|
||||
For a tidy layout, it is recommended to set the width of the cards to be either multiple of 3 or multiple of 4 for all cards, except for small badges that do not take up much space (width=1).
|
||||
</p>
|
||||
</div>
|
||||
@@ -0,0 +1,266 @@
|
||||
.highlighter-rouge {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
/* Blog content styling */
|
||||
.blog-content {
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.blog-content h1,
|
||||
.blog-content h2,
|
||||
.blog-content h3,
|
||||
.blog-content h4,
|
||||
.blog-content h5,
|
||||
.blog-content h6 {
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 1rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.blog-content h1 {
|
||||
font-size: 2rem;
|
||||
border-bottom: 2px solid #e9ecef;
|
||||
padding-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.blog-content h2 {
|
||||
font-size: 1.5rem;
|
||||
border-bottom: 1px solid #e9ecef;
|
||||
padding-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.blog-content h3 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
.blog-content p {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.blog-content ul,
|
||||
.blog-content ol {
|
||||
margin-bottom: 1rem;
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
.blog-content li {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.blog-content blockquote {
|
||||
border-left: 3px solid #e0e0e0;
|
||||
padding-left: 1rem;
|
||||
margin: 1.5rem 0;
|
||||
font-style: italic;
|
||||
color: #6c757d;
|
||||
}
|
||||
|
||||
.blog-content img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
border-radius: 0.375rem;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
/* Multi-column image layouts */
|
||||
.blog-content .row img {
|
||||
margin: 0.5rem 0;
|
||||
transition: transform 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.blog-content .row img:hover {
|
||||
transform: scale(1.02);
|
||||
}
|
||||
|
||||
/* Image gallery styles */
|
||||
.blog-content .img-fluid {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.blog-content .shadow-sm {
|
||||
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
|
||||
}
|
||||
|
||||
/* Responsive image containers */
|
||||
.blog-content .col-md-6 img,
|
||||
.blog-content .col-md-4 img,
|
||||
.blog-content .col-lg-3 img {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
object-fit: cover;
|
||||
border-radius: 0.375rem;
|
||||
}
|
||||
|
||||
/* Mixed content layouts */
|
||||
.blog-content .col-md-8 {
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
.blog-content .col-md-4 {
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.blog-content .col-md-8,
|
||||
.blog-content .col-md-4 {
|
||||
padding: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.blog-content .col-md-6 img,
|
||||
.blog-content .col-md-4 img {
|
||||
height: 150px;
|
||||
}
|
||||
}
|
||||
|
||||
.blog-content table {
|
||||
width: 100%;
|
||||
margin-bottom: 1rem;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.blog-content table th,
|
||||
.blog-content table td {
|
||||
padding: 0.75rem;
|
||||
border: 1px solid #dee2e6;
|
||||
}
|
||||
|
||||
.blog-content table th {
|
||||
background-color: #f8f9fa;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* Math formula styling */
|
||||
.katex-display {
|
||||
margin: 1.5rem 0;
|
||||
text-align: center;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.katex {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
/* Ensure math formulas are properly displayed */
|
||||
.katex-display .katex {
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Fix for math formula containers */
|
||||
.katex-display {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Ensure proper spacing around math formulas */
|
||||
.blog-content .katex-display {
|
||||
margin: 2rem 0;
|
||||
padding: 1rem 0;
|
||||
}
|
||||
|
||||
/* Inline math styling */
|
||||
.katex-inline {
|
||||
display: inline;
|
||||
margin: 0 0.2em;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
.h1, .h2, .h3, .h4, .h5, .h6 {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* Blog layout — content preserves original width, TOC uses remaining space */
|
||||
.blog-layout-wrapper {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding: 0 15px;
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.blog-main {
|
||||
flex: 0 1 950px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.blog-toc-sidebar {
|
||||
flex: 0 0 auto;
|
||||
width: clamp(160px, 18vw, 360px);
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.blog-toc-sidebar {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
/* Blog Table of Contents */
|
||||
.blog-toc-nav {
|
||||
position: sticky;
|
||||
top: 6rem;
|
||||
max-height: calc(100vh - 8rem);
|
||||
overflow-y: auto;
|
||||
padding-left: 0.75rem;
|
||||
border-left: 2px solid #f0f0f0;
|
||||
}
|
||||
|
||||
.blog-toc-title {
|
||||
font-size: 0.875rem;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
color: #aaa;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.blog-toc-list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.blog-toc-list li {
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.blog-toc-list a {
|
||||
display: block;
|
||||
font-size: 0.8rem;
|
||||
line-height: 1.4;
|
||||
color: #999;
|
||||
text-decoration: none;
|
||||
padding: 0.15rem 0;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
.blog-toc-list a:hover {
|
||||
color: #2d3436;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.blog-toc-list a.toc-active {
|
||||
color: #212529;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.blog-toc-list .toc-h3 {
|
||||
padding-left: 0.75rem;
|
||||
}
|
||||
|
||||
.blog-toc-list .toc-h4 {
|
||||
padding-left: 1.5rem;
|
||||
}
|
||||
|
||||
/* Hide TOC scrollbar */
|
||||
.blog-toc-nav::-webkit-scrollbar {
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.blog-toc-nav {
|
||||
scrollbar-width: none;
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
@charset "utf-8";
|
||||
body {
|
||||
font-family: "Lato", sans-serif;
|
||||
font-weight: 400;
|
||||
padding-top: 5.0rem;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
.h1, .h2, .h3, .h4, .h5, .h6 {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.card {
|
||||
border-radius: 0.8rem!important;
|
||||
}
|
||||
|
||||
.card-img-overlay {
|
||||
border-radius: 0.8rem!important;
|
||||
}
|
||||
|
||||
.rounded-xl {
|
||||
border-radius: 0.8rem!important;
|
||||
}
|
||||
|
||||
.rounded-xl-bottom {
|
||||
border-bottom-right-radius: 0.8rem !important;
|
||||
border-bottom-left-radius: 0.8rem !important;
|
||||
}
|
||||
|
||||
.rounded-xl-top {
|
||||
border-top-left-radius: 0.8rem !important;
|
||||
border-top-right-radius: 0.8rem !important;
|
||||
}
|
||||
|
||||
|
||||
.text-profile-position {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.text-profile-bio {
|
||||
/* font-family: "Raleway"; */
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
background-color: rgba(255, 255, 255, 0.6) !important;
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
}
|
||||
|
||||
.inline-badge {
|
||||
height: 16px;
|
||||
vertical-align: -10%;
|
||||
margin-right: 2px;
|
||||
line-break: unset;
|
||||
}
|
||||
|
||||
.no-break {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.cover-image {
|
||||
width: 180px;
|
||||
max-height: 120px;
|
||||
}
|
||||
|
||||
.abstract-body {
|
||||
min-height: 100px;
|
||||
}
|
||||
|
||||
img.lazy {
|
||||
background-image: url('images/loading.gif');
|
||||
background-repeat: no-repeat;
|
||||
background-position: 50% 50%;
|
||||
background-size: 50px 50px;
|
||||
min-height: 80px;
|
||||
}
|
||||
|
||||
div.lazy {
|
||||
background-image: url('images/loading.gif');
|
||||
background-repeat: no-repeat;
|
||||
background-position: 50% 50%;
|
||||
background-size: 50px 50px;
|
||||
min-height: 80px;
|
||||
}
|
||||
|
||||
.badge-publication {
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
.email-text {
|
||||
font-family: Source Code Pro, monospace;
|
||||
}
|
||||
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 184 KiB |
|
After Width: | Height: | Size: 242 KiB |
|
After Width: | Height: | Size: 269 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 205 KiB |
@@ -0,0 +1,57 @@
|
||||
(function () {
|
||||
var tocList = document.querySelector('.blog-toc-list');
|
||||
if (!tocList) return;
|
||||
|
||||
var content = document.querySelector('.blog-content');
|
||||
var headings = content.querySelectorAll('h1, h2, h3');
|
||||
var navbarHeight = 90;
|
||||
|
||||
if (headings.length === 0) {
|
||||
document.getElementById('blog-toc').style.display = 'none';
|
||||
return;
|
||||
}
|
||||
|
||||
// Add scroll-margin to all headings so anchor links clear the navbar
|
||||
headings.forEach(function (heading, i) {
|
||||
if (!heading.id) {
|
||||
heading.id = 'heading-' + i;
|
||||
}
|
||||
heading.style.scrollMarginTop = navbarHeight + 'px';
|
||||
|
||||
var li = document.createElement('li');
|
||||
var a = document.createElement('a');
|
||||
a.href = '#' + heading.id;
|
||||
a.textContent = heading.textContent;
|
||||
a.className = 'toc-' + heading.tagName.toLowerCase();
|
||||
a.addEventListener('click', function (e) {
|
||||
e.preventDefault();
|
||||
var target = document.getElementById(heading.id);
|
||||
if (target) {
|
||||
window.scrollTo({
|
||||
top: target.offsetTop - navbarHeight,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
history.pushState(null, null, '#' + heading.id);
|
||||
}
|
||||
});
|
||||
li.appendChild(a);
|
||||
tocList.appendChild(li);
|
||||
});
|
||||
|
||||
// Highlight active heading on scroll
|
||||
var tocLinks = tocList.querySelectorAll('a');
|
||||
function updateActive() {
|
||||
var scrollPos = window.scrollY + navbarHeight + 10;
|
||||
var current = null;
|
||||
headings.forEach(function (heading) {
|
||||
if (heading.offsetTop <= scrollPos) {
|
||||
current = heading.id;
|
||||
}
|
||||
});
|
||||
tocLinks.forEach(function (link) {
|
||||
link.classList.toggle('toc-active', link.getAttribute('href') === '#' + current);
|
||||
});
|
||||
}
|
||||
window.addEventListener('scroll', updateActive, { passive: true });
|
||||
updateActive();
|
||||
})();
|
||||
@@ -0,0 +1,122 @@
|
||||
// Formatted version of a popular md5 implementation
|
||||
// Original copyright (c) Paul Johnston & Greg Holt.
|
||||
function md5(inputString) {
|
||||
var hc = "0123456789abcdef";
|
||||
function rh(n) { var j, s = ""; for (j = 0; j <= 3; j++) s += hc.charAt((n >> (j * 8 + 4)) & 0x0F) + hc.charAt((n >> (j * 8)) & 0x0F); return s; }
|
||||
function ad(x, y) { var l = (x & 0xFFFF) + (y & 0xFFFF); var m = (x >> 16) + (y >> 16) + (l >> 16); return (m << 16) | (l & 0xFFFF); }
|
||||
function rl(n, c) { return (n << c) | (n >>> (32 - c)); }
|
||||
function cm(q, a, b, x, s, t) { return ad(rl(ad(ad(a, q), ad(x, t)), s), b); }
|
||||
function ff(a, b, c, d, x, s, t) { return cm((b & c) | ((~b) & d), a, b, x, s, t); }
|
||||
function gg(a, b, c, d, x, s, t) { return cm((b & d) | (c & (~d)), a, b, x, s, t); }
|
||||
function hh(a, b, c, d, x, s, t) { return cm(b ^ c ^ d, a, b, x, s, t); }
|
||||
function ii(a, b, c, d, x, s, t) { return cm(c ^ (b | (~d)), a, b, x, s, t); }
|
||||
function sb(x) {
|
||||
var i; var nblk = ((x.length + 8) >> 6) + 1; var blks = new Array(nblk * 16); for (i = 0; i < nblk * 16; i++) blks[i] = 0;
|
||||
for (i = 0; i < x.length; i++) blks[i >> 2] |= x.charCodeAt(i) << ((i % 4) * 8);
|
||||
blks[i >> 2] |= 0x80 << ((i % 4) * 8); blks[nblk * 16 - 2] = x.length * 8; return blks;
|
||||
}
|
||||
var i, x = sb("" + inputString), a = 1732584193, b = -271733879, c = -1732584194, d = 271733878, olda, oldb, oldc, oldd;
|
||||
for (i = 0; i < x.length; i += 16) {
|
||||
olda = a; oldb = b; oldc = c; oldd = d;
|
||||
a = ff(a, b, c, d, x[i + 0], 7, -680876936); d = ff(d, a, b, c, x[i + 1], 12, -389564586); c = ff(c, d, a, b, x[i + 2], 17, 606105819);
|
||||
b = ff(b, c, d, a, x[i + 3], 22, -1044525330); a = ff(a, b, c, d, x[i + 4], 7, -176418897); d = ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
||||
c = ff(c, d, a, b, x[i + 6], 17, -1473231341); b = ff(b, c, d, a, x[i + 7], 22, -45705983); a = ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
||||
d = ff(d, a, b, c, x[i + 9], 12, -1958414417); c = ff(c, d, a, b, x[i + 10], 17, -42063); b = ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
||||
a = ff(a, b, c, d, x[i + 12], 7, 1804603682); d = ff(d, a, b, c, x[i + 13], 12, -40341101); c = ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
||||
b = ff(b, c, d, a, x[i + 15], 22, 1236535329); a = gg(a, b, c, d, x[i + 1], 5, -165796510); d = gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
||||
c = gg(c, d, a, b, x[i + 11], 14, 643717713); b = gg(b, c, d, a, x[i + 0], 20, -373897302); a = gg(a, b, c, d, x[i + 5], 5, -701558691);
|
||||
d = gg(d, a, b, c, x[i + 10], 9, 38016083); c = gg(c, d, a, b, x[i + 15], 14, -660478335); b = gg(b, c, d, a, x[i + 4], 20, -405537848);
|
||||
a = gg(a, b, c, d, x[i + 9], 5, 568446438); d = gg(d, a, b, c, x[i + 14], 9, -1019803690); c = gg(c, d, a, b, x[i + 3], 14, -187363961);
|
||||
b = gg(b, c, d, a, x[i + 8], 20, 1163531501); a = gg(a, b, c, d, x[i + 13], 5, -1444681467); d = gg(d, a, b, c, x[i + 2], 9, -51403784);
|
||||
c = gg(c, d, a, b, x[i + 7], 14, 1735328473); b = gg(b, c, d, a, x[i + 12], 20, -1926607734); a = hh(a, b, c, d, x[i + 5], 4, -378558);
|
||||
d = hh(d, a, b, c, x[i + 8], 11, -2022574463); c = hh(c, d, a, b, x[i + 11], 16, 1839030562); b = hh(b, c, d, a, x[i + 14], 23, -35309556);
|
||||
a = hh(a, b, c, d, x[i + 1], 4, -1530992060); d = hh(d, a, b, c, x[i + 4], 11, 1272893353); c = hh(c, d, a, b, x[i + 7], 16, -155497632);
|
||||
b = hh(b, c, d, a, x[i + 10], 23, -1094730640); a = hh(a, b, c, d, x[i + 13], 4, 681279174); d = hh(d, a, b, c, x[i + 0], 11, -358537222);
|
||||
c = hh(c, d, a, b, x[i + 3], 16, -722521979); b = hh(b, c, d, a, x[i + 6], 23, 76029189); a = hh(a, b, c, d, x[i + 9], 4, -640364487);
|
||||
d = hh(d, a, b, c, x[i + 12], 11, -421815835); c = hh(c, d, a, b, x[i + 15], 16, 530742520); b = hh(b, c, d, a, x[i + 2], 23, -995338651);
|
||||
a = ii(a, b, c, d, x[i + 0], 6, -198630844); d = ii(d, a, b, c, x[i + 7], 10, 1126891415); c = ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
||||
b = ii(b, c, d, a, x[i + 5], 21, -57434055); a = ii(a, b, c, d, x[i + 12], 6, 1700485571); d = ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
||||
c = ii(c, d, a, b, x[i + 10], 15, -1051523); b = ii(b, c, d, a, x[i + 1], 21, -2054922799); a = ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
||||
d = ii(d, a, b, c, x[i + 15], 10, -30611744); c = ii(c, d, a, b, x[i + 6], 15, -1560198380); b = ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
||||
a = ii(a, b, c, d, x[i + 4], 6, -145523070); d = ii(d, a, b, c, x[i + 11], 10, -1120210379); c = ii(c, d, a, b, x[i + 2], 15, 718787259);
|
||||
b = ii(b, c, d, a, x[i + 9], 21, -343485551); a = ad(a, olda); b = ad(b, oldb); c = ad(c, oldc); d = ad(d, oldd);
|
||||
}
|
||||
return rh(a) + rh(b) + rh(c) + rh(d);
|
||||
}
|
||||
|
||||
|
||||
// This script is inspired by https://github.com/dakridge/identicon
|
||||
|
||||
createHashGroupForString = function (str) {
|
||||
var hashGroup = [];
|
||||
var hash = md5(str);
|
||||
for (var i = 0; i < hash.length; i += 1) {
|
||||
var byte = parseInt(hash[i], 16);
|
||||
hashGroup.push(byte);
|
||||
}
|
||||
return hashGroup;
|
||||
}
|
||||
|
||||
createBubbleInfo = function (hashGroup, n, w, h) {
|
||||
var maxN = hashGroup.length / 2;
|
||||
n = n < maxN ? n : maxN;
|
||||
var wh = w < h ? w : h;
|
||||
var scaleX = function (v) { return (w / 16) * v; };
|
||||
var scaleY = function (v) { return (h / 16) * v; };
|
||||
var radius = function (v) { var min = 10; var max = wh / 2; return min + ((v / 16) * (max - min)); };
|
||||
var color = function (i) {
|
||||
var c = [
|
||||
"#1f77b4", "#aec7e8", // blue
|
||||
"#ff7f0e", "#ffbb78", // orange
|
||||
"#2ca02c", "#98df8a", // green
|
||||
"#d62728", "#ff9896", // red
|
||||
"#9467bd", "#c5b0d5", // purple
|
||||
"#8c564b", "#c49c94", // brown
|
||||
// "#e377c2", "#f7b6d2", // pink
|
||||
// "#7f7f7f", "#c7c7c7", // gray
|
||||
"#bcbd22", "#dbdb8d", // yellow
|
||||
"#17becf", "#9edae5", // cyan
|
||||
];
|
||||
return c[i % c.length];
|
||||
};
|
||||
|
||||
var bubbleInfo = [];
|
||||
for (var i = 0; i < n; i++) {
|
||||
var xRel = hashGroup[2 * i];
|
||||
var yRel = hashGroup[2 * i + 1];
|
||||
bubbleInfo.push({
|
||||
x: scaleX(xRel),
|
||||
y: scaleY(yRel),
|
||||
radius: radius(hashGroup[(xRel * yRel) % hashGroup.length]),
|
||||
color: color(xRel + yRel)
|
||||
});
|
||||
}
|
||||
return bubbleInfo;
|
||||
}
|
||||
|
||||
|
||||
drawBubble = function (svg, bubbleInfo) {
|
||||
// Sort bubbles by radius in descending order
|
||||
bubbleInfo.sort(function (a, b) {
|
||||
return b.radius - a.radius;
|
||||
});
|
||||
for (var i = 0; i < bubbleInfo.length; i++) {
|
||||
var bubble = bubbleInfo[i];
|
||||
var circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
|
||||
circle.setAttribute("cx", bubble.x);
|
||||
circle.setAttribute("cy", bubble.y);
|
||||
circle.setAttribute("r", bubble.radius);
|
||||
circle.setAttribute("fill", bubble.color);
|
||||
circle.setAttribute("fill-opacity", 0.75);
|
||||
svg.appendChild(circle);
|
||||
}
|
||||
}
|
||||
|
||||
var canvases = document.querySelectorAll(".bubble-visual-hash");
|
||||
canvases.forEach(function (canvas) {
|
||||
var hash = canvas.getAttribute("data-bubble-visual-hash");
|
||||
var width = canvas.viewBox.baseVal.width;
|
||||
var height = canvas.viewBox.baseVal.height;
|
||||
var bubbleInfo = createBubbleInfo(createHashGroupForString(hash), 8, width, height);
|
||||
drawBubble(canvas, bubbleInfo);
|
||||
});
|
||||
@@ -0,0 +1,42 @@
|
||||
// aHR0cHM6Ly9naXRodWIuY29tL2x1b3N0MjYvYWNhZGVtaWMtaG9tZXBhZ2U=
|
||||
$(function () {
|
||||
lazyLoadOptions = {
|
||||
scrollDirection: 'vertical',
|
||||
effect: 'fadeIn',
|
||||
effectTime: 300,
|
||||
placeholder: "",
|
||||
onError: function(element) {
|
||||
console.log('[lazyload] Error loading ' + element.data('src'));
|
||||
},
|
||||
afterLoad: function(element) {
|
||||
if (element.is('img')) {
|
||||
// remove background-image style
|
||||
element.css('background-image', 'none');
|
||||
element.css('min-height', '0');
|
||||
} else if (element.is('div')) {
|
||||
// set the style to background-size: cover;
|
||||
element.css('background-size', 'cover');
|
||||
element.css('background-position', 'center');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$('img.lazy, div.lazy:not(.always-load)').Lazy({visibleOnly: true, ...lazyLoadOptions});
|
||||
$('div.lazy.always-load').Lazy({visibleOnly: false, ...lazyLoadOptions});
|
||||
|
||||
$('[data-toggle="tooltip"]').tooltip()
|
||||
|
||||
var $grid = $('.grid').masonry({
|
||||
"percentPosition": true,
|
||||
"itemSelector": ".grid-item",
|
||||
"columnWidth": ".grid-sizer"
|
||||
});
|
||||
// layout Masonry after each image loads
|
||||
$grid.imagesLoaded().progress(function () {
|
||||
$grid.masonry('layout');
|
||||
});
|
||||
|
||||
$(".lazy").on("load", function () {
|
||||
$grid.masonry('layout');
|
||||
});
|
||||
})
|
||||
@@ -0,0 +1,68 @@
|
||||
const citationCountElements = document.querySelectorAll('[data-semantic-scholar-id]');
|
||||
citationCountElements.forEach(element => {
|
||||
const id = element.getAttribute('data-semantic-scholar-id');
|
||||
if (id) {
|
||||
element.setAttribute('data-semantic-scholar-id', id.toLowerCase());
|
||||
}
|
||||
});
|
||||
|
||||
const semanticScholarIds = new Set(Array.from(citationCountElements).map(element => element.getAttribute('data-semantic-scholar-id')).filter(id => id));
|
||||
|
||||
let uncachedSemanticScholarIds = [];
|
||||
semanticScholarIds.forEach(id => {
|
||||
const cacheKey = `semanticScholarCitationCount:${id}`;
|
||||
const cachedData = localStorage.getItem(cacheKey);
|
||||
if (cachedData) {
|
||||
const { _, timestamp } = JSON.parse(cachedData);
|
||||
// If cached data is older than 1 hour, consider it uncached
|
||||
if (Date.now() - timestamp > 1 * 60 * 60 * 1000) {
|
||||
uncachedSemanticScholarIds.push(id);
|
||||
}
|
||||
} else {
|
||||
uncachedSemanticScholarIds.push(id);
|
||||
}
|
||||
});
|
||||
|
||||
let showSemanticScholarCitationCount = () => {
|
||||
// Update the DOM with the cached citation counts
|
||||
semanticScholarIds.forEach(id => {
|
||||
const cacheKey = `semanticScholarCitationCount:${id}`;
|
||||
const cachedData = localStorage.getItem(cacheKey);
|
||||
if (cachedData) {
|
||||
const { citationCount } = JSON.parse(cachedData);
|
||||
const elements = document.querySelectorAll(`[data-semantic-scholar-id="${id}"]`);
|
||||
elements.forEach(element => {
|
||||
element.innerHTML = `<a class="badge badge-pill badge-publication badge-info" href="https://www.semanticscholar.org/paper/${id}" target="_blank"><i class="ai ai-semantic-scholar"></i> ${parseInt(citationCount).toLocaleString()} citations</a>`;
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (uncachedSemanticScholarIds.length > 0) {
|
||||
fetch('https://api.semanticscholar.org/graph/v1/paper/batch?fields=citationCount', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
ids: Array.from(semanticScholarIds)
|
||||
})
|
||||
}).then(response => {
|
||||
return response.json();
|
||||
}).then(data => {
|
||||
data.forEach(paper => {
|
||||
console.log(paper);
|
||||
// Cache citation count data
|
||||
const cacheKey = `semanticScholarCitationCount:${paper.paperId}`;
|
||||
const cacheData = {
|
||||
citationCount: paper.citationCount,
|
||||
timestamp: Date.now()
|
||||
};
|
||||
localStorage.setItem(cacheKey, JSON.stringify(cacheData));
|
||||
});
|
||||
}).catch(error => {
|
||||
console.error('Error fetching Semantic Scholar data:', error);
|
||||
}).finally(showSemanticScholarCitationCount);
|
||||
} else {
|
||||
showSemanticScholarCitationCount();
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
---
|
||||
layout: default
|
||||
title : Blog
|
||||
navbar_title: Blog
|
||||
body_attr: >-
|
||||
data-spy="scroll" data-target="#navbar-year" data-offset="100"
|
||||
---
|
||||
|
||||
{% assign blogs_by_year = site.posts | sort: "date" | reverse | group_by_exp: "item", "item.date | date: '%Y'" %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-10">
|
||||
{% for year in blogs_by_year %}
|
||||
{% assign num_blogs = year.items | size %}
|
||||
<h2 class="pt-4" id="year-{{ year.name }}">{{ year.name }}</h2>
|
||||
<div class="my-0 p-0 bg-white shadow-sm rounded-xl">
|
||||
{% for item in year.items %}
|
||||
{% include widgets/blog_card.html item=item hide_bottom_border=forloop.last first=forloop.first last=forloop.last %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="col-2 d-none d-lg-block">
|
||||
<div id="navbar-year" class="nav nav-pills flex-column sticky-top" style="top: 80px">
|
||||
{% for year in blogs_by_year %}
|
||||
<a class="nav-link d-block" href="#year-{{ year.name }}">{{ year.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1,78 +1,39 @@
|
||||
---
|
||||
layout: default
|
||||
title: Home
|
||||
url: /
|
||||
title : Homepage
|
||||
navbar_title: Home
|
||||
---
|
||||
<div class="profile">
|
||||
<div>
|
||||
<div class="profile-photo-placeholder">👨🔬</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="profile-name">{{ site.name }}</div>
|
||||
<div class="profile-position">{{ site.position }} — <a href="{{ site.affiliation_link }}">{{ site.affiliation }}</a></div>
|
||||
<p class="profile-bio">{{ site.data.profile.bio }}</p>
|
||||
<div class="profile-links">
|
||||
{% if site.email %}<a href="mailto:{{ site.email }}">✉ Email</a>{% endif %}
|
||||
{% if site.github %}<a href="https://github.com/{{ site.github }}" target="_blank">GitHub</a>{% endif %}
|
||||
{% if site.linkedin %}<a href="https://linkedin.com/in/{{ site.linkedin }}" target="_blank">LinkedIn</a>{% endif %}
|
||||
{% if site.google_scholar %}<a href="{{ site.google_scholar }}" target="_blank">Google Scholar</a>{% endif %}
|
||||
{% if site.orcid %}<a href="https://orcid.org/{{ site.orcid }}" target="_blank">ORCID</a>{% endif %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-3 col-md-4">
|
||||
{% include widgets/profile_card_mini.html %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-9 col-md-8">
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">Actualités</div>
|
||||
<ul class="news-list">
|
||||
{% for item in site.news limit:5 %}
|
||||
<li class="news-item">
|
||||
<span class="news-date">{{ item.date | date: "%b %Y" }}</span>
|
||||
<span>{{ item.content | markdownify | remove: '<p>' | remove: '</p>' }}</span>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% include widgets/profile_card_bio_only.html %}
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">Publications sélectionnées</div>
|
||||
<div class="pub-list">
|
||||
{% assign selected = site.publications | where: "selected", true %}
|
||||
{% for pub in selected %}
|
||||
<div class="pub-card">
|
||||
<div>
|
||||
<div class="pub-title">{{ pub.title }}</div>
|
||||
<div class="pub-authors">{{ pub.authors }}</div>
|
||||
<div class="pub-venue">{{ pub.venue }}, {{ pub.year }}</div>
|
||||
<div class="pub-links">
|
||||
{% if pub.paper_url %}<a href="{{ pub.paper_url }}" target="_blank">Paper</a>{% endif %}
|
||||
{% if pub.code_url %}<a href="{{ pub.code_url }}" target="_blank">Code</a>{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Debugging widgets -->
|
||||
{% include widgets/debug_repo_name.html %}
|
||||
{% include widgets/debug_url.html %}
|
||||
|
||||
{% if site.data.display.homepage.show_experience %}
|
||||
{% include widgets/experience_card.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.display.homepage.show_news %}
|
||||
{% assign count_news = site.news | size %}
|
||||
{% if count_news > 0 %}
|
||||
{% include widgets/news_card.html limit=site.data.display.homepage.num_news %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.display.homepage.show_selected_publications %}
|
||||
{% assign pubs = site.publications | sort: "date" | reverse | where: "selected", true %}
|
||||
{%
|
||||
include widgets/publication_card.html
|
||||
publications=pubs
|
||||
title='<i class="fas fa-star"></i> Selected Publications'
|
||||
%}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">Intérêts</div>
|
||||
<div class="interests-list">
|
||||
{% for interest in site.data.profile.interests %}
|
||||
<span class="interest-tag">{{ interest }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">Formation</div>
|
||||
<ul class="edu-list">
|
||||
{% for edu in site.data.profile.education %}
|
||||
<li class="edu-item">
|
||||
<div>
|
||||
<div class="edu-degree">{{ edu.degree }}</div>
|
||||
<div style="font-size:13px;color:var(--text-muted)">{{ edu.institution }}</div>
|
||||
</div>
|
||||
<div class="edu-year">{{ edu.year }}</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
---
|
||||
layout: default
|
||||
title : Homepage
|
||||
navbar_title: Home (Layout 2)
|
||||
---
|
||||
{% include widgets/profile_card.html %}
|
||||
|
||||
{% if site.data.display.homepage.show_experience %}
|
||||
{% include widgets/experience_card.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.display.homepage.show_news %}
|
||||
{% assign count_news = site.news | size %}
|
||||
{% if count_news > 0 %}
|
||||
{% include widgets/news_card.html limit=site.data.display.homepage.num_news %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.display.homepage.show_selected_publications %}
|
||||
{% assign pubs = site.publications | sort: "date" | reverse | where: "selected", true %}
|
||||
{%
|
||||
include widgets/publication_card.html
|
||||
publications=pubs
|
||||
title='<i class="fas fa-star"></i> Selected Publications'
|
||||
%}
|
||||
{% endif %}
|
||||
@@ -1,27 +1,32 @@
|
||||
---
|
||||
layout: default
|
||||
title: Publications
|
||||
url: /publications
|
||||
title : Publications
|
||||
navbar_title: Publications
|
||||
body_attr: >-
|
||||
data-spy="scroll" data-target="#navbar-year" data-offset="100"
|
||||
---
|
||||
<h1 style="font-size:1.5rem;font-weight:600;margin-bottom:2rem">Publications</h1>
|
||||
<div class="pub-list">
|
||||
{% assign pubs_by_year = site.publications | group_by: "year" | sort: "name" | reverse %}
|
||||
{% for year_group in pubs_by_year %}
|
||||
<div style="margin-bottom:2rem">
|
||||
<div style="font-size:1rem;font-weight:600;color:var(--text-muted);margin-bottom:1rem">{{ year_group.name }}</div>
|
||||
{% for pub in year_group.items %}
|
||||
<div class="pub-card" style="margin-bottom:1rem">
|
||||
<div>
|
||||
<div class="pub-title">{{ pub.title }}</div>
|
||||
<div class="pub-authors">{{ pub.authors }}</div>
|
||||
<div class="pub-venue">{{ pub.venue }}</div>
|
||||
<div class="pub-links">
|
||||
{% if pub.paper_url %}<a href="{{ pub.paper_url }}" target="_blank">Paper</a>{% endif %}
|
||||
{% if pub.code_url %}<a href="{{ pub.code_url }}" target="_blank">Code</a>{% endif %}
|
||||
|
||||
{% assign pubs_by_year = site.publications | sort: "date" | reverse | group_by_exp: "item", "item.date | date: '%Y'" %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-10">
|
||||
{% for year in pubs_by_year %}
|
||||
{% assign num_papers = year.items | size %}
|
||||
<h2 class="pt-4" id="year-{{ year.name }}">{{ year.name }}</h2>
|
||||
<div class="my-0 p-0 bg-white shadow-sm rounded-xl">
|
||||
{% for item in year.items %}
|
||||
{% include widgets/publication_item.html item=item hide_bottom_border=forloop.last first=forloop.first last=forloop.last %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div class="col-2 d-none d-lg-block">
|
||||
<div id="navbar-year" class="nav nav-pills flex-column sticky-top" style="top: 80px">
|
||||
{% for year in pubs_by_year %}
|
||||
<a class="nav-link d-block" href="#year-{{ year.name }}">{{ year.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,19 +1,32 @@
|
||||
---
|
||||
layout: default
|
||||
title: Projets
|
||||
url: /showcase
|
||||
title : Showcase
|
||||
navbar_title: Showcase
|
||||
container_class: container-xl
|
||||
---
|
||||
<h1 style="font-size:1.5rem;font-weight:600;margin-bottom:2rem">Projets</h1>
|
||||
<div class="showcase-grid">
|
||||
{% for project in site.showcase %}
|
||||
<a class="showcase-card" href="{{ project.url }}" {% if project.url contains 'http' %}target="_blank"{% endif %} style="display:block;text-decoration:none;color:inherit">
|
||||
<div class="showcase-title">{{ project.title }}</div>
|
||||
<div class="showcase-desc">{{ project.description }}</div>
|
||||
<div class="showcase-tags">
|
||||
{% for tag in project.tags %}
|
||||
<span class="showcase-tag">{{ tag }}</span>
|
||||
{% endfor %}
|
||||
|
||||
{% assign cards_by_group = site.showcase | sort: "date" | reverse | where: "show", true | group_by_exp: "item", "item.group" %}
|
||||
|
||||
{% for group in cards_by_group %}
|
||||
<h1>{{ group.name }}</h1>
|
||||
<div class="row grid mb-4">
|
||||
<div class="grid-sizer col-1"></div>
|
||||
{% for item in group.items %}
|
||||
{% if item.width >= 6 -%}
|
||||
{%- assign width_sm = 12 -%}
|
||||
{%- assign width_xs = 12 -%}
|
||||
{%- elsif item.width >= 2 -%}
|
||||
{%- assign width_sm = 6 -%}
|
||||
{%- assign width_xs = 6 -%}
|
||||
{%- else -%}
|
||||
{%- assign width_sm = item.width | times: 2 | at_most: 12 -%}
|
||||
{%- assign width_xs = item.width | times: 2 | at_most: 12 -%}
|
||||
{%- endif -%}
|
||||
<div class="p-2 grid-item col-md-{{ item.width | at_most: 12 }} col-sm-{{ width_sm }} col-{{ width_xs }}">
|
||||
<div class="{% if item.class != null %}{{ item.class }}{% else %}card border-0 shadow-sm bg-white{% endif %}">
|
||||
{{ item.content }}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||