diff --git a/%root/test-collection/enhanced-frontend/rolling-title.md b/%root/test-collection/enhanced-frontend/rolling-title.md
index 5497a50..3f5ca16 100644
--- a/%root/test-collection/enhanced-frontend/rolling-title.md
+++ b/%root/test-collection/enhanced-frontend/rolling-title.md
@@ -1,3 +1,9 @@
+---
+title: 这是一个正在滚动的网页标题
+configurations:
+ web-title.rolling: 'true'
+---
+
# 滚动标题
↖ 看浏览器标题栏
diff --git a/%root/test-collection/enhanced-frontend/test-code-highlight.md b/%root/test-collection/enhanced-frontend/test-code-highlight.md
new file mode 100644
index 0000000..db6a8b7
--- /dev/null
+++ b/%root/test-collection/enhanced-frontend/test-code-highlight.md
@@ -0,0 +1,105 @@
+代码纯手打,没有经过 IDE 查错,如发现错误还请立即 issue
+
+## 创建资源文件索引对象
+
+要使用 ResourceTools,首先需要建立一个 ResourcesPackage 对象,它是你的项目的资源文件的索引对象。
+
+```java
+// 导入类
+import cc.sukazyo.restools.ResourcesPackage;
+
+/* ... */
+
+//创建对象
+ResourcesPackage pack = new ResourcesPackage(Test.class, "assets");
+```
+
+构造函数的第一个参数是一个 Class 对象,用于确定你的项目。
+第二个参数是在项目文件为根目录的路径下,你的资源文件的位置。
+一般来说,在IDE等项目管理环境下,一个项目的源文件路径如下:
+
+```tree
+src
+ ╠═main
+ ║ ╟─java
+ ║ ╙─resources
+ ╚═test
+ ╟─java
+ ╙─resources
+```
+
+这个路径指的就是在{.lang-url}`src/main/resources`目录下的{.lang-url}`assets`文件夹。
+
+## 获取资源文件
+
+不同于 Java 中的 `java.io.File`{.lang-java} 的是,ResourceTools 使用了文件和文件夹对象分离的方式,因此,ResourcesPackage 对象拥有以下两个 get 方法:
+
+```java
+// 获取文件
+public ResFile getResource (String path) throws IOException;
+
+// 获取目录
+public ResDir getResDir (String path) throws IOException;
+```
+
+前一个用于获取文件对象,后一个则是获取目录对象。
+其中的 `path` 参数为文件/目录相对于设置的资源文件根目录(`"assetes"`)的位置。
+
+例如如果一个项目的 resources结构如下:
+
+```tree
+resources
+ ╠═assets
+ ║ ╟─propertes.io
+ ║ ╚═lang
+ ║ ╚═default.lang
+ ╚═idn
+ ╟─ios
+ ╙─windows
+```
+
+若要获取`default.lang`文件,则使用以下方法:
+
+```java
+/** 之前创建的资源文件索引类:
+ * ResourcesPackage pack = new ResourcesPackage(Test.class, "assets");
+ */
+pack.getResource("/lang/default.lang");
+```
+
+## ResFile 使用
+
+```java
+// 获取到一个文件
+ResFile res = pack.getResource("/lang/default.lang");
+
+InputStream ins = res.read(); // 获取到这个文件的流
+
+String content = res.readAsString(); // 直接获取这个文件的纯文本字符串
+ // 没有测试如果将其应用在非纯文本文件上的效果,
+ // 同时 Sukazyo 认为也不会有硬读非纯文本文件的人
+ // 硬读纯文本文件的话,后果请自负
+```
+
+## ResDir 使用
+
+```java
+// 获取到一个目录
+ResFile res = pack.getResource("/");
+
+ResFile[] reses = res.listFiles(); // 读取到直接属于这个目录下的文件
+ // 不读间接属于目录的文件
+ // 在这个例子中会读取到 properties.io
+
+ResDir[] dirs = res.listDirs(); // 和上文类似,读取直接属于此目录的子目录
+ // 这个例子中会读到 lang 目录
+
+File target = new File("./assets/"); // 一个 File 对象,指向的是程序运行目录下的 assets 子目录
+res.extract(target, false); // 将这个目录下的所有文件和文件夹解压到目标目录中
+ // 会解压 properties.io lang/ lang/default.lang
+ // 如果 target 目录不存在的话会创建这个目录
+ // 第二个参数决定是否覆盖已存在的文件,true为覆盖,false为不覆盖
+
+res.extract(target); // 上一个方法的简略版
+ // 覆盖开关始终为 true
+```
diff --git a/%root/test-collection/enhanced-frontend/test-regex-highlight.md b/%root/test-collection/enhanced-frontend/test-regex-highlight.md
index 10d3ae5..a782286 100644
--- a/%root/test-collection/enhanced-frontend/test-regex-highlight.md
+++ b/%root/test-collection/enhanced-frontend/test-regex-highlight.md
@@ -1,3 +1,13 @@
+---
+title: RegEx 着色
+configurations:
+ regex.highlight: 'true'
+---
+
+# regex highight
+
+[source](https://github.com/suk-ws/regex-colorizer)
+
^(?:https?://)?((?:(?:c\\.)?vx|fx|www\\.)?twitter\\.com)/((\w{1,})/status/(\d+)(?:/photo/(\d+))?)/?(\?[\w&=-]+)?$
+
滚动标题栏
diff --git a/ph-bookshelf b/ph-bookshelf
index c374b05..7f73bc1 160000
--- a/ph-bookshelf
+++ b/ph-bookshelf
@@ -1 +1 @@
-Subproject commit c374b0559ab0e1f4737d9c9e2e0b1036af144ace
+Subproject commit 7f73bc1c1a79b86aa79c89365bab1f270f149b38