搭建个人博客教程

本文参考知乎专栏《教你免费搭建个人博客,Hexo&Github》,感谢作者。
但在实践搭建博客过程中稍有不同。
系统:Windows 7/10 64 位,MacOS;编辑器:sublime text3, Typora;控制台:CMD, Git Bash, Terminal;搭建博客:Hexo+GitHub
用户名:lxmymjr

安装

  1. 进入个人 GitHub 主页,右上角 + 号,选择 new repository,Repository name 填用户名。
  2. 安装 Node.js
    Windows 系统直接官网下载安装。
    MacOS 系统推荐使用 Homebrew 安装:在 Terminal 中输入 brew install node
    安装 Homebrew:在 Terminal 中输入
    1
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  3. 安装 Git
    Windows 系统直接官网下载安装。
    MacOS 系统在 Terminal 中输入 brew install git(一般系统自带,可省略此步)。
  4. 安装完成后,在开始菜单里找到 "Git"->"Git Bash",输入:
    $ git config --global user.name "用户名" (不要引号)
    $ git config --global user.email "注册邮箱" (不要引号)
    名称和注册邮箱是 GitHub 上的(MacOS 无需此步)。
  5. 安装 Hexo:输入 $(sudo) npm install -g hexo-cli
  6. 安装 pandoc(MacOS 需要安装):输入 $ brew install pandoc

更新

  1. 更新 Node.js 版本:在官网上下载安装包覆盖安装。
  2. 更新 npm 版本:在命令行或终端中输入 (sudo) npm install npm@latest -g 进行更新,输入 npm -v 查看版本号,在官网中查看最新版本号。
  3. 更新 npm package 版本:
    命令行或终端中输入 npm outdatednpm -g outdated 列出需要更新的版本。
    命令行或终端中输入 npm updatenpm -g update 更新到 outdated 列出 wanted 的版本。
    命令行或终端中输入 npm install package-name@latest 强制更新到最新版本。
  4. 更新 Hexo 版本:在 Hexo 博客的根目录右键运行 Git Bash 并输入 npm outdated 检查最新版本的模块,确认根目录下有 package.json 文件。根据最新版本的模块检查结果修改 package.json 文件中对应的版本号。删除根目录下的 node_modules 文件夹,然后输入 npm install --save 更新模块。输入 hexo version 检查版本信息。输入 npm outdated -g 检查 Hexo CLI 是否有新版本,如有则输入 npm install -g hexo-cli 进行升级。

配置

  1. 新建文件夹 "Blog" 作为 Hexo 博客的根目录。
  2. 在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ hexo i "文件夹名",此处起名为 "Blog"。
  3. 在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ hexo g,生成文章;输入 $ hexo s,启动本地服务器。访问 http://localhost:4000/ 即可查看博客效果。
  4. 打开 Git Bash(Windows)/Terminal(MacOS),输入 $(sudo) ssh-keygen -t rsa -C "GitHub的注册邮箱地址",一直回车直到出现信息 Your public key has been saved in /path/to/id_rsa.pub
    MacOS:先检查 SSH Key 是否已经生成,在 Terminal 上输入 ls -al ~/.ssh
  5. 根据路径找到 id_rsa.pub,用 sublime 打开,复制全部内容,然后打开网址(GitHub ->Setting -> SSH and GPG keys),点击 New SSH key 按钮,Title 填写 "Blog",Key 填写刚刚复制的内容,完成后点击 Add SSH key 按钮。
  6. 在 Blog 目录下,用 sublime 打开站点配置文件(_config.yml 文件),修改网站相关信息:
    1
    2
    3
    4
    5
    6
    7
    8
    title: #网站标题
    subtitle: #副标题
    description: #网页描述
    author: #作者名
    deploy:
    type: git
    repo: https://github.com/"用户名"/"用户名".github.io.git
    branch: master #配置部署

发表文章

  1. 在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ hexo n "文章标题"
  2. 在 "Blog\_posts" 目录下找到文章 "文章标题.md",用 sublime 打开,使用 Markdown 语法写文章。
  3. 在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ hexo g,生成文章。
  4. 在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ hexo d,会弹出 GitHub Login 窗口,输入你的 GitHub 账号和密码。
  5. 然后打开网址:"用户名".github.io 就可以看到已经发布的文章了。

