My FOSS text editor, KeenWrite[1], takes a similar approach: Markdown -> XHTML -> TeX -> PDF. The software architecture shows how you can have processor chains:
https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/docs/ima...
I developed KeenWrite to help write a sci-fi novel where I can use variables for character names, places, etc. See the tutorials[2] for details.
For anyone still using pandoc and shell scripts, my Typesetting Markdown[3] series describes building a script-based infrastructure for converting Markdown into PDF.
[2]: https://www.youtube.com/watch?v=CFCqe3A5dFg&t=15s
[3]: https://dave.autonoma.ca/blog/2019/05/22/typesetting-markdow...
I was really excited when I read your post. I've long looked for a good MarkDown -> PDF or RTF workflow, so I gave KeenWrite a quick try. At first glance I really thought I'd be exactly the user for this tool, but quickly realized that the discoverability of KeenWrite isn't nearly good enough.
Upon launch, I'm presented with three panes. I've got a MarkDown authoring interface and an output preview. Great. I drop in some markdown and it renders.
Then I have a "variables.yaml" pane open with three little controls, "Create", "Rename", and "Delete". Ok... I'm editing a YAML file. But it's a clunky nested node editor. People can edit a MarkDown file but you don't think it's faster to simply let people edit YAML in text?
So, I get it, I'm editing a YAML file that stores metadata about... SOMETHING about my document output. Except I don't have a single example of a variable. Not a single one. I have no idea what variables are available and exploring every single menu option tells me nothing. Help only provides a small about page with no link to the documentation.
So, I go to keenwrite.com and click documentation. It takes me to a single GitLab readme that talks about different command line launch options, and then finally how to begin to use metadata, but the options all revolve around creating an .Rmd file and using R or creating a "definitions.yaml" instead of a "variables.yaml" in a seperate editor.
This is the moment I realize there's no chance this tool is going to be useful for me.
Thanks for giving it a try!
> I have no idea what variables are available
Were the video tutorials[0], in particular the variables tutorial[1] not helpful?
> Except I don't have a single example of a variable.
Did you watch the metadata tutorial[2]?
> People can edit a MarkDown file but you don't think it's faster to simply let people edit YAML in text?
Close the variable editor panel if you like and edit the variables in a different text editor. (Or create a symbolic link between the .yaml and .yaml.txt file and edit the .yaml.txt file in a KeenWrite tab.) The downside is that KeenWrite won't know how to inject variables into the document when pressing the Control-Space hotkey.
The variables, architecturally speaking, need not be written in YAML. They could be TOML, XML, JSON, etc. The software reads a nested hierarchy of variables and values into a tree data structure, which abstracts away the data's file format. Presently only YAML format is integrated. The hierarchy is then presented through a clunky JavaFX Tree UI element.
> discoverability of KeenWrite isn't nearly good enough
I received that same feedback years ago and made video tutorials, which are linked to at the bottom of the home page[3]. Do they need to be more prominent?
The home page also links to a documentation page[4] that describes variables, metadata, R integration, and more.
[0]: https://www.youtube.com/playlist?list=PLB-WIt1cZYLm1MMx2FBG9...
[1]: https://youtu.be/CFCqe3A5dFg?&t=11
[2]: https://youtu.be/cjQ-dle-tAE?t=11
[4]: https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/docs/REA...
For me, the issue is not document conversion and is content de-duplication. Product A and Product B manual will share number of sections. Any spelling or grammar error must be updated in Product A and B manuals. They man share the same additions.
So far LaTex has been the only solution to allow binding shared sections into multiple document builds. These are for internal and customer facing information. Only binding duplication is in the revision overview sections pertaining to each document build.
> So far LaTex has been the only solution to allow binding shared sections
R, being a Turing-complete language, can do this. If R Markdown can do it then KeenWrite and pandoc+knitr support it. R can also do conditional includes. For Product A and B to share authentication steps, this could look like:
Where TeX may resemble:`r#inc( '../common/authentication.Rmd' );`
SGML, DocBook, AsciiDoc, RST, and other text formats have similar abilities.\input ../common/authentication.tex