向latex输出添加data-pos信息



如本文所述,当源为commonmark+sourcepos时,Pandoc记录类似synctex的信息。例如,对于这个通用标记输入,

---
title: "Sample"
---
This is a sample document.

本机格式的输出如下所示:

Pandoc
Meta
{ unMeta =
fromList [ ( "title" , MetaInlines [ Str "Sample" ] ) ]
}
[ Div
( "" , [] , [ ( "data-pos" , "Sample.knit.md@5:1-6:1" ) ] )
[ Para
[ Span
( ""
, []
, [ ( "data-pos" , "Sample.knit.md@5:1-5:5" ) ]
)
[ Str "This" ]
, Span
( ""
, []
, [ ( "data-pos" , "Sample.knit.md@5:5-5:6" ) ]
)
[ Space ]
, Span
( ""
, []
, [ ( "data-pos" , "Sample.knit.md@5:6-5:8" ) ]
)
[ Str "is" ]

但是在。tex文件中显示的全部内容是:

{This}{ }{is}...

作为迈向Synctex支持的一步,我想将data-pos信息作为LaTeX标记插入,即将.tex输出更改为如下所示:

{Thisdatapos{Sample.knit.md@5:1-5:5}}{ datapos{Sample.knit.md@5:5-5:6}}{isdatapos{Sample.knit.md@5:6-5:8}}...

这看起来像是Lua过滤器可以很容易地完成的事情:寻找data-pos记录,将位置信息复制到Str记录。然而,我不知道Lua或Pandoc母语。有人能帮帮忙吗?对Span记录这样做对于我的目的就足够了。我使用的是Pandoc 2.18和Lua 5.4。

这是一个似乎有效的尝试。评论或更正仍然欢迎!

Span = function(span)
local datapos = span.attributes['data-pos']
if datapos then
table.insert(span.content, pandoc.RawInline('tex', "\datapos{" .. datapos .. "}"))
end
return span
end

相关内容

最新更新