前言
博客园随笔写作可以使用 Markdown 进行编辑,当展示代码时,可以使用下面的语法来对代码块进行展示:
```language
code-content
```
一般来说,指明了 language
后,应该是可以是实现语法高亮的。其基本原理就是将代码中的 关键字
、变量
、函数
等待字符做正则化匹配,将纯文本的代码内容分块,与固定语法内容的着色方案(css样式)对应上。
然鹅!!大部分编程语言都能实现较好的高亮,而 Matlab 效果却很差,语法样式是错误的!看着很不舒服。
就像下面这样:
% 为输出创建文件
!touch testFile.txt
fid = fopen('testFile.txt','w');
for i = 1:10
frprintf(fid,'%6.2f \n',i);
end
作为强迫症的我想把 Matlab 代码高亮变成和 Matlab软件中高亮方式一模一样。话不多说,开干!
语法高亮的基本内容
在改造之前,首先得理解语法高亮的基本内容。
一般来说,作为一种编程语言,都包括以下基本语法项目:
- keyword 关键字,也就是我们常用 for、if、else、end等等
- string 字符串,作为文本的一些字符
- params 变量,自己定义的变量
- comment 注释,代码一般都会有注释
- bracket 括号,一般地代码都会有成对出现的圆括号、花括号
以上这些,就是作为一个语法高亮方案,所需要匹配的基本内容。这些语法项目,都会有一定的规律(不然怎么叫语法),通过正则表达式,可以将写好的代码块中,对应的语法基本项目匹配出来。比如你的代码中有很多个 if
,那么通过正则表达式,就可以将他们全部匹配到。
贴上样式标签
当匹配到基本的语法项目后,将他们贴上对应的样式标签,例如对于匹配到的 if
,将其贴上关键字标签:
<span class="matlab-keyword">if</span>
这样,if
这个关键字就会被 matlab-keyword
样式着色。其他的也和这个一样,贴上对应的样式即可。