使用pandoc将Markdown转为HTML,表格显示为纯文本如何解决?
解决Pandoc转换Markdown表格到HTML无边框/显示纯文本的问题
问题根源
- 你使用的
markdown_strict格式默认不支持GitHub风格的表格语法,导致Pandoc将表格解析为纯文本; - 即便Pandoc正确生成表格HTML元素,默认也不会自带边框样式,因此看不到表格边框。
解决方案
方案1:改用Pandoc默认Markdown格式(最简单)
去掉命令中的-f markdown_strict参数,Pandoc默认的Markdown完全兼容你使用的表格语法,再添加CSS样式实现边框显示:
修改后的转换命令:
pandoc --toc --standalone --mathjax -t html file_name.md -o file_name.html --metadata pagetitle="page title" --css table-style.css
创建table-style.css文件,写入基础表格样式:
table { border-collapse: collapse; width: 100%; margin: 1em 0; } th, td { border: 1px solid #ccc; padding: 8px; text-align: left; } th { background-color: #f5f5f5; }
方案2:保留markdown_strict并启用表格扩展
如果必须使用markdown_strict格式,需启用table扩展让Pandoc识别表格语法,再搭配CSS样式:
转换命令修改为:
pandoc --toc --standalone --mathjax -f markdown_strict+table -t html file_name.md -o file_name.html --metadata pagetitle="page title" --css table-style.css
同样使用方案1中的table-style.css文件即可。
方案3:嵌入内联CSS(无需外部文件)
不想单独创建CSS文件的话,可通过--include-in-header参数将样式直接嵌入HTML头部:
先创建table-header.html文件,内容如下:
<style> table { border-collapse: collapse; width: 100%; margin: 1em 0; } th, td { border: 1px solid #ccc; padding: 8px; text-align: left; } th { background-color: #f5f5f5; } </style>
执行转换命令:
pandoc --toc --standalone --mathjax -t html file_name.md -o file_name.html --metadata pagetitle="page title" --include-in-header table-header.html
(若坚持用markdown_strict,添加-f markdown_strict+table参数即可)
补充说明
ReText导出HTML时会自动嵌入表格样式,且其内置的Markdown解析器默认支持GitHub风格表格,因此能正常显示。而你之前的Pandoc命令既限制了语法解析,又未添加样式,才导致异常。
内容的提问来源于stack exchange,提问作者newstudent
相关产品推荐
相关产品推荐

