parse-latexQuarto扩展就是考虑到这种情况而编写的.它的工作原理是使用PanDoc的LaTeX解析器来处理文档中的所有原始LaTeX片段,从而可以将这些片段转换为任意格式.
转换受到PanDoc的LaTeX解析器的限制;尤其是样式信息不会在转换中保留.
为了完整起见,而且因为它相当简短,下面是该扩展中附带的PandocLua过滤器的完整代码.它也可以通过将其保存到文件parse-latex.lua
,然后在QMD文件的YAML头中与filters: [parse-latex.lua]
一起使用来直接使用.
--- parse-latex.lua – parse and replace raw LaTeX snippets
---
--- Copyright: © 2021–2022 Albert Krewinkel
--- License: MIT – see LICENSE for details
-- Makes sure users know if their pandoc version is too old for this
-- filter.
PANDOC_VERSION:must_be_at_least '2.9'
-- Return an empty filter if the target format is LaTeX: the snippets will be
-- passed through unchanged.
if FORMAT:match 'latex' then
return {}
end
-- Parse and replace raw TeX blocks, leave all other raw blocks
-- alone.
function RawBlock (raw)
if raw.format:match 'tex' then
return pandoc.read(raw.text, 'latex').blocks
end
end
-- Parse and replace raw TeX inlines, leave other raw inline
-- elements alone.
function RawInline(raw)
if raw.format:match 'tex' then
return pandoc.utils.blocks_to_inlines(
pandoc.read(raw.text, 'latex').blocks
)
end
end