RMarkdown生成HTML时,该如何为无序列表添加自定义文字颜色
问题根因
之前测试中单条用<span style="color: red;">包裹的文本可以正常显示红色,是因为行内span套行内文本完全符合HTML嵌套规则;但用同一个span包裹无序列表时,列表渲染后是<ul>/<li>块级结构,属于行内元素不允许嵌套的内容类型。RMarkdown的渲染器解析到这种非法嵌套时,会自动把span标签从列表结构的上层剥离,导致设置的颜色样式完全无法作用到列表内容上。
可直接在RMarkdown文本区生效的方案
- 逐行添加行内样式(适配性最广)
这种写法完全避开非法嵌套问题,不管RMarkdown输出HTML/PDF/其他格式都不会失效,示例代码:
列表自带的项目符号、文字内容都会自动继承span设置的颜色,不需要额外调整样式。* <span style="color: red;">bullet1</span> * <span style="color: red;">bullet2</span> * <span style="color: red;">bullet3</span> - 用块级容器统一包裹整段内容(减少重复代码)
如果需要让同区块的单行文本、列表内容统一显示红色,只需要把外层的<span>替换为块级的<div>标签即可,示例代码:<div style="color: red;"> I am red text * bullet1 * bullet2 * bullet3 </div>注意:
<div>标签和内部的Markdown内容之间必须留空行,否则解析器会把列表识别为纯文本,无法生成正常的列表结构。由于div本身是块级元素,包裹其他块级结构完全符合HTML嵌套规则,设置的颜色会自动继承到内部所有文本节点。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

