搭建个人博客教程
本文参考知乎专栏《教你免费搭建个人博客,Hexo&Github》,感谢作者。
但在实践搭建博客过程中稍有不同。
系统:Windows 7/10 64 位,MacOS;编辑器:sublime text3, Typora;控制台:CMD, Git Bash, Terminal;搭建博客:Hexo+GitHub
用户名:lxmymjr
安装
- 进入个人 GitHub 主页,右上角 + 号,选择 new repository,Repository name 填用户名。
- 安装 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)"
- 安装 Git。
Windows 系统直接官网下载安装。
MacOS 系统在 Terminal 中输入brew install git
(一般系统自带,可省略此步)。 - 安装完成后,在开始菜单里找到 "Git"->"Git Bash",输入:
$ git config --global user.name "用户名"
(不要引号)
$ git config --global user.email "注册邮箱"
(不要引号)
名称和注册邮箱是 GitHub 上的(MacOS 无需此步)。 - 安装 Hexo:输入
$(sudo) npm install -g hexo-cli
。 - 安装 pandoc(MacOS 需要安装):输入
$ brew install pandoc
。
更新
- 更新 Node.js 版本:在官网上下载安装包覆盖安装。
- 更新 npm 版本:在命令行或终端中输入
(sudo) npm install npm@latest -g
进行更新,输入npm -v
查看版本号,在官网中查看最新版本号。 - 更新 npm package 版本:
命令行或终端中输入npm outdated
和npm -g outdated
列出需要更新的版本。
命令行或终端中输入npm update
和npm -g update
更新到 outdated 列出 wanted 的版本。
命令行或终端中输入npm install package-name@latest
强制更新到最新版本。 - 更新 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
进行升级。
配置
- 新建文件夹 "Blog" 作为 Hexo 博客的根目录。
- 在 Hexo 博客的根目录右键运行 Git Bash 并输入:
$ hexo i "文件夹名"
,此处起名为 "Blog"。 - 在 Hexo 博客的根目录右键运行 Git Bash 并输入:
$ hexo g
,生成文章;输入$ hexo s
,启动本地服务器。访问 http://localhost:4000/ 即可查看博客效果。 - 打开 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
- 根据路径找到 id_rsa.pub,用 sublime 打开,复制全部内容,然后打开网址(GitHub ->Setting -> SSH and GPG keys),点击 New SSH key 按钮,Title 填写 "Blog",Key 填写刚刚复制的内容,完成后点击 Add SSH key 按钮。
- 在 Blog 目录下,用 sublime 打开站点配置文件(_config.yml 文件),修改网站相关信息:
1
2
3
4
5
6
7
8title: #网站标题
subtitle: #副标题
description: #网页描述
author: #作者名
deploy:
type: git
repo: https://github.com/"用户名"/"用户名".github.io.git
branch: master #配置部署
发表文章
- 在 Hexo 博客的根目录右键运行 Git Bash 并输入:
$ hexo n "文章标题"
。 - 在 "Blog\_posts" 目录下找到文章 "文章标题.md",用 sublime 打开,使用 Markdown 语法写文章。
- 在 Hexo 博客的根目录右键运行 Git Bash 并输入:
$ hexo g
,生成文章。 - 在 Hexo 博客的根目录右键运行 Git Bash 并输入:
$ hexo d
,会弹出 GitHub Login 窗口,输入你的 GitHub 账号和密码。 - 然后打开网址:"用户名".github.io 就可以看到已经发布的文章了。
删除文章
- 在 "Blog\_posts" 目录下找到要删除的文章,直接删除。
- 如果需要删除文章中的本地资源(图片,视频,音频等),需删除 "Blog" 目录下的资源,并且删除 "Blog" 目录下的资源。
- 在 Hexo 博客的根目录右键运行 Git Bash 并输入:
$ hexo g
,重新生成文章。 - 在 Hexo 博客的根目录右键运行 Git Bash 并输入:
$ hexo d
,重新发表文章。
加密访问
- 使用插件 hexo-blog-encrypt
- 在 Hexo 博客的根目录右键运行 Git Bash 并输入:
$ npm install hexo-blog-encrypt --save
。 - 在 Hexo 博客的根目录下的站点配置文件中启用该插件:
1
2
3# Security
encrypt:
enable: true - 在每篇需要加密的文章配置
1
2
3password: #设置密码
abstract: Enter the password to read. #设置预览内容
message: Enter the password to read. #设置提示框内容
定制主题
- 安装 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
- 启用主题:与所有 Hexo 主题启用的模式一样。当安装完成后,打开 Hexo 博客的根目录下的站点配置文件,找到 theme 字段,并将其值更改为 next。在切换主题之后或者更改样式后,最好使用
$ hexo clean
来清除 Hexo 的缓存。 - 选择 Scheme:Scheme 是 NexT 提供的一种特性,借助于 Scheme,NexT 为你提供多种不同的外观。同时,几乎所有的配置都可以在 Scheme 之间共用。
Scheme 的切换通过更改主题配置文件,搜索 scheme 关键字。你会看到有三行 scheme 的配置,将你需用启用的 scheme 前面注释 #去除即可。 - 设置菜单: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 | title: 标签/分类 |
将post_meta的updated_at字段的值改为true以启动文章修改时间显示。
- 设置头像:编辑主题配置文件,修改字段 avatar,值设置成头像的链接地址(完整的互联网 URI 或者站点内的地址)。
- 字数统计:在 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 - 本地搜索功能:在 Hexo 博客的根目录右键运行 Git Bash 并输入:
$ npm install hexo-generator-searchdb --save
。编辑 Hexo 博客的根目录下的站点配置文件,新增以下内容到任意位置,然后在主题配置文件中配置 local_search 项目:
1
2
3
4
5search:
path: search.xml
field: post
format: html
limit: 10000 - 新建 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 | sitemap: |
安装完这个插件,再重启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 | baidu_url_submit: |
注意,此插件的配置文件中包含密钥,请妥善管理好博客源码。
可以把源码保存在本地,如果要托管在 git 仓库里,请选择私有仓库。
最后,加入新的 deployer:
1 | deploy: |
注意type前面一定有一个短横线。
hexo generate
会产生一个文本文件,里面包含所需百度检索的链接。hexo deploy
会从上述文件中读取链接,提交至百度搜索引擎。
添加蜘蛛协议
在站点 source 文件夹下新建 robots.txt 文件,文件内容如下:
1 | # hexo robots.txt |
网站结构优化
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 仓库
- 初始化仓库。
在 Hexo 博客的根目录右键运行 Git Bash 并输入以下命令:
$ git init
$ git remote add origin <server address> #server address为备份仓库的地址(https://github.com/"用户名"/Blog)
- 把主题配置文件 Blog/node_modules/hexo-theme-next/_config.yml 复制到 Blog/source/_data/ 文件夹里面。
- 把本地文件同步到 GitHub 上面。
分别输入执行以下命令:
$ git add . #添加所有目录,注意add后面有个点
$ git commit -m "add to GitHub" #引号内为提交说明,每次提交都需要
$ git push origin master #把更新推送到云端
可以登录 GitHub 账户查看刚创建的 blog 仓库中是否上传成功。
windows 平台 push 过程中会提示输入 GitHub 的用户名和的密码。
在新电脑中从 GitHub 仓库取回 Hexo 到本地。
安装 Git 和 Node.js(见上)。
把文件取回本地。
安装环境完成后,在新 Blog 文件夹下运行 Git Bash 并分别执行以下几条命令:
$ git init
$ git remote add origin <server address> #server address为备份仓库的地址(https://github.com/"用户名"/Blog)
$ git pull origin master
运行完 pull 命令后你会发现文件夹中就会出现刚刚上传的内容。配置新的 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. 发表文章的操作同原电脑(见上)。把新电脑上的 Hexo 从本地同步到 GitHub 仓库。
当发表完文章,我们还需要把 Hexo 程序同步到我们 GitHub 的 blog 仓库。执行下面指令:
$ git add .
这时候可以输入命令 $ git status 查看状态,回显示刚才编辑过的文件的信息。
之后分别输入下面指令完成上传:
$ git commit -m "add to GitHub"
$ git push origin master
成功后,我们再次把程序同步更新到了我们的 GitHub 仓库 Blog。
新旧电脑继续维护博客
- 如果再想用旧电脑更新博客,只需要在执行添加文章之前先把程序从 Blog 仓库拉取下来便可。输入命令:
$ git pull
- 现在无论用哪台电脑进行修改等操作,都需先输入命令
$ git pull
,然后再进行修改等操作,修改等操作完成后,输入执行以下命令:$ git add .
和$ git commit -m "add to GitHub"
和$ git push origin master
来更新远程仓库。
Markdown 基本语法
- 一个井号
#
一级标题,n 个井号 n 级标题,注意:井号和标题名之间一定要有一个空格。 - 代码,一对 `表示行内代码,一对``` 表示行间代码,第一个 ``` 后可加上语言名。
- 一对星号表示斜体,两对星号表示加粗,三对星号表示斜体加粗,一对下划线表示斜体,两对下划线表示加粗,三对下划线表示斜体加粗。
- [链接名称](链接地址) 插入链接。
> 表示引用。
- 用全角空格表示缩进,搜狗输入法中
shift+空格
切换全角半角。 - 字体颜色:
<font color=颜色>内容</font>
。 - 一行中用三个以上的星号、减号、下划线来建立一个分隔线,行内不能有其他东西。也可以在星号、减号、下划线中间插入空格。
插入图片
- 在 Hexo 博客的根目录下的 source 文件夹中新建文件夹 image。
- 在 Markdown 中写:
!["图片描述"](\image\图片名字.图片格式)
或者!["图片描述"](外链网址)
。 - 或者在 Markdown 中写:
1
{% img /image/图片名字.图片格式 图片宽度 图片高度 %}
或者
1
{% img 外链网址 图片宽度 图片高度 %}
插入视频
- 在 Hexo 博客的根目录右键运行 Git Bash 并输入:
npm install hexo-tag-dplayer --save
。 - 在 Markdown 中写:
1
{% dplayer "url="视频网址" "theme=#FADFA3" "autoplay=false" %}
如果插入本地视频,则先在 Hexo 博客的根目录下的 source 文件夹中新建文件夹 video,然后在 Markdown 中视频地址为。视频格式。
插入公式
- 在 Markdown 中写:
<img src="http://chart.googleapis.com/chart?cht=tx&chl=\Large "LaTeX格式的公式代码"" style="border:none;">
。 - NexT 主题自带 MathJax 功能,在主题配置文件中配置 math 项目。
如果启用了 per_page 功能,则需要在每篇需要 MathJax 的文章配置 mathjax : true。
如果插入行内公式,在 Markdown 中写:$LaTeX格式的公式代码$
。如果插入行间公式,在 Markdown 中写:$$LaTeX格式的公式代码$$
。 - 打开 hexo 渲染器。
在 Hexo 博客的根目录右键运行 Git Bash 并输入:npm un hexo-renderer-marked --save
和npm i hexo-renderer-pandoc --save # 或者 hexo-renderer-kramed
如果用 hexo-renderer-pandoc 则需要在系统里提前安装好 pandoc
如果需要回车换行功能的话,则需要编辑 Hexo 博客的根目录下的站点配置文件,新增以下内容到任意位置:
1
2
3pandoc:
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
进行验证。 - 让 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}\) - 看到别的网站上有 MathJax 解析的公式时,可以通过右键菜单 “Show Math As> TeX Commands” 查看 LaTex 格式。
- 希腊字母表示方法:
部分字母变体\epsilon \varepsilon \phi \varphi
:\(\epsilon \varepsilon \phi \varphi\)。 - 上标和下标:
使用符号 ^(上标)和_(下标),如x_i^j
:\(x_i^j\)。
如果上标或者下标包含不止一个字符,则需要用括号 {} 括起来。
在 markdown 中书写,因为\, $, {, }, _
都是有特殊含义的,所以需要加\
转义。 - 括号:
小括号与中括号:使用原始的 \(()\),\([]\) 即可。
大括号:由于大括号 \(\{\}\) 被用来分组,因此需要使用\{
和\}
表示大括号,还可以使用\lbrace
和\rbrace
来表示。
尖括号:使用\langle
和\rangle
表示 \(\langle\) 左尖括号和 \(\rangle\) 右尖括号。
上取整:使用 \(\lceil \rceil\)。
下取整:使用 \(\lfloor \rfloor\)。
需要注意的是,原始符号并不会随着公式大小缩放,可以使用\left(…\right)
来自适应的调整括号大小。 - 分式与根式 (分号与开方):
\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}\)。 - 字体:
mathbb 和 Bbb:\(\mathbb {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 黑板体
mathbf:\(\mathbf {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 粗体
mathtt:\(\mathtt {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 打印体
mathrm:\(\mathrm {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 罗马体
mathcal:\(\mathcal {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 花体
mathscr:\(\mathscr {ABCDEFGHIJKLMNOPQRSTUVWXYZ}\) 手写体
mathfrak:\(\mathfrak {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}\) 德国体 - 数学符号:
求和:\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\) - 表格:
使用\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}\] - 矩阵:
使用\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}\] - 分类表达式:
定义函数的时候经常需要分情况给出表达式,可使用\begin{cases}…\end{cases}
。其中,使用\
来分类,使用 & 指示需要对齐的位置。如:
\[f(n) = \begin{cases} a, & \text{if $n$ is even} \\ b, & \text{if $n$ is odd} \\ \end{cases}\] - 空间问题:
不要在指数或者积分中使用\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}\] - 连分数:
书写连分数表达式时,请使用\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}\] - 方程组:
使用\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}\] - 颜色:
命名颜色是浏览器相关的,如果浏览器没有定义相关的颜色名称,则相关文本将被渲染为黑色。以下颜色是 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 色彩快速参考手册。 - 删除线:
\[\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}\] - 参考资料:
在 Hexo 中使用 MathJax 插入数学公式
MathJax basic tutorial and quick reference - StackExchange
MathJax Docs
Easy Copy MathJax
常用数学符号的 LaTeX 表示方法
Some Tips
$ hexo g
和$ hexo d
可以合写为$ hexo g -d
。$ git add .
和$ git commit -m "add to GitHub"
可以合写为$ git commit -a -m "add to GitHub"
(简写后不会提交新建的文件,只会更新旧文件的修改)。- 如果不改变本地和远程仓库的结构且 push 的源仓库、分支与目的仓库、分支相同,push 后面的变量均可省略,
$ git push
即可。