删除文章

  1. 在 "Blog\_posts" 目录下找到要删除的文章,直接删除。
  2. 如果需要删除文章中的本地资源(图片,视频,音频等),需删除 "Blog" 目录下的资源,并且删除 "Blog" 目录下的资源。
  3. 在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ hexo g,重新生成文章。
  4. 在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ hexo d,重新发表文章。

加密访问

  1. 使用插件 hexo-blog-encrypt
  2. 在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ npm install hexo-blog-encrypt --save
  3. 在 Hexo 博客的根目录下的站点配置文件中启用该插件:
    1
    2
    3
    # Security
    encrypt:
    enable: true
  4. 在每篇需要加密的文章配置
    1
    2
    3
    password: #设置密码
    abstract: Enter the password to read. #设置预览内容
    message: Enter the password to read. #设置提示框内容

定制主题

本博客使用 NexT 主题:详见 GitHub官网

  1. 安装 NexT: 在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ git clone https://github.com/next-theme/hexo-theme-next themes/next
    如果 hexo 是 5.0.0 以上,则可以直接输入 npm install hexo-theme-next
  2. 启用主题:与所有 Hexo 主题启用的模式一样。当安装完成后,打开 Hexo 博客的根目录下的站点配置文件,找到 theme 字段,并将其值更改为 next。在切换主题之后或者更改样式后,最好使用 $ hexo clean 来清除 Hexo 的缓存。
  3. 选择 Scheme:Scheme 是 NexT 提供的一种特性,借助于 Scheme,NexT 为你提供多种不同的外观。同时,几乎所有的配置都可以在 Scheme 之间共用。
    Scheme 的切换通过更改主题配置文件,搜索 scheme 关键字。你会看到有三行 scheme 的配置,将你需用启用的 scheme 前面注释 #去除即可。
  4. 设置菜单:NexT 默认的菜单项有(标注的项表示需要手动创建这个页面):
键值 设定值 显示文本
home home: / 主页
archives archives: /archives 归档页
categories categories: /categories 分类页
tags tags: /tags 标签页
about about: /about 关于页面
commonweal commonweal: /404.html 公益 404

 添加「标签 / 分类」页面:在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ hexo new page tags或者categories
 编辑刚新建的页面,将页面的 type 设置为 tags,主题将自动为这个页面显示分类。页面内容如下:

1
2
3
4
title: 标签/分类
date: yyyy-mm-dd hh:mm:ss
type: "tags"或者type: "categories"
---

 将post_meta的updated_at字段的值改为true以启动文章修改时间显示。

  1. 设置头像:编辑主题配置文件,修改字段 avatar,值设置成头像的链接地址(完整的互联网 URI 或者站点内的地址)。
  2. 字数统计:在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ npm install hexo-word-counter --save。编辑 Hexo 博客的根目录下的站点配置文件,新增以下内容到任意位置,然后在主题配置文件中配置 symbols_count_time 项目:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # in _config.yml
    symbols_count_time:
    symbols: true
    time: true
    total_symbols: true
    total_time: true
    exclude_codeblock: false
    awl: 4
    wpm: 275
    suffix: "mins."

    # in _config.next.yml
    symbols_count_time:
    separated_meta: true
    item_text_post: true
    item_text_total: false
  3. 本地搜索功能:在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ npm install hexo-generator-searchdb --save。编辑 Hexo 博客的根目录下的站点配置文件,新增以下内容到任意位置,然后在主题配置文件中配置 local_search 项目:
    1
    2
    3
    4
    5
    search:
    path: search.xml
    field: post
    format: html
    limit: 10000
  4. 新建 Blog/source/_data/styles.styl 文件:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    // Custom styles.
    //修改右上角xmliu's blog颜色及高度
    .site-brand-container {
    background: #0080FF;
    }

    .site-meta {
    background: #0080FF;
    padding: 0 5px;
    }

    //扩大左侧栏
    .sidebar {
    width: 300px;
    }

    //去掉目录中Home和Search上下的空白
    .menu {
    padding: 0em 0;
    }

    //减少主界面文章标题和预览之间距离
    .posts-expand .post-header {
    margin: 10px 0 10px 0;
    }

    //减少主界面文章预览和Read more按钮之间距离
    .post-button {
    margin-top: 10px;
    }

    //将background.jpg放在node_modules\hexo-theme-next\source\images目录下
    body {
    background: url(/images/background.jpg);
    background-attachment: fixed;
    }

    //页面底部文字变白色
    .footer {
    color: white;
    }

    //Archive界面
    //去掉title
    .posts-collapse .collection-title {
    display: none;
    }

    //去掉年份上下空白
    .posts-collapse .post-content .collection-year {
    margin: 0;
    }

    //去掉标题上下空白
    .posts-collapse .post-content .post-header {
    margin: 0;
    }

    //减少左边距
    .posts-collapse .post-content {
    margin: 0;
    }

    //取消整栏上下空白
    .post-block {
    padding-top: 20px
    padding-bottom: 20px
    }

    @media (min-width: 1200px) {
    //缩小两边距离
    .main {
    width: 1360px;
    }

    //扩大主内容栏
    .main-inner {
    width: calc(100% - 312px);
    }

    //扩大左侧栏
    .header-inner {
    width: 300px;
    }
    }

