Swift Markdown框架读写文件后格式变更,能否配置避免?
解决Swift-Markdown格式化时的格式变更问题
针对你遇到的标题后自动新增换行、列表缩进从4空格变为2空格的问题,完全可以通过配置框架的FormatOptions来调整格式化行为:
1. 恢复4空格的列表缩进
框架默认用2个空格作为列表嵌套缩进,只需修改FormatOptions的indentWidth属性为4,就能匹配你原始文件的缩进格式:
2. 保留标题后的原有换行(避免自动添加空行)
框架默认会遵循CommonMark规范在块元素(比如标题和列表)之间添加空行,开启preservesExistingLineBreaks选项后,就能保留你原始文件里标题后无空行的状态。
修改后的代码示例
let data = FileManager.default.contents(atPath: "myfile.md")! var document = Document(parsing: String(data: data, encoding: .utf8)!) // 初始化格式化选项并自定义配置 var formatOptions = FormatOptions() formatOptions.indentWidth = 4 // 设置列表缩进为4个空格 formatOptions.preservesExistingLineBreaks = true // 保留块元素间的原始换行 let formattedData = try document.format(options: formatOptions).data(using: .utf8)! let url = URL(filePath: "myfile.md") try formattedData.write(to: url)
额外说明
如果需要保留行内的前后空格(比如某些文本开头/结尾的空格),可以再添加formatOptions.preservesWhitespace = true,一般场景下不需要这个配置。这些调整都是框架原生支持的,无需额外扩展。
内容的提问来源于stack exchange,提问作者swalkner
相关产品推荐
相关产品推荐

