Hexo Markdown & TOC 功能测试文章
引言
本文旨在全面测试 Hexo 环境下 Markdown 的渲染效果以及由此生成的文章目录 (Table of Contents, TOC) 功能。我们将涵盖标题、段落、列表、代码块、引用、链接、图片、表格、脚注等多种常用语法,并特别构建一个具有挑战性的标题层级结构,以验证 TOC 的生成深度和准确性。
请关注页面右侧(或根据你的主题配置的位置)生成的目录,并通过滚动页面和点击目录链接来测试其浮动和平滑滚动功能。
一级测试区:基础语法概览
这是文章的第一部分,我们先来快速预览一些基础的 Markdown 语法元素。
基础段落与强调
这是一个标准的 Markdown 段落。段落之间通过空行分隔。
你可以在文字中使用 斜体 或 斜体 来强调。使用 粗体 或 粗体 来突出重要内容。你甚至可以同时使用 粗斜体。如果你需要标记删除的内容,可以使用 删除线。
列表测试
无序列表:
- 苹果
- 香蕉
- 樱桃
- 红色樱桃
- 黑色樱桃
- 日期
有序列表:
- 第一步:准备材料
- 第二步:混合
- 第三步:加热
- 在小火上加热
- 搅拌均匀
- 第四步:完成
混合列表:
- 列表项 1
- 嵌套有序项 1.1
- 嵌套有序项 1.2
- 列表项 2
- 嵌套无序项 2.1
- 嵌套无序项 2.2
- 更深层的无序项 2.2.1
引用块(Blockquote)
这是一个简单的引用:
知识就是力量。
多行引用:
生活就像一盒巧克力,你永远不知道下一块是什么味道。
—— Gump
嵌套引用:
外层引用。
内层引用。
更深层引用。
水平分割线
你可以使用三个或更多的星号 ***
、破折号 ---
或下划线 ___
来创建水平分割线。
二级测试区:代码与链接
这一部分我们测试代码的展示和链接功能。
行内代码与代码块
这是一个包含 行内代码
的句子。
使用围栏代码块展示多行代码:
1 | def factorial(n): |
指定语言类型有助于代码高亮:
1 | // JavaScript example |
链接测试
这是一个普通链接。
带有标题的链接:带标题链接
参考式链接:参考链接示例
自动链接:https://www.example.com/auto
三级测试区:表格与脚注
表格和脚注在某些文档中也很常用。
表格测试
一个简单的表格:
列头 1 | 列头 2 | 列头 3 |
---|---|---|
行 1 列 1 | 行 1 列 2 | 行 1 列 3 |
行 2 列 1 | 行 2 列 2 | 行 2 列 3 |
带有对齐方式的表格:
左对齐 | 居中对齐 | 右对齐 |
---|---|---|
内容左侧 | 内容居中 | 内容右侧 |
另一行左侧 | 另一行居中 | 另一行右侧 |
脚注测试
这是一个带有脚注的句子^footnoteA。你可以在需要添加额外说明的地方使用脚注。
另一个句子,使用不同的脚注^footnoteB。脚注的顺序可以不同,但引用时会自动编号。
四级测试区:深层嵌套标题结构
这是本文的关键部分,用于测试 TOC 对深层标题的支持。我们将努力模拟一个具有多层分支的结构。
四级目录分支点 1.1
五级目录分支点 1.1.1
六级目录分支点 1.1.1.1
七级标题测试 1.1.1.1.1
这里是一些内容,可能是嵌套列表:
- 项目 A
- 子项目 A.1
- 子项目 A.2
- 项目 B
七级标题测试 1.1.1.1.2
这里是另一个 H6 标题下的内容。
1 | echo "测试 H6 代码块" |
七级标题测试 1.1.1.1.3
第三个 H6 标题的内容。
六级目录分支点 1.1.2
七级标题测试 1.1.2.1
内容。Code: console.log('Test');
七级标题测试 1.1.2.2
内容。
七级标题测试 1.1.2.3
内容。
总结
希望这篇测试文章包含了足够多样的 Markdown 语法以及复杂的标题结构,以帮助你验证 Hexo 主题的渲染能力和 TOC 功能。如果在某些地方渲染不正确或 TOC 有问题,你就可以根据这篇标准化的测试文章来定位问题。
Remember to clear Hexo cache and regenerate site files after adding/modifying posts:hexo clean && hexo g && hexo s
祝测试顺利!
数和二叉树的定义
5.1.1 树的定义
树(Tree)是 $\begin{matrix} n & (n≥0) \end{matrix}$ 个结点的有限集,它或为空树($n=0$);或为非空树,对于非空树 $T$ :
- 有且仅有一个称之为根的结点;
- 除根结点以外的其余结点可分为 $\begin{matrix} m & (m>0) \end{matrix}$ 个互不相交的有限集 $T_1,T_2,\cdots ,T_m$ 其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。
例如,在下图中,(a) 是只有一个根结点的树;(b) 是有 13 个结点的树,其中 $A$ 是根,其余结点分成 3 个互不相交的子集: $T_1={B,E,F,K,L}$ , $T_2={C,G}$ , $T_3={D,H,I,J,M}$ 。 $T_1$ 、 $T_2$ 和 $T_3$ 都是根 $A$ 的子树,且本身也是一棵树。例如 $T_1$ ,其根为 $B$ ,其余结点分为两个互不相交的子集: $T_{11}={E,K,L}$ , $T_{12}={F}$ 。 $T_{11}$ 和 $T_{12}$ 都是 $B$ 的子树。而 $T_{11}$ 中 $E$ 是根, ${K}$ 和 ${L}$ 是 $E$ 的两棵互不相交的子树,其本身又是只有一个根结点的树。
- 树的示例:
树的结构定义是一个递归的定义,即在树的定义中又用到树的定义,它道出了树的固有特性。树还可有其他的表示形式,如下图所示为上图 (b) 中树的各种表示。其中 (a) 是以嵌套集合(即是一些集合的集体,对于其中任何两个集合,或者不相交,或者一个包含另一个)的形式表示的;(b) 是以广义表的形式表示的,根作为由子树森林组成的表的名字写在表的左边;(c) 用的是凹入表示法(类似书的编目)。表示方法的多样化,正说明了树结构在日常生活中及计算机程序设计中的重要性。一般来说,分等级的分类方案都可用层次结构来表示,也就是说,都可由一个树结构来表示。
- 树的其他 3 种表示法:
下面介绍树结构中的一些基本术语。
5.1.2 树的基本术语
- 结点:树中的一个独立单元。包含一个数据元素及若干指向其子树的分支,如上数第二张图 (b) 中的 $A$ 、 $B$ 、 $C$ 、 $D$ 等。(下面术语中均以该图为例来说明)
- 结点的度:结点拥有的子树数称为结点的度。例如, $A$ 的度为 $3$ , $C$ 的度为 $1$ , $F$ 的度为 $0$ 。
- 树的度:树的度是树内各结点度的最大值。图 (b) 所示的树的度为 $3$ 。
- 叶子:度为 $0$ 的结点称为叶子或终端结点。结点 $K$ 、 $L$ 、 $F$ 、 $G$ 、 $M$ 、 $I$ 、 $J$ 都是树的叶子。
- 非终端结点:度不为 $0$ 的结点称为非终端结点或分支结点。除根结点之外,非终端结点也称为内部结点。
- 双亲和孩子:结点的子树的根称为该结点的孩子,相应地,该结点称为孩子的双亲。例如, $B$ 的双亲为 $A$ , $B$ 的孩子有 $E$ 和 $F$ 。
- 兄弟:同一个双亲的孩子之间互称兄弟。例如, $H$ 、 $I$ 和 $J$ 互为兄弟。
- 祖先:从根到该结点所经分支上的所有结点。例如, $M$ 的祖先为 $A$ 、 $D$ 和 $H$ 。
- 子孙:以某结点为根的子树中的任一结点都称为该结点的子孙。如 $B$ 的子孙为 $E$ 、 $K$ 、 $L$ 和 $F$ 。
- 层次:结点的层次从根开始定义起,根为第一层,根的孩子为第二层。树中任一结点的层次等于其双亲结点的层次加 $1$ 。
- 堂兄弟:双亲在同一层的结点互为堂兄弟。例如,结点 $G$ 与 $E$ 、 $F$ 、 $H$ 、 $I$ 、 $J$ 互为堂兄弟。
- 树的深度:树中结点的最大层次称为树的深度或高度。图 (b) 所示的树的深度为 $4$ 。
- 有序树和无序树:如果将树中结点的各子树看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。在有序树中最左边的子树的根称为第一个孩子,最右边的称为最后一个孩子。
- 森林:是 $\begin{matrix} m & (m≥0) \end{matrix}$ 棵互不相交的树的集合。对树中每个结点而言,其子树的集合即为森林。由此,也可以用森林和树相互递归的定义来描述树。
就逻辑结构而言,任何一棵树都是一个二元组 $Tree=(root,F)$ ,其中 $root$ 是数据元素,称作树的根结点; $F$ 是 $\begin{matrix} m & (m≥0) \end{matrix}$ 棵树的森林, $F=(T_1,T_2,\cdots ,T_m)$ ,其中 $T=(r_i,F_i)$ 称作根 $root$ 的第 $i$ 棵子树;当 $m≠0$ 时,在树根和其子树森林之间存在下列关系:
$$RF=\lbrace\langle root,r_i\rangle\ |\ i=1,2,\cdots,m,\ m>0\rbrace$$
这个定义将有助于得到森林和树与二叉树之间转换的递归定义。
5.1.3 二叉树的定义
二叉树(Binary Tree)是 $\begin{matrix} n & (n≥0) \end{matrix}$ 个结点所构成的集合,它或为空树( $n=0$ );或为非空树,对于非空树 $T$ :
- 有且仅有一个称之为根的结点;
- 除根结点以外的其余结点分为两个互不相交的子集 $T_1$ 和 $T_2$ ,分别称为 $T$ 的左子树和右子树,且 $T_1$ 和 $T_2$ 本身又都是二叉树。
二叉树与树一样具有递归性质,二叉树与树的区别主要有以下两点:
- 二叉树每个结点至多只有两棵子树(即二叉树中不存在度大于 $2$ 的结点);
- 二叉树的子树有左右之分,其次序不能任意颠倒。
二叉树的递归定义表明二叉树或为空,或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。由于这两棵子树也是二叉树,则由二叉树的定义,它们也可以是空树。由此,二叉树可以有 5 种基本形态,如图所示。
- 二叉树的 5 种基本形态:
5.1.2 小节 中引入的有关树的术语是都适用于二叉树。
1 |
|