利用pandoc将tex转成html
直接上命令:
1 | pandoc -s input.tex |
如果要直接复制,可以使用下面的单行命令(内容一样)
1 | pandoc -s input.tex --bibliography=refs.bib --csl=springer-basic-brackets.csl --citeproc -o output.html --katex |
几点注明:
我在tex文件中使用了biblatex添加了参考文献,这里要使用相关命令正确输出参考文献。
其中refs.bib
是bib文件,springer-basic-brackets.csl
是引用样式文件,--citeproc
参数是为了启用引用功能。
bib文件如果你写了参考文献应该就会有,没有就忽略;如果你写了bib文件,你还需要csl
文件以确保参考文献正确显示。有很多csl样式可供选择,可以上网搜索。这里我随便用了一个样式。
需要注意csl
文件(如果我没记错)一方面决定结尾参考文献的名字以何种形式显示,另一方面决定引用时的格式。
比如我使用的这个样式,可以让参考文献在引用时呈现[1]
这种形式。
最后,--katex
参数是为了使用katex渲染公式。还有其它在html文档里面显示公式的方法,不过我个人测试了一下,感觉katex渲染的公式足够好。
还有几点注明:
经过测试,上命令可以生成足够美观的html文档,可满足基本需求,但尚有一些问题:
- 文中的bib引用
[1]
不具备跳转到文末的超链接 - 文中的图片脚注不具备
图1
的数字编号 - 图片不支持
\subfigure
的子图功能 - 上述只是在我的测试tex文件里面发现的问题,还有诸多语法未测试。
尝试解决
经过和ChatGPT的沟通,可以使用lua脚本解决部分问题。
⚠️警告⚠️:以下lua脚本由ChatGPT生成,不保证鲁棒,且有损坏输出文件的风险(在我使用时已经出现了问题),因此仅供参考,请谨慎使用。
如要使用,需要额外在pandoc命令中添加--lua-filter=filename.lua
参数。
解决图片编号问题:
1 | local image_count = 0 |
bug:似乎会损坏图片caption里面的cite。
解决引用链接问题:
1 | function Cite(elem) |
bug:无法支持多个引用,如\cite{a,b,c}
的latex语法,在其它情况运转比较正常。如果在意引用角标的链接问题,可以尝试使用。