能否在Rmarkdown文件中嵌入HTML代码并正常输出为HTML文件
问题原因
Rmarkdown基于Pandoc进行渲染,默认会将HTML代码段中的空行识别为段落分隔符,将连续的HTML结构拆分为多个独立的文本块处理,导致原有HTML格式失效。另外你提供的代码存在两处语法错误:一是font结束标签多写了size属性(错误写法为</font size>,正确为</font>),二是第二个图片相关的属性值末尾多了无效空格,也会影响渲染效果。
解决方法
有两种可直接使用的修复方案:
- 方案一:使用Rmarkdown原生HTML块包裹代码
直接将所有HTML内容放在````{=html}`和```标记的块中,Pandoc会直接保留块内所有内容原样输出,不会做额外拆分处理,不需要修改原有HTML的换行和格式。
修复后的完整Rmd文件示例:--- title: "Test Example" date: "9/8/2021" output: html_document --- ```{=html} <div style="text-align:center;"> <div style="display:inline-block;"> <div class="wp-block-image" style="display:inline-block;"> <center> <figure class="aligncenter size-full"> <a href="https://www.idashboards.com/wp-content/uploads/2020/06/IT-Service-Desk.png" target="_blank" rel="noopener"> <img loading="lazy" width="517" height="261" src="https://www.idashboards.com/wp-content/uploads/2020/06/IT-Service-Desk.png" alt="" class="wp-image-5379"> </a> <br> <figcaption> <b><u><font size="+2"> <a href="https://www.idashboards.com/wp-content/uploads/2020/06/IT-Service-Desk.png">Dashboard Example 1</a> </font> </b></u> </figcaption> </figure> </center> </div> <div class="wp-block-image" style="display:inline-block;"> <center> <figure class="aligncenter size-full"> <a href="https://www.geckoboard.com/uploads/CEO-dashboard-geckoboard.png" target="_blank" rel="noopener"> <img loading="lazy" width="517" height="261" src="https://www.geckoboard.com/uploads/CEO-dashboard-geckoboard.png" alt="" class="wp-image-5379"> </a> <br> <figcaption> <b><u><font size="+2"> <a href="https://www.geckoboard.com/uploads/CEO-dashboard-geckoboard.png">Dashboard Example 2</a> </font> </b></u> </figcaption> </figure> </center> </div> </div> </div> - 方案二:删除HTML代码中所有不必要的空行
只要保证HTML标签之间没有空行分隔,Pandoc就会将其识别为连续的HTML结构正常渲染,不需要额外添加块标记。
内容的提问来源于stack exchange,提问作者RL_Pug
相关产品推荐
相关产品推荐

