格式化程序中计算行长度的错误
前题的“ MAQQTAG Opening WIDTH” 检查错误地计算了标记开口的渲染宽度, 使其低估了行长 2 个字符 。 这导致标记在实际超过所配置的最大宽度时被保留入内.
□ 地点
文件:`src/formatter.ts' 直线:~230(“格式节点”中的“tag”)
□ 当前的行为
连接是 LongTag 打开=
内衬图.长+开口.长 * 2 >
(o.maxTag OpeningWidths MAX TAG Opening WIDTH;这一计算法增加了开口.长度 * 2' (等于开口='''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''只''''''''''''''''''''''''''''''''''''''''''''''''''''''''
□ 问题
制成的标记其实是这样的:
标签名 attr=“ 值 ”间接费用包括:
- 开幕词:
''''=3个字符 - 闭幕词:
'''=3个字符 - ** 间接费用共计:6个字符**
目前的计算只记录了4个字符,缺少了两个空格.
□ 影响
以“MAQTAG Opening WIDTH=80”表示:
- ** 当前行为**:在“内置标签.长+4 > 80”时进行分拆,意思是内置标签可达76个字符
- ** 实际变宽**:最多82个字符(76个+6个间接费用)
- ** 成果**: 显示为 81- 82 字符宽的标记被内置, 超过预定的 80 字符限制
□ 实例
标签为“内含标签.长=77”:
如果条件="一些长值" atr="另一个值" extra="更多" QQ- 目前的计算:`77 + 4 = 81'(80时没有触发分裂)
- 实际宽度: " 77+6=83 " 字符(超过80个)
□提议修补
备选1:纠正计算 [TypeScript] 连接是 LongTag 打开= 内衬图.长+开口.长 * 2 + 2 > (o.maxTag OpeningWidths MAX TAG Opening WIDTH;
备选2:更明确(建议)
```2ZZ
c. 开口Tag=开口+';
c. 闭合;
连接是 LongTag 打开=
打开 Tag.长 + 内含 Tag.长 + 相近 Tag.长 >
(o.maxTag OpeningWidths MAX TAG Opening WIDTH;□ 后向相容性说明
这个固定会使一些标记被分出之前所留入的行(具体标记在内容长度为75-76个字符之间). 这在技术上是格式化产出的突破性变化,尽管它使前题行为符合所记录的`maxTag OpeningWidth'限制。
如果需要保持准确的后向相容性,则考虑将“MAQQTAG Opening WIDTH”改为82,而不是固定计算.
内容来源: markdoc/markdoc