如何在AsciiDoctor中手动高亮literal/listing/source块部分内容?
在AsciiDoctor中手动高亮literal/listing/source块内容的可行方案
核心限制说明:
literal块的设计是纯文本展示,会直接转义所有标记语法,你示例里的[.red]#ffff#写法在literal块中只会原样输出,无法生效。要实现局部高亮,需要换用支持内联格式的块类型,或者借助扩展能力。方案1:使用
listing块结合内联样式标记listing块默认允许解析部分内联格式,你可以用[.类名]#目标内容#的语法给文本添加自定义类,也可以用**目标内容**实现加粗(对应HTML的<strong>标签)。示例代码:[listing] .... 000000: 1234 7364 2832 9323 000008: 4823 [.red]#ffff# 4634 7434 000010: 1234 7364 2832 9323 ....渲染后,
ffff会被包裹在带有red类的<span>标签中,你只需要添加CSS规则(比如.red { color: red; })就能实现高亮效果。方案2:使用
source块结合自定义语法处理
如果你处理的是代码类内容,source块支持语法高亮,可通过两种方式实现局部高亮:- 直接在内容中插入HTML标签(需确保语法高亮器不转义这些标签),示例:
[source] ---- 000000: 1234 7364 2832 9323 000008: 4823 <strong>ffff</strong> 4634 7434 000010: 1234 7364 2832 9323 ---- - 自定义语法高亮规则,让高亮器自动匹配并标记目标内容。
- 直接在内容中插入HTML标签(需确保语法高亮器不转义这些标签),示例:
方案3:编写Asciidoctor扩展
如果你必须使用literal块,可通过编写Ruby扩展拦截块内容,识别自定义标记并转换为对应的HTML元素。比如将[.red]#(.*?)#替换为<span class="red">$1</span>,实现样式类的添加。
内容的提问来源于stack exchange,提问作者FERcsI
相关产品推荐
相关产品推荐

