Asciidoctor中自定义全局编号remark元素的实现可行性问询
当然可以实现!AsciiDoc(尤其是搭配Asciidoctor处理器时)的定制灵活性完全能满足你的需求——打造一个和NOTE:样式一致、还能自动顺序编号的自定义remark元素。下面给你两种实用的实现方案:
方案一:基于内置Admonition机制(贴合原生体验)
这种方案利用AsciiDoc原生的admonition系统,只需要简单配置就能实现带编号的remark,样式和原生NOTE完全对齐。
步骤1:文档头部配置
在文档最开头添加以下配置:
# 你的文档标题 :counter-remark: 0 :remark-caption: Remark {counter:remark:increment} :admonition-types: note,tip,important,caution,warning,remark
:counter-remark: 0:初始化remark的计数器,从0开始:remark-caption: Remark {counter:remark:increment}:定义remark的标题,其中{counter:remark:increment}会自动帮你递增计数:admonition-types::把自定义的remark加入到系统支持的admonition类型列表中
步骤2:使用方式
配置完成后,就可以像使用原生NOTE一样调用remark了:
[remark] ==== Text of remark ==== [remark] ==== Text of remark 2 ====
渲染后会自动显示为:
Remark 1: Text of remark
Remark 2: Text of remark 2
如果想调整样式(比如图标、边框颜色),只需要给.admonition.remark类写自定义CSS即可,完全复用NOTE的样式逻辑。
方案二:自定义Block Macro(支持remark:: Text简洁格式)
如果你更偏好题目里提到的remark:: Text这种短格式写法,可以自定义一个block macro来实现:
步骤1:文档头部添加宏定义
在文档开头加入计数器初始化和宏的定义:
# 你的文档标题 :counter-remark: 0 [blockmacro] defmacro::remark[text] :counter-remark: {counter:remark} + 1 pass::[<div class="admonition remark"> <p class="admonition-title">Remark {counter-remark}</p> <p>{text}</p> </div>]
defmacro::remark[text]:定义一个名为remark的block macro,接收你输入的文本内容- 每次调用宏时,计数器会自动加1
- 用
pass::输出和原生admonition一致的HTML结构,保证样式匹配
步骤2:使用方式
直接用你想要的简洁格式即可:
remark:: Text of remark remark:: Text of remark 2
渲染效果和方案一完全一致,同样是带自动编号、样式和NOTE相同的提示块。
内容的提问来源于stack exchange,提问作者Norbert
相关产品推荐
相关产品推荐

