use*_*330 15 sweave pandoc knitr
我花了一个星期用knitr写了一个R小插图,在R Markdown中输入,用HTML输出.以前我写的所有小插曲都是带有PDF目标的Sweave.
我想念的其中一件事是Synctex,它能够从PDF预览跳回到文件中的相应行.据我所知,knitr在生成LaTeX输出时支持这一点(我认为使用与Sweave相同的方案),但在生成HTML输出时则不支持.
我知道HTML Mark的R Markdown是通过pandoc进行的,所以我检查了pandoc文档,但是在那里找不到任何关于Synctex的内容.
所以我的问题是:
是否有任何支持Synctex的HTML浏览器可以从编辑器进行正向和反向搜索?(由于RStudio有自己的内置浏览器,它可能会这样做...)
pandoc是否支持任何类似Sweave的方案,用于将HTML文件中的输出位置与.md输入中的输入位置相关联?
截至 2022 年 10 月,Pandoc 不直接支持 Synctex,但此处描述了一些支持基础: https: //github.com/jgm/pandoc/issues/4565#issuecomment-749294039。总之:
如果输入是 Commonmark,请使用sourcepos扩展名,并在源位置内部保存记录。例如,命令行上的此选项: --from commonmark+sourcepos。
如果输出是 HTML,则位置将作为data-pos属性插入到各个组件上,例如
<div class="section level2" data-pos="Untitled.knit.md@11:1-12:1">指示 DIV 基于文件第 11 行第 1 列到第 12 行第 1 列的内容Untitled.knit.md。
如果输出是 LaTeX,则文档中的每个单词都将用大括号括起来,但源位置不会在文件中输入。可以使用单独运行的pandocwith --to jsonreplacement直接检索它--to latex,例如
pandoc --from commonmark+sourcepos --to json -i test.md -o test.json
Run Code Online (Sandbox Code Playgroud)
这将写入一个描述输出结构并包含data-pos属性的 JSON 文件。据我所知,将其与.tex文件(或生成的.pdf文件)相匹配对于读者来说是一项有点困难的练习。