SEO 优化指南

方便搜索引擎收录本博客,参考文章基于 Hexo 中 Next 主题的 SEO 优化指南Hexo 插件之百度主动提交链接

生成站点地图提交到 Google

需要先安装 hexo-generator-sitemap 插件,在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ npm install hexo-generator-sitemap --save
然后编辑 Hexo 博客的根目录下的站点配置文件,新增以下内容到任意位置:

1
2
sitemap:
path: sitemap.xml

安装完这个插件,再重启hexo(hexo g),就能生成sitemap.xml文件了。
进入Google Search Console的网址前缀,输入本博客的网址,选择“其他验证方法”中的“HTML标记”,复制其中的元标记到your-hexo-site\themes\next\layout\_partials\head\head.swig中的line5或者将验证码复制到主题配置文件中的google_site_verification字段中。
然后进行验证,然后在控制台中提交站点地图文件。

生成网址提交到百度

因为 GitHub 禁止百度爬虫访问博客,导致博客无法被百度收录。
注册百度站长工具,提交你的站点网址,即网站的根地址。然后在工具 -> 网页抓取 -> 链接提交里找到密钥。
格式:http://data.zz.baidu.com/urls?site=<your website>&token=<your token>
接下来需要安装 hexo-baidu-url-submit 插件:在 Hexo 博客的根目录右键运行 Git Bash 并输入:$ npm install hexo-baidu-url-submit --save
然后编辑 Hexo 博客的根目录下的站点配置文件,新增以下内容到任意位置:

1
2
3
4
5
baidu_url_submit:
count: n # 提交最新的n个链接
host: # <你的网站根地址>
token: your_token # 上述获得的密钥
path: baidu_urls.txt # 所需提交的网址的存放文件

注意,此插件的配置文件中包含密钥,请妥善管理好博客源码。
可以把源码保存在本地,如果要托管在 git 仓库里,请选择私有仓库
最后,加入新的 deployer:

1
2
3
4
5
deploy:
- type: git
repo: https://github.com/<username>/<username>.github.io.git
branch: master
- type: baidu_url_submitter

注意type前面一定有一个短横线。
hexo generate 会产生一个文本文件,里面包含所需百度检索的链接。
hexo deploy 会从上述文件中读取链接,提交至百度搜索引擎。

添加蜘蛛协议

在站点 source 文件夹下新建 robots.txt 文件,文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# hexo robots.txt
User-agent: *
Allow: /
Allow: /archives/
Allow: /tags/
Allow: /categories/
Disallow: /vendors/
Disallow: /js/
Disallow: /css/
Disallow: /fonts/
Disallow: /vendors/
Disallow: /fancybox/
Sitemap: https://lxmymjr.github.io/sitemap.xml #改成你自己的网址

网站结构优化

keywords 和 description

在.md 中添加如下代码,用于生成的文章中添加关键字和描述。
keywords:
description:

修改文章链接

Hexo 默认的文章链接形式为 domain/year/month/day/postname,即一个四级 url,可能造成 url 过长,对搜索引擎十分不友好。
所以需要改成 domain/postname 的形式。编辑站点配置文件,修改其中的 permalink 字段,改为 permalink: :title.html 即可。

不同电脑维护博客

使用第三方 git 服务进行博客的备份。可以用 GitHub 的私有仓库。
在 GitHub 网站创建一个新的 repository,我们在这里给新创建的 repository 命名为 Blog。

