Academic Pages - 学术个人网站模板

Academic Pages - 学术个人网站模板

项目标题与描述

Academic Pages 是一个基于 Jekyll 的 GitHub Pages 模板,专为学术人员设计。它提供了一种简单的方式来创建和管理个人学术网站,支持展示出版物、演讲、教学经历等内容。该项目是一个开箱即用的模板,用户可以通过 GitHub Pages 免费托管自己的网站。

功能特性

  • 多内容类型支持:包括出版物、演讲、教学经历、博客文章等。
  • 响应式设计:适配各种设备屏幕。
  • Markdown 支持:所有内容都可以用 Markdown 编写。
  • 数据驱动:通过 YAML 和 JSON 文件管理内容。
  • 多种布局:提供归档页、标签页、分类页等多种布局。
  • 地图功能:展示演讲地点的集群地图。
  • CV 支持:支持 Markdown 和 JSON 两种格式的简历。
  • 社交分享:集成社交媒体分享功能。
  • 评论系统:支持 Disqus、Facebook 等评论系统。

安装指南

  1. 注册 GitHub 账户:如果没有 GitHub 账户,请先注册并确认邮箱。
  2. 使用模板:点击仓库右上角的 "Use this template" 按钮。
  3. 创建仓库:在 "New repository" 页面,输入仓库名为 "[你的 GitHub 用户名].github.io"。
  4. 配置网站:设置站点范围的配置并添加你的内容。
  5. 上传文件:将 PDF 等文件上传到 files/ 目录。
  6. 本地运行(可选):
    • 安装 Ruby、Bundler 和 Node.js
    • 运行 bundle install 安装依赖
    • 运行 bundle exec jekyll serve 启动本地服务器

使用说明

基本使用



这是论文的详细描述...

演讲地图

项目包含一个 Jupyter Notebook (talkmap.ipynb),可以从 _talks/ 目录中的 Markdown 文件提取位置信息并生成演讲地点地图。

核心代码

演讲地图生成脚本

# Leaflet cluster map of talk locations
import frontmatter
import glob
import getorg
from geopy import Nominatim
from geopy.exc import GeocoderTimedOut

TIMEOUT = 5
g = glob.glob("_talks/*.md")
geocoder = Nominatim(user_agent="academicpages.github.io")
location_dict = {}

for file in g:
    data = frontmatter.load(file)
    data = data.to_dict()
    if 'location' not in data:
        continue
        
    title = data['title'].strip()
    venue = data['venue'].strip()
    location = data['location'].strip()
    description = f"{title}<br />{venue}; {location}"
    
    try:
        location_dict[description] = geocoder.geocode(location, timeout=TIMEOUT)
        print(description, location_dict[description])
    except Exception as ex:
        print(f"Error processing {location}: {ex}")

m = getorg.orgmap.create_map_obj()
getorg.orgmap.output_html_cluster_map(location_dict, folder_name="talkmap", hashed_usernames=False)

Markdown 生成脚本

# Publications markdown generator
import pandas as pd
import os

publications = pd.read_csv("publications.tsv", sep="\t", header=0)

html_escape_table = {"&": "&amp;", '"': "&quot;", "'": "&apos;"}

def html_escape(text):
    return "".join(html_escape_table.get(c,c) for c in text)

for row, item in publications.iterrows():
    md_filename = f"{item.pub_date}-{item.url_slug}.md"
    html_filename = f"{item.pub_date}-{item.url_slug}"
    year = item.pub_date[:4]
    
    md = f"""---
title: "{item.title}"
collection: publications
permalink: /publication/{html_filename}
date: {item.pub_date}
venue: '{html_escape(item.venue)}'"""

    if len(str(item.excerpt)) > 5:
        md += f"\nexcerpt: '{html_escape(item.excerpt)}'"
    if len(str(item.paper_url)) > 5:
        md += f"\npaperurl: '{item.paper_url}'"
    
    md += f"\ncitation: '{html_escape(item.citation)}'\n---\n"
    
    if len(str(item.paper_url)) > 5:
        md += f"\n<a href='{item.paper_url}'>Download paper here</a>\n"
    if len(str(item.excerpt)) > 5:
        md += f"\n{html_escape(item.excerpt)}\n"
    
    md += f"\nRecommended citation: {item.citation}"
    
    with open(f"../_publications/{md_filename}", 'w') as f:
        f.write(md)

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

posted @ 2025-07-02 08:01  qife  阅读(105)  评论(0)    收藏  举报