使用Hexo的常用命令和一些格式上的小技巧。
基本命令
$ hexo new [layout] <title>
创建一篇新文章。其中layout
是可选参数,默认值是post
。Hexo提供的layout
在scaffolds
目录下,也可以在此目录下自建layout
文件。新建的文件则会保存到source/_post
目录下。你也可以更改默认布局的参数,如post布局,你需要打开scaffolds/post.md
,增加类别和描述。再新建一篇文章就能看到增加了文章参数。$ hexo generate
也可简写为$ hexo g
在部署前需要通过该命令把所有的文章做静态化处理,生成相应的html、javascript、css。$ hexo deploy
也可简写为$hexo d
负责生成静态文件后的发布。在发布到你的服务器之前要先配置好deploy指令,在全局配置文件(_config.yml
)中找到deploy,并修改属性值。
在文章中加入图片
要在文章中插入图片,有两个选择,一是使用图床,二是将图片与网页文件一起部署。两种方法各有利弊,如果打算部署到GitHub或GitCafe上,个人推荐使用图床。如果是部署到七牛上,则直接使用部署方式。
需要调整图片大小的话, 要用HTML格式1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#### 不在主页显示全部文章内容
我们在编辑内容时,在合适的地方添加一行代码:`<!-- more -->`,在它之上是摘要,是在主页会显示的文字部分。在它之下是余下全文,在主页中会多一个阅读全文的按钮,点击后才会看到全部内容。
#### 文章基本参数
打开 `scaffolds/post.md` 增加类别和描述,修改默认布局的参数:
```markdown post.md
---
title: #标题
date: #日期时间
tags: #标签
categories: #分类
comments: #是否允许评论 true 或 false
toc: #是否添加文章目录 true 或 false
thumbnail: #侧边栏封面图
banner: #文章顶部封面图
---
在新建一篇文章,你就能看到新建的文章已经新增了这些参数,不用每次自己手打,不需要的值就可以空着。
代码高亮并为代码块添加标题
Markdown中插入代码,是通过添加三个反引号(`)或三个波浪号(~)来实现的。如下示例
1 | code here |
像大多数的markdown, 如github的markdown都是这种写法。这种写法在[language]后面不能加其它参数,否则会输出不正常。
Hexo自带高亮:Code Block
使用格式如下:
1 | {% codeblock [title] [lang:language] [url] [link text] %} |
注意:如果使用静态的代码高亮,则必须关闭hexo自带高亮,关闭之后,如果以前的.md源文件使用的是hexo第二种插入代码的方式,则会导致hexo-renderer-marked
渲染异常。
关于 Markdown 语法格式
尽量使用规范的 Markdown 语法格式
参考:http://www.cirosantilli.com/markdown-style-guide/#code
添加 Latex 形式的公式
Hexo本身并没有对Latex的支持,所以需要安装第三方plugin1
2npm install hexo-math --save
npm install hexo-renderer-mathjax --save # if you are not using NexT theme
Add the following to _config.yml
1
2
3
4
5
6math:
engine: 'mathjax' # or 'katex'
mathjax:
src: "//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
config:
# MathJax config
解决 Mathjax
与 marked
render 渲染冲突问题
在marked.js
渲染的时候下划线_
是被escape掉并且换成了<em>
标签,即斜体字,另外LaTeX中的\\
也会被转义成一个\
,这样会导致MathJax
渲染时不认为它是一个换行符了。
解决方案: 修改hexo的渲染源码 nodes_modules/lib/marked/lib/marked.js
:
去掉
\
的额外转义: 将escape:
,行改为:1
escape: /^\\([`*{}\[\]()# +\-.!_>])/,
去掉
_
的斜体含义:将em:
行改为:em:/^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,