DCsunset / pandoc-include

A pandoc filter to allow file and header inclusion

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support for `sourcepos` extension recursively, to provide sync-preview.

belonesox opened this issue · comments

I am working on vscode extension that provide WYSIWYM/Latex-convinienient way
to work on complex markdown documentation with inclusions
using pandoc-include (with my patch to support it).
And with back/forward syncing like that (small demo):

demo-screencast.mp4

The key feature from pandoc core is core sourcepos extension that can add JSON-tags "datapos" to output.
The problem is that pandoc-include does "not inherit" filters from main document.

So to support it, I wrote couple of fast LUA filters:

  • desourcepos.lua — special LUA-filter to remove sourcepos tags to read "pure" inclusion command in pandoc-include.
  • filename-sourcepos.lua — special LUA-filter to add filename to sourcepos tags when we including files in pandoc-include

And add supporting PANDOC_SOURCE_FORMAT environment variable, if it exists, that would mean that we use this format for included files, and add special processing to add included filename to sourcepos tags.

First, before we get into PR, I want to discuss whether this approach looks good.

I'm not very familiar with the sourcepos extension, but what you are trying to do seems to be passing a few more options to the pandoc command when parsing other files. Is that correct?

Yes, in short, if you dont want to dive into supporting sourcepos extension:

  • pass some options to parse included files (including setting variable to included filename)
  • pass some options to "reverse parse" when we looking for "!include"

As for passing options, I believe we can make it more general, like supporting template variables {filename} in pandoc-options. We can also add an option to support setting arbitrary env variables.