在原电脑中从本地上传 Hexo 到 GitHub 仓库

  1. 初始化仓库。
    在 Hexo 博客的根目录右键运行 Git Bash 并输入以下命令:
    $ git init
    $ git remote add origin <server address> #server address为备份仓库的地址(https://github.com/"用户名"/Blog)
  2. 把主题配置文件 Blog/node_modules/hexo-theme-next/_config.yml 复制到 Blog/source/_data/ 文件夹里面。
  3. 把本地文件同步到 GitHub 上面。
    分别输入执行以下命令:
    $ git add . #添加所有目录,注意add后面有个点
    $ git commit -m "add to GitHub" #引号内为提交说明,每次提交都需要
    $ git push origin master #把更新推送到云端
    可以登录 GitHub 账户查看刚创建的 blog 仓库中是否上传成功。
    windows 平台 push 过程中会提示输入 GitHub 的用户名和的密码。

在新电脑中从 GitHub 仓库取回 Hexo 到本地。

  1. 安装 Git 和 Node.js(见上)。

  2. 把文件取回本地。
    安装环境完成后,在新 Blog 文件夹下运行 Git Bash 并分别执行以下几条命令:
    $ git init
    $ git remote add origin <server address> #server address为备份仓库的地址(https://github.com/"用户名"/Blog)
    $ git pull origin master
    运行完 pull 命令后你会发现文件夹中就会出现刚刚上传的内容。

  3. 配置新的 Hexo。
    3.1. 在刚才的目录下执行以下命令以在新电脑中安装 Hexo。
    $ (sudo) npm install -g hexo-cli
    3.2. 初始化 Hexo 并安装相应依赖包。
    $ (sudo) npm install #会根据package.json文件中的依赖列表安装相应依赖包
    3.3. 将 Blog/source/_data/background.jpg 复制到 Blog/node_modules-theme-next。
    3.4. 输入命令 $ hexo g 和命令 $ hexo s,然后在浏览器输入 localhost:4000 中进行预览。如果没有问题那么新电脑上就配置成功了。
    3.5. 发表文章的操作同原电脑(见上)。

  4. 把新电脑上的 Hexo 从本地同步到 GitHub 仓库。
    当发表完文章,我们还需要把 Hexo 程序同步到我们 GitHub 的 blog 仓库。执行下面指令:
    $ git add .
    这时候可以输入命令 $ git status 查看状态,回显示刚才编辑过的文件的信息。
    之后分别输入下面指令完成上传:
    $ git commit -m "add to GitHub"
    $ git push origin master
    成功后,我们再次把程序同步更新到了我们的 GitHub 仓库 Blog。

新旧电脑继续维护博客

  1. 如果再想用旧电脑更新博客,只需要在执行添加文章之前先把程序从 Blog 仓库拉取下来便可。输入命令:
    $ git pull
  2. 现在无论用哪台电脑进行修改等操作,都需先输入命令 $ git pull,然后再进行修改等操作,修改等操作完成后,输入执行以下命令:$ git add .$ git commit -m "add to GitHub"$ git push origin master 来更新远程仓库。

