如何使用<font color="#xxxxxx">标签实现HTML代码高亮?是否有工具支持?
如何用
<font color="#xxxxxx">标签实现代码语法高亮? 可用工具方案
自定义Python脚本:借助
pygments语法解析库,自定义格式化器生成带<font>标签的HTML。Pygments默认输出带class的span,我们可以修改格式逻辑替换为你需要的<font>标签:from pygments import highlight from pygments.lexers import CppLexer from pygments.formatters import HtmlFormatter class FontHtmlFormatter(HtmlFormatter): def wrap(self, source, outfile): return self._wrap_code(source) def _wrap_code(self, source): # 映射Pygments的语法类到目标颜色 color_map = { "k": "#b02f60", # 关键字(using) "kn": "#1773cc", # 包含指令(#include) "n": "#000000", # 普通标识符(cin、cout) "mi": "#ff8b00", # 数字(1) "s": "#4a6f8b", # 字符串(换行符) "kt": "#008b00" # 类型关键字(int、namespace) } for i, t in source: if i == 1: # 替换span标签为font标签 for cls, color in color_map.items(): t = t.replace(f'<span class="{cls}">', f'<font color="{color}">') if cls in ["k", "kt"]: t = t.replace(f'<span class="{cls}">', f'<font color="{color}"><b>') t = t.replace('</span>', '</b></font>' if '<b>' in t else '</font>') yield i, t # 输入你的代码 code = """#include <NTL/ZZ.h> using namespace std; using namespace NTL; int main() { ZZ a, b, c; cin >> a; cin >> b; c = (a+1)*(b+1); cout << c << "\\n"; }""" # 输出带font标签的高亮HTML print(highlight(code, CppLexer(), FontHtmlFormatter()))运行后会直接输出符合要求的HTML代码,你可以根据示例配色调整
color_map里的色值。在线定制转换工具:部分在线语法高亮工具支持自定义输出模板,你可以选择对应编程语言后,将输出模板设置为用
<font color="xxx">包裹对应语法元素,替换默认的span样式。
手动编写方案
如果找不到适配的工具,手动标注也是可行的:
- 按语法拆分代码元素:关键字(
using/int)、包含语句、数字、字符串、普通变量/函数名等; - 给每个元素套上对应颜色的
<font>标签,比如:- 关键字:
<font color="#b02f60"><b>using</b></font> - 包含指令:
<font color="#1773cc">#include </font><font color="#4a6f8b"><NTL/ZZ.h></font> - 数字:
<font color="#ff8b00">1</font>
- 关键字:
内容的提问来源于stack exchange,提问作者Accepted
相关产品推荐
相关产品推荐

