markdown 语法规范明确禁止在链接标题(title attribute)中包含换行符;所有换行都会导致解析失败,标题被截断或整个链接失效。若需多行提示文本,必须改用 html 原生写法或借助扩展方案。
markdown 语法规范明确禁止在链接标题(title attribute)中包含换行符;所有换行都会导致解析失败,标题被截断或整个链接失效。若需多行提示文本,必须改用 html 原生写法或借助扩展方案。
在标准 CommonMark(及 GitHub Flavored Markdown、Pandoc 默认模式等主流实现)中,链接标题(即双引号包裹的 title 部分)必须是单行字符串。如下写法:
[tooltip](https://stackoverflow.com "This is..indeed......a tooltip text.")
会被解析器视为语法错误或未闭合的字符串,最终要么渲染为纯文本(不生成 <a> 标签),要么仅截取第一行 "This is.. 作为 title,其余内容被丢弃或误判为后续文档内容。
✅ 正确替代方案如下:
既然目标是生成含换行的 title 属性(浏览器 hover 时显示多行提示),最可靠的方式是绕过 Markdown 解析,手写 HTML:
<a href="https://stackoverflow.com" title="This is indeed... ...a tooltip text.">tooltip</a>
注意:HTML 中需用 (LF 换行符的 HTML 实体)表示换行——<br> 在 title 属性中无效,浏览器仅识别 或 。现代浏览器(Chrome/Firefox/Safari/Edge)均支持 title 中的换行显示(以空白行分隔)。
标准 Markdown 不支持,但某些工具链可拓展。例如 Pandoc 允许通过 Lua 过滤器预处理,将特定标记(如 {{nl}})替换为 ;或结合 JavaScript 在前端动态注入带换行的 title。但这牺牲了可移植性与简洁性,仅适用于可控构建环境。
总结:纯 Markdown 无法实现链接标题中的空行;这是语法设计限制,而非 bug。务实做法是——对需要多行提示的关键链接,主动降级为 HTML,并用 安全插入换行。既符合规范,又确保跨平台一致渲染。