Markdown 基本语法

  1. 一个井号#一级标题,n 个井号 n 级标题,注意:井号和标题名之间一定要有一个空格
  2. 代码,一对 `表示行内代码,一对``` 表示行间代码,第一个 ``` 后可加上语言名。
  3. 一对星号表示斜体两对星号表示加粗三对星号表示斜体加粗一对下划线表示斜体两对下划线表示加粗三对下划线表示斜体加粗
  4. [链接名称](链接地址) 插入链接。
  5. > 表示引用。

  6. 用全角空格表示缩进,搜狗输入法中 shift+空格切换全角半角。
  7. 字体颜色:<font color=颜色>内容</font>
  8. 一行中用三个以上的星号、减号、下划线来建立一个分隔线,行内不能有其他东西。也可以在星号、减号、下划线中间插入空格。

插入图片

  1. 在 Hexo 博客的根目录下的 source 文件夹中新建文件夹 image。
  2. 在 Markdown 中写:!["图片描述"](\image\图片名字.图片格式) 或者 !["图片描述"](外链网址)
  3. 或者在 Markdown 中写:
    1
    {% img /image/图片名字.图片格式 图片宽度 图片高度 %}

    或者
    1
    {% img 外链网址 图片宽度 图片高度 %}

插入视频

  1. 在 Hexo 博客的根目录右键运行 Git Bash 并输入:npm install hexo-tag-dplayer --save
  2. 在 Markdown 中写:
    1
    {% dplayer "url="视频网址" "theme=#FADFA3" "autoplay=false" %}

    如果插入本地视频,则先在 Hexo 博客的根目录下的 source 文件夹中新建文件夹 video,然后在 Markdown 中视频地址为。视频格式。

插入公式

  1. 在 Markdown 中写:<img src="http://chart.googleapis.com/chart?cht=tx&chl=\Large "LaTeX格式的公式代码"" style="border:none;">
  2. NexT 主题自带 MathJax 功能,在主题配置文件中配置 math 项目。
    如果启用了 per_page 功能,则需要在每篇需要 MathJax 的文章配置 mathjax : true。
    如果插入行内公式,在 Markdown 中写:$LaTeX格式的公式代码$。如果插入行间公式,在 Markdown 中写:$$LaTeX格式的公式代码$$
  3. 打开 hexo 渲染器。
    在 Hexo 博客的根目录右键运行 Git Bash 并输入:npm un hexo-renderer-marked --savenpm i hexo-renderer-pandoc --save # 或者 hexo-renderer-kramed
    如果用 hexo-renderer-pandoc 则需要在系统里提前安装好 pandoc
    如果需要回车换行功能的话,则需要编辑 Hexo 博客的根目录下的站点配置文件,新增以下内容到任意位置:
    1
    2
    3
    pandoc:
    extensions:
    - "+hard_line_breaks"

    注意:如果 Windows 电脑安装了 Anaconda3 的话,因为 Anaconda3 自带了 pandoc(C:\ProgramData\Anaconda3\pkgs\pandoc-1.19.2.1-hb2460c7_1\Scripts\pandoc.exe)且版本落后,需要在系统 - 高级系统设置 - 环境变量 - 系统变量的 Path 变量中将新安装的 Pandoc 路径移到 Anaconda 路径上方,并通过 pandoc --version 进行验证。
  4. 让 Hexo 在使用 Mathjax 时支持多行公式:\\ 符号表示换行,& 表示对齐,\begin{split} 表示等号对齐,\begin{align} 表示向左对齐,\begin{gather} 表示居中对齐。
    例:
    $\begin{split}a&=b+c-d\\&\quad+e-f\\&=g+h\\&=i\end{split}$
    \(\begin{split}a&=b+c-d\\&\quad+e-f\\&=g+h\\&=i\end{split}\)
    $\begin{align}a_{11}&=b_{11}&a_{12}&=b_{12}\\a_{21}&=b_{21}+c_{21}&a_{22}&=b_{22}\end{align}$
    \(\begin{align}a_{11}&=b_{11}&a_{12}&=b_{12}\\a_{21}&=b_{21}+c_{21}&a_{22}&=b_{22}\end{align}\)
    $\begin{gather}a_{11}=b_{11}&a_{12}=b_{12}\\a_{21}=b_{21}+c_{21}&a_{22}=b_{22}\end{gather}$
    \(\begin{gather}a_{11}=b_{11}&a_{12}=b_{12}\\a_{21}=b_{21}+c_{21}&a_{22}=b_{22}\end{gather}\)
  5. 看到别的网站上有 MathJax 解析的公式时,可以通过右键菜单 “Show Math As> TeX Commands” 查看 LaTex 格式。
  6. 希腊字母表示方法:
    部分字母变体 \epsilon \varepsilon \phi \varphi\(\epsilon \varepsilon \phi \varphi\)
  7. 上标和下标:
    使用符号 ^(上标)和_(下标),如 x_i^j\(x_i^j\)
    如果上标或者下标包含不止一个字符,则需要用括号 {} 括起来。
    在 markdown 中书写,因为 \, $, {, }, _都是有特殊含义的,所以需要加 \ 转义。
  8. 括号:
    小括号与中括号:使用原始的 \(()\)\([]\) 即可。
    大括号:由于大括号 \(\{\}\) 被用来分组,因此需要使用 \{\} 表示大括号,还可以使用 \lbrace\rbrace 来表示。
    尖括号:使用 \langle\rangle 表示 \(\langle\) 左尖括号和 \(\rangle\) 右尖括号。
    上取整:使用 \(\lceil \rceil\)
    下取整:使用 \(\lfloor \rfloor\)
    需要注意的是,原始符号并不会随着公式大小缩放,可以使用 \left(…\right) 来自适应的调整括号大小。
  9. 分式与根式 (分号与开方):
    \frac ab 显示为 \(\frac ab\),而 \frac{a+b}{c+d} 显示为 \(\frac{a+b}{c+d}\)
    或者用 {a+b\over c+d} \({a+b\over c+d}\)
    \sqrt[y]{x} 表示开方 \(\sqrt[y]{x}\)
  10. 字体:
    mathbb 和 Bbb:\(\mathbb {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 黑板体
    mathbf:\(\mathbf {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 粗体
    mathtt:\(\mathtt {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 打印体
    mathrm:\(\mathrm {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 罗马体
    mathcal:\(\mathcal {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 花体
    mathscr:\(\mathscr {ABCDEFGHIJKLMNOPQRSTUVWXYZ}\) 手写体
    mathfrak:\(\mathfrak {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 德国体
  11. 数学符号:
    求和:\sum \(\sum\),可使用上下标。
    积分:\int\(\int\),可使用上下限。
    连乘:\prod\(\prod\)
    二重积分:\iint\(\iint\)
    极限:\lim\(\lim\),可以使用下标。
    比较:\lt \gt \le \ge \neq\(\lt \gt \le \ge \neq\)。可以前面加 \not 否定 \(\not\lt \not\gt \not\le \not\ge \not\neq\)
    运算:\times \div \pm \mp\(\times \div \pm \mp\)\cdot\(\cdot\) 点乘。
    集合:\cup \cap \bigcup \bigcap \setminus \subset \subseteq \subsetneq \supset \in \notin \emptyset \varnothing\(\cup \cap \bigcup \bigcap \setminus \subset \subseteq \subsetneq \supset \in \notin \emptyset \varnothing\)
    排列:\choose\binom,{x \choose y}\({x \choose y}\) 或者 \binom{x}{y}\(\binom{x}{y}\)
    箭头:\to \rightarrow \leftarrow \Rightarrow \Leftarrow \mapsto \implies \iff \longrightarrow\(\to \rightarrow \leftarrow \Rightarrow \Leftarrow \mapsto \implies \iff \longrightarrow\)
    逻辑:\land \lor \lnot \forall \exists \top \bot \vdash \vDash\(\land \lor \lnot \forall \exists \top \bot \vdash \vDash\)
    空格:\quad\qquad,MathJax 自己决定是否增加空格,所以一般的空格是没用的。
    特殊点号:\star \ast \oplus \circ \bullet\(\star \ast \oplus \circ \bullet\)
    等号:\approx \sim \cong \equiv \prec\(\approx \sim \cong \equiv \prec\)
    特殊算符:\infty \aleph_0 \nabla \partial \Im \Re\(\infty \aleph_0 \nabla \partial \Im \Re\)
    模运算:a\equiv b\pmod n\(a\equiv b\pmod n\)
    加多个数:\cdots\(a_1+a_2+\cdots+a_n\)
    分隔多个数:\ldots\(a_1, a_2, \ldots ,a_n\)
    头部标:\hat \widehat \bar \overline \vec \overrightarrow \dot \ddot\(\hat x \widehat x \bar x \overline{xyz} \vec x \overrightarrow{xyz} \dot x \ddot x\)
  12. 表格:
    使用 \begin{array}{列样式}…\end{array} 的形式来创建表格,列样式可以是 c,l,r 表示居中,左,右对齐,还可以使用 | 表示一条竖线。表格中各行使用 \ 分隔 (hexo markdown 中,需要使用 \\),各列使用 & 分隔。使用。
    1
    2
    3
    4
    5
    6
    \begin{array}{c|lcr}
    n & \text{Left} & \text{Center} & \text{Right} \\\hline
    1 & 1 & 2 & 3 \\
    2 & 4 & 5 & 6 \\
    3 & 7 & 8 & 9 \\
    \end{array}

    \[\begin{array}{c|lcr} n & \text{Left} & \text{Center} & \text{Right} \\ \hline 1 & 1 & 2 & 3 \\ 2 & 4 & 5 & 6 \\ 3 & 7 & 8 & 9 \\ \end{array}\]
  13. 矩阵:
    使用 \begin{matrix}…\end{matrix} 的形式来表示矩阵,在 \begin\end 之间加入矩阵中的元素即可。矩阵的行之间使用 \ 分隔 (hexo markdown 中,需要使用 \\),列之间使用 & 分隔。
    1
    2
    3
    4
    5
    \begin{matrix}
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9 \\
    \end{matrix}

    \[\begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{matrix}\]
    如果要对矩阵加括号,可以像上文中提到的一样,使用 \left\right 配合表示括号符号。也可以使用特殊的 matrix。即替换 begin{matrix}…end{matrix} 中的 matrix 为 pmatrix,bmatrix,Bmatrix,vmatrix,Vmatrix。
    内联矩阵:\bigl(\begin{smallmatrix} ... \end{smallmatrix}\bigr)\(\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)\)
    可以使用 \(\cdots\)\(\ddots\)\(\vdots\) 来省略矩阵中的元素,如:
    \[\begin{pmatrix} 1 & a_1 & a_1^2 & \cdots & a_1^n \\ 1 & a_2 & a_2^2 & \cdots & a_2^n \\ \vdots & \vdots& \vdots & \ddots & \vdots \\ 1 & a_m & a_m^2 & \cdots & a_m^n \end{pmatrix}\]
  14. 分类表达式:
    定义函数的时候经常需要分情况给出表达式,可使用 \begin{cases}…\end{cases}。其中,使用 \ 来分类,使用 & 指示需要对齐的位置。如:
    \[f(n) = \begin{cases} a, & \text{if $n$ is even} \\ b, & \text{if $n$ is odd} \\ \end{cases}\]
  15. 空间问题:
    不要在指数或者积分中使用 \frac
    在指数或者积分表达式中使用 \frac 会使表达式看起来不清晰,因此在专业的数学排版中很少被使用。应该使用一个水平的 / 来代替,效果如下:
    \[\begin{array}{cc} \mathrm{Bad} & \mathrm{Better} \\ \hline \\ e^{i\frac{\pi}2} \quad e^{\frac{i\pi}2}& e^{i\pi/2} \\ \int_{-\frac\pi2}^\frac\pi2 \sin x\,dx & \int_{-\pi/2}^{\pi/2}\sin x\,dx \\ \end{array}\]
    使用 \mid 代替 | 作为分隔符:
    符号 | 作为分隔符时有排版空间大小的问题,应该使用 \mid 代替。效果如下:
    \[\begin{array}{cc} \mathrm{Bad} & \mathrm{Better} \\ \hline \\ {x|x^2\in\Bbb Z} & {x\mid x^2\in\Bbb Z} \\ \end{array}\]
    此外,在微分前应该使用 \, 来增加些许空间,否则 LaTex 会将微分紧凑地排列在一起。如下:
    \[\begin{array}{cc} \mathrm{Bad} & \mathrm{Better} \\ \hline \\ \iiint_V f(x)dz dy dx & \iiint_V f(x)\,dz\,dy\,dx \end{array}\]
  16. 连分数:
    书写连分数表达式时,请使用 \cfrac 代替 \frac 或者 \over 两者效果对比如下:
    \[x = a_0 + \frac{1^2}{a_1 + \frac{2^2}{a_2 + \frac{3^2}{a_3 + \frac{4^4}{a_4 + \cdots}}}} \tag{\frac}\]
    \[x = a_0 + \cfrac{1^2}{a_1 + \cfrac{2^2}{a_2 + \cfrac{3^2}{a_3 + \cfrac{4^4}{a_4 + \cdots}}}} \tag{\cfrac}\]
  17. 方程组:
    使用 \begin{array} … \end{array}\left{…\right. 配合,表示方程组,如:
    \[\begin{array}{c} a_1x+b_1y+c_1z=d_1 \\ a_2x+b_2y+c_2z=d_2 \\ a_3x+b_3y+c_3z=d_3 \end{array}\]
    同时,还可以使用 \begin{cases}…\end{cases} 表达同样的方程组,如:
    \[\begin{cases} a_1x+b_1y+c_1z=d_1 \\ a_2x+b_2y+c_2z=d_2 \\ a_3x+b_3y+c_3z=d_3 \end{cases}\]
    对齐方程组中的 = 号,可以使用 \being{aligned} .. \end{aligned},如:
    \[\begin{aligned} a_1x+b_1y+c_1z &=d_1+e_1 \\ a_2x+b_2y&=d_2 \\ a_3x+b_3y+c_3z &=d_3 \end{aligned}\]
    如果要对齐 = 号和项,可以使用 \being{array}{列样式} .. \end{array},如:
    \[\begin{array}{ll} a_1x+b_1y+c_1z &=d_1+e_1 \\ a_2x+b_2y &=d_2 \\ a_3x+b_3y+c_3z &=d_3 \end{array}\]
  18. 颜色:
    命名颜色是浏览器相关的,如果浏览器没有定义相关的颜色名称,则相关文本将被渲染为黑色。以下颜色是 HTML4 与 CSS2 标准中定义的一些颜色,其应该被大多数浏览器定义了。
    \[\begin{array}{|rc|} \hline \verb+\color{black}{text}+ & \color{black}{text} \\ \verb+\color{gray}{text}+ & \color{gray}{text} \\ \verb+\color{silver}{text}+ & \color{silver}{text} \\ \verb+\color{white}{text}+ & \color{white}{text} \\ \hline \verb+\color{maroon}{text}+ & \color{maroon}{text} \\ \verb+\color{red}{text}+ & \color{red}{text} \\ \verb+\color{yellow}{text}+ & \color{yellow}{text} \\ \verb+\color{lime}{text}+ & \color{lime}{text} \\ \verb+\color{olive}{text}+ & \color{olive}{text} \\ \verb+\color{green}{text}+ & \color{green}{text} \\ \verb+\color{teal}{text}+ & \color{teal}{text} \\ \verb+\color{aqua}{text}+ & \color{aqua}{text} \\ \verb+\color{blue}{text}+ & \color{blue}{text} \\ \verb+\color{navy}{text}+ & \color{navy}{text} \\ \verb+\color{purple}{text}+ & \color{purple}{text} \\ \verb+\color{fuchsia}{text}+ & \color{magenta}{text} \\ \hline \end{array}\]
    此外,HTML5 与 CSS3 也定义了一些颜色名称。同时,颜色也可以使用 #rgb 的形式来表示,r、g、b 分别表示代表颜色值得 16 进制数,如:\color{\#0F0}{text}。更多点击 HTML 色彩快速参考手册CSS 色彩快速参考手册
  19. 删除线:
    \[\require{cancel}\begin{array}{rl} \verb|y+\cancel{x}| & y+\cancel{x}\\ \verb|\cancel{y+x}| & \cancel{y+x}\\ \verb|y+\bcancel{x}| & y+\bcancel{x}\\ \verb|y+\xcancel{x}| & y+\xcancel{x}\\ \verb|y+\cancelto{0}{x}| & y+\cancelto{0}{x}\\ \verb+\frac{1\cancel9}{\cancel95} = \frac15+& \frac{1\cancel9}{\cancel95} = \frac15 \\ \end{array}\]
    \[\require{enclose}\begin{array}{rl} \verb|\enclose{horizontalstrike}{x+y}| & \enclose{horizontalstrike}{x+y}\\ \verb|\enclose{verticalstrike}{\frac xy}| & \enclose{verticalstrike}{\frac xy}\\ \verb|\enclose{updiagonalstrike}{x+y}| & \enclose{updiagonalstrike}{x+y}\\ \verb|\enclose{downdiagonalstrike}{x+y}| & \enclose{downdiagonalstrike}{x+y}\\ \verb|\enclose{horizontalstrike,updiagonalstrike}{x+y}| & \enclose{horizontalstrike,updiagonalstrike}{x+y}\\ \end{array}\]
  20. 参考资料:
    在 Hexo 中使用 MathJax 插入数学公式
    MathJax basic tutorial and quick reference - StackExchange
    MathJax Docs
    Easy Copy MathJax
    常用数学符号的 LaTeX 表示方法

Some Tips

  1. $ hexo g$ hexo d 可以合写为 $ hexo g -d
  2. $ git add .$ git commit -m "add to GitHub" 可以合写为 $ git commit -a -m "add to GitHub"(简写后不会提交新建的文件,只会更新旧文件的修改)。
  3. 如果不改变本地和远程仓库的结构且 push 的源仓库、分支与目的仓库、分支相同,push 后面的变量均可省略,$ git push 即可。