1 Markdown语法
1.1 标题
Markdown支持6种级别的标题,对应html标签 h1 ~ h6
1 | # h1 //一级标题 对应 <h1> </h1> |
1.2 段落及区块引用
Markdown提供了一个特殊符号 > 用于段首进行强调,被强调的文字部分将会高亮显示
1 | > 这段文字将会被高亮显示 |
以上标记显示效果如下:
这段文字将会被高亮显示
1.3 插入链接或图片
Markdown针对链接和图片的处理也比较简单,可以使用下面的语法进行标记
1 | [点击跳转至Google](https://www.google.com) |
以上标记显示效果如下:
点击跳转至Google
注: 引用图片和链接的唯一区别就是在最前方添加一个感叹号。
1.4 列表
Markdown支持有序列表和无序列表两种形式:
1 | 无序列表使用 * 或 + 或 - 标识 |
显示效果如下:
- 无序列表1
- 无序列表2
- 无序列表3
- 有序列表1
- 有序列表2
- 有序列表3
1.5 分隔线
有时候,为了排版漂亮,可能会加入分隔线。Markdown加入分隔线非常简单,使用下面任意一种形式都可以
1 | *** |
1.6 内容强调
有时候,我们对某一部分文字进行强调,使用 * 或 _ 包裹即可。使用单一符号标记的效果是斜体,使用两个符号标记的效果是加粗
1 | *这里是斜体* |
以上标记显示效果如下:
这里是斜体
这里是斜体
这里是加粗
这里是加粗
这里是加粗并斜体
这里是加粗并斜体
1.7 删除线
1 | 这样来~~删除一段文本~~ |
以上标记显示效果如下:
这样来删除一段文本
1.8 高亮显示
1 | 使用<code>\`</code>来强调字符 // 想打出 ` (反引号)需要转义 |
以上标记显示效果如下:
使用`
来强调字符 //想打出 ` (反引号)需要转义
比如突出背景色
来显示强调效果
1.9 嵌套引用
1 | > 动物 |
以上标记显示效果如下:
动物
水生动物
陆生动物猴子
人程序猿
攻城狮
产品狗 //这里需要注意,没有空行间隔,忽略降级引用标记
射鸡虱 //这里需要注意,没有空行间隔,忽略降级引用标记
两栖类动物
大鳄鱼
唐老鸭
两个回车结束引用,不在引用范围内了!
1.10 插入图片
1.10.1 修改图片尺寸
在 markdown 直接使用提供的语法引入图片是无法设置大小的,所以我们需要用到 html 的 img 标签。
1 | <img width=" " alt="描述" src="url"/> |
例如:
1 | <img width="267px" alt="这里是一张图片" src="https://cdn.pixabay.com/photo/2021/01/21/09/58/grebe-5936866_1280.jpg"/> |
效果如下:
1.10.2 设置图片居中
在 markdown 设置图片居中是需要通过 div 来控制的。
1 | <div align=center><img width="267px" alt="这里是一张图片" src="https://cdn.pixabay.com/photo/2021/01/21/09/58/grebe-5936866_1280.jpg"/></div> |
效果如下:
1.11 代码块
1.11.1 插入代码块
Markdown在IT圈子里面比较流行的一个重要原因是,它能够轻松漂亮地插入代码。
方法是,使用三个反引号 ` 进行包裹即可。如果是行内代码引用,使用单个反引号进行包裹
代码块语法遵循标准 markdown 代码,使用 ``` 开始 , ``` 结束 例如:
1 | ```Python |
以上标记显示效果如下:
1 | #!/usr/bin/env python |
注:很多人不知道怎么输入反引号。在英文模式下,找到键盘最左侧esc键下面的第一个键点击即可。
有人会问:
如何在代码块中打出 ```
实际上是使用 4个` 包含 3个` 就可以了,想表示更多,最外层+1就好了。
1 | ``` |
1.11.2 代码块高亮
如果你只想高亮语句中的某个函数名或关键字,可以使用 `function_name()` 实现
通常编辑器根据代码片段适配合适的高亮方法,但你也可以用 ``` 包裹一段代码,并指定一种语言
1 | $(document).ready(function () { |
支持的语言:1c, abnf, accesslog, actionscript, ada, apache, applescript, arduino, armasm, asciidoc, aspectj, autohotkey, autoit, avrasm, awk, axapta, bash, basic, bnf, brainfuck, cal, capnproto, ceylon, clean, clojure, clojure-repl, cmake, coffeescript, coq, cos, cpp, crmsh, crystal, cs, csp, css, d, dart, delphi, diff, django, dns, dockerfile, dos, dsconfig, dts, dust, ebnf, elixir, elm, erb, erlang, erlang-repl, excel, fix, flix, fortran, fsharp, gams, gauss, gcode, gherkin, glsl, go, golo, gradle, groovy, haml, handlebars, haskell, haxe, hsp, htmlbars, http, hy, inform7, ini, irpf90, java, javascript, json, julia, kotlin, lasso, ldif, leaf, less, lisp, livecodeserver, livescript, llvm, lsl, lua, makefile, markdown, mathematica, matlab, maxima, mel, mercury, mipsasm, mizar, mojolicious, monkey, moonscript, n1ql, nginx, nimrod, nix, nsis, objectivec, ocaml, openscad, oxygene, parser3, perl, pf, php, pony, powershell, processing, profile, prolog, protobuf, puppet, purebasic, python, q, qml, r, rib, roboconf, rsl, ruby, ruleslanguage, rust, scala, scheme, scilab, scss, smali, smalltalk, sml, sqf, sql, stan, stata, step21, stylus, subunit, swift, taggerscript, tap, tcl, tex, thrift, tp, twig, typescript, vala, vbnet, vbscript, vbscript-html, verilog, vhdl, vim, x86asm, xl, xml, xquery, yaml, zephir
如你不需要代码高亮,可以用下面的方法禁用:
1 | ```nohighlight |
1.12 插入表格
表格是Markdown语法中比较复杂的一个,其语法如下:
1 | 列1 | 列2 | 列3 |
以上标记显示效果如下:
列1 | 列2 | 列3 |
---|---|---|
第1行 | 12 | 13 |
第2行 | 22 | 23 |
第3行 | 32 | 33 |
可以使用冒号
来定义对齐方式:
全居中样式:
1 | 表头|条目一|条目二 |
以上标记显示效果如下:
表头 | 条目一 | 条目二 |
---|---|---|
项目 | 项目一 | 项目二 |
可能有人喜欢左对齐或者右对齐,也可以设置:
1 | | 左对齐 | 右对齐 | 居中 | |
以上标记显示效果如下:
左对齐 | 右对齐 | 居中 |
---|---|---|
Computer | 5000 元 | 1台 |
Phone | 1999 元 | 1部 |
注:三个短竖杠左右的冒号用于控制对齐方式,只放置左边冒号表示文字居左,只放置右边冒号表示文字居右,如果两边都放置冒号表示文字居中。
1.13 特殊符号处理
1.13.1 转义特殊符号
Markdown使用反斜杠\插入语法中用到的特殊符号。在Markdown中,主要有以下几种特殊符号需要处理:
1 | \ 反斜线 |
例如,如果你需要插入反斜杠,就连续输入两个反斜杠即可:\\
=> \
。
注:在内容中输入以上特殊符号的时候一定要注意转义,否则将导致内容显示不全,甚至排版混乱。
1.13.2 其他特殊符号
竖线
1 | 一个竖线: | |
展示效果如下:
一个竖线: |
两个竖线: ||
空格
1 | 不断行空格 |
展示效果如下:
这 是 个 例子
1.14 文本居中引用
1 | {% cq %} |
以上标记显示效果如下:
人生乃是一面镜子,
从镜子里认识自己,
我要称之为头等大事,
也只是我们追求的目的!
注:如果想修改字号,可以如下面这样设置:
1 | <font size="8"> |
以上标记显示效果如下:
人生乃是一面镜子,
从镜子里认识自己,
我要称之为头等大事,
也只是我们追求的目的!
1.15 标签
1.15.1 note标签
通过 note 标签可以为段落添加背景色,语法如下:
1 | {% note class %} |
支持的 class 种类包括 default
primary
success
info
warning
danger
,也可以不指定 class。
各种 class 种类的效果如下:
default note tag
primary note tag
success note tag
info note tag
warning note tag
danger note tag
也可以用下面的方式来标记
1 | <div class="note default"><p>default</p></div> |
显示效果如下:
default
1 | <div class="note primary"><p>primary</p></div> |
以上标记显示效果如下:
primary
1 | <div class="note success"><p>success</p></div> |
以上标记显示效果如下:
success
1 | <div class="note warning"><p>warning</p></div> |
以上标记显示效果如下:
warning
1 | <div class="note danger"><p>danger</p></div> |
以上标记显示效果如下:
danger
1.15.2 lable标签
通过 label 标签可以为文字添加背景色,语法如下:
1 | {% label [class]@text %} |
支持的 class 种类包括 default
primary
success
info
warning
danger
,默认使用 default 作为缺省。
使用示例如下:
1 | I heard the echo, {% label default@from the valleys and the heart %} |
展示效果如下:
I heard the echo, from the valleys and the heart
Open to the lonely soul of sickle harvesting
Repeat outrightly, but also repeat the well-being of
Eventually swaying in the desert oasis
Do not withered undefeated fiery demon rule
Heart rate and breathing to bear the load of the cumbersome
1.15.3 button 按钮
通过 button 标签可以快速添加带有主题样式的按钮,语法如下:
1 | {% button /path/to/url/, text, icon [class], title %} |
也可简写为:
1 | {% btn /path/to/url/, text, icon [class], title %} |
其中, 图标 ID 来源于 FontAwesome
使用示例如下:
1 | {% btn #, 文本 %} |
展示效果如下:
文本 文本 & 标题 文本 & 图标 文本 & 大图标 (固定宽度)1.15.4 tab 标签
tab 标签用于快速创建 tab 选项卡,语法如下
1 | {% tabs [Unique name], [index] %} |
其中,各参数意义如下:
- Unique name: 全局唯一的 Tab 名称,将作为各个标签页的 id 属性前缀
- index: 当前激活的标签页索引,如果未定义则默认选中显示第一个标签页,如果设为 - 1 则默认隐藏所有标签页
- Tab caption: 当前标签页的标题,如果不指定则会以 Unique name 加上索引作为标题
- icon: 在标签页标题中添加 Font awesome 图标
使用示例如下:
1 | {% tabs Tab标签列表 %} |
展示效果如下:
标签页1文本内容
标签页2文本内容
标签页3文本内容
1.16 文字处理
1.16.1 文字背景色
1 | <table><tr><td bgcolor=#FFFF00>背景色的设置是按照十六进制颜色值:#FFFF00</td></tr></table> |
效果如下:
背景色的设置是按照十六进制颜色值:#FFFF00 |
背景色的设置是按照十六进制颜色值:#D1EEEE |
背景色的设置是按照十六进制颜色值:#C0FF3E |
背景色的设置是按照十六进制颜色值:#54FF9F |
1.16.2 文字字体
1 | <font face="黑体">我是黑体字</font> |
效果如下:
我是黑体字
我是宋体字
我是微软雅黑字
1.16.3 文字大小
1 | size为1:<font size="1">size为1</font> |
效果如下:
size为1:size为1
size为2:size为2
size为3:size为3
size为4:size为4
size为10:size为10
1.16.4 文字颜色
1 | 红色文字:<font color="red">红色文字</font> |
效果如下:
红色文字:红色文字
浅红色文字:浅红色文字
蓝色文字:蓝色文字
浅蓝色文字:浅蓝色文字
绿色文字:绿色文字
金黄色文字:金黄色文字
浅黄色文字:浅黄色文字
深黄色文字:深黄色文字
需要其它更多的颜色,可以到下面这个网址查更多颜色的 RGB,或者直接用颜色的英文代替 RGB
RGB颜色查询对照表
1.16.4 同时改变字体,字号和颜色
1 | <font face="字体" size="字号" color="颜色">这里是需要突出显示的内容</font> |
效果如下:
这里是需要突出显示的内容
我是黑体字
我是微软雅黑
我是华文彩云
我是红色
我是绿色
我是蓝色
我是尺寸
我是黑体,绿色,尺寸为5
1.17 复选框列表(github可用,hexo不支持)
在列表符号后面加上 [x] 或者 [ ] 代表选中或者未选中情况,注意:[]中间要用空格打开,否则不生效
1 | - [ ] content |
- C
- C++
- Java
- Qt
- Android
- C#
- .NET
1.18 引用块
1.18.1 普通的引用
在blockquote后面不写任何参数,就只是单纯的引用,效果与使用>一样
1 | {% blockquote [author[, source]] [link] [source_link_title] %} |
显示效果如下:
content
1.18.2 对书上语言的引用
1 | {% blockquote 作者, 出处 %} |
显示效果如下:
黑夜无论怎样悠长,白昼总会到来。
1.18.3 对网络上的引用
1 | {% blockquote @作者 网络地址 %} |
展示效果如下:
有时候,“爱国”,是一个空洞的词语。更多的人是在言语里,在诗歌里”爱国“,他们没有一点点实际行动,甚至充满抱怨。
1.19 插入视频
1.19.1 使用 video
标签插入本地视频
1 | <div align=center> |
展示效果如下:
1.19.2 使用 iframe
标签插入网络视频
1 | <iframe |
展示效果如下:
1.19.3 使用 iframe
标签插入手机端兼容的网络视频
1 | <div style="position: relative; width: 100%; height: 0; padding-bottom: 75%;"><iframe src="https://player.bilibili.com/player.html?aid=39807850&cid=69927212&page=1" scrolling="no" border="0" |
展示效果如下:
1.20 插入音频
1.20.1 使用 iframe
标签插入本地音频
1 | <iframe frameborder="yes" border="0" width=300 height=150 src="music.mp3"></iframe> |
展示效果如下:
1.20.2 使用 iframe
标签插入网络音频
1 | <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=387607&auto=0&height=66"></iframe> |
展示效果如下:
# 2 文章编辑 ## 2.1 文章折叠 --- 在要显示的文字末尾添加如下代码实现文章在主页的折叠显示。
1 | <!-- more --> |
或者也可以将themes/next/_config.yml
文件中的auto_excerpt
字段值改为true
2.2 新建草稿(draft)
draft
布局用于创建草稿,生成的文档存在于 source\_drafts\
目录中,默认配置下将不会把该目录下的文档渲染到网站中。
新建一个草稿
hexo n draft draft_name
通过以下命令将草稿发布为正式文章:
hexo publish draft_name
2.3 标签与分类
标签和分类都是用于对文章进行归档的一种方式,标签是一种列表结构,而分类是一种树结构。我们以人作为例子,从标签的角度考虑,我可以拥有程序员、高颜值、幽默等标签,这些标签之间没有层级关系;从分类的角度考虑,我是亚洲人、中国人、河南人,这些分类之间是有明确的包含关系的。
可以在 Front-Matter
中添加 catergories
和 tags
字段为文章添加标签和分类,如我为本文添加了 Hexo
和 Markdown
两个标签,并将其归类到了 技术 / 博客
类别,对应的 Front-Matter
结构如下:
1 | title: Hexo搭建个人博客系列:写作技巧篇 |
注:Front-Matter 是文件最上方以 — 分隔的区域,用于指定本文件的各种参数值
3 自定义NexT样式
这里仅限于使用主题为NexT的情况,自定义其他主题请自行Google。
3.1 修改分隔线样式
默认的分隔线样式为
看起来不太美观,打开themes/next/source/css/_common/scaffolding/base.styl
文件,找到 hr 区块,删除background-image
相关即可。
3.2 自定义其他样式
打开themes/next/source/css/_custom/custom.styl
文件,添加配置如下:
1 | // Custom styles. |
3.3 隐藏修改时间信息和时间下划虚线
3.3.1 隐藏修改时间信息
默认情况下,一篇文章会具有”发表时间”和”更新时间”两个信息,在 Next 主题的主题配置文件中有一个”更新时间”的开关:
1 | # Post meta display settings |
但这个开关是全局性的,要么所有文章都显示,要么所有文章都隐藏,而我只需要某些文章显示其他的隐藏,还是一样从代码入手。修改 next/layout/_macro/post.swig
:
1 | {% if theme.post_meta.updated_at.enabled && datetime_diff %} |
把这段代码的第一行改一下:
1 | {### 根据文章是否有 modify 字段判断是否显示修改时间 ###} |
然后默认情况下,所有文章都不会显示”更新时间”了,如果某些文章需要显示,只需要在文章的头部信息栏增加一个属性 modify: true
即可:
1 | --- |
3.3.2 隐藏时间下划虚线
默认情况下,时间信息(包括创建时间和修改时间)的底部还有一个下划虚线,去掉这个下滑虚线修改: next/source/css/_common/components/post/post-meta.styl
:
1 | .posts-expand .post-meta |
按照注释,删掉 border-bottom
一行即可。