On 9/25/2019 7:27 AM, Rhodri James wrote:
On 25/09/2019 12:04, Ulrich Goebel wrote:
Hello,

what I want:

I want a function which converts a markdown-formatted string to a latex-formatted string
[snip]
I have a extern tool pandoc which does exactly what I want, but it
works on files. This tool is able to work as a pipe, so it uses
the standard input and standard outpu.

I was not familiar with pandoc, but it seems to be a major m to n (where n > m) markup translator. https://pandoc.org/index.html

https://github.com/jgm/pandoc (search 'pandoc github') says "Pandoc is a Haskell library for converting from one markup format to another, and a command-line tool that uses this library. "

If you were writing in Haskell or if pandoc were written in Python or if pandoc were wrapped as a Python library, you could use it as an importable library. The third is true, as it is for so many useful libraries written in other languages.

https://pypi.org/project/pypandoc/ (https://github.com/bebraw/pypandod) (search 'python pandoc') says it can use an existing pandoc installation or pandoc included with its Windows and Mac wheels (for pip install).

https://github.com/applecrazy/pyandoc is another wrapping.

One can write custom filters in Python (and other languages).
https://pandoc.org/scripting-1.12.html
https://github.com/jgm/pandocfilters
https://pypi.org/project/pandocfilters/

What I could do:

def markdown_to_latex (m : string)
     write the string m to a file
     call pandoc to work on that file
     read the outputfile into the string l
     return (l)

What would be nice:

I would like to avoid the extra steps writing an reading extern files.

subprocess is your friend here.  Something like:

Short of using pypandoc or pyandoc, this is probably the best thing.

import subprocess
def mardown_to_latex(markdown_string):
   latex = subprocess.run(cmd_string_for_pandoc,
                          input=markdown_string,
                          string=True,
                          capture_output=True)
   return latex.output

The above is completely untested and not in the least bit robust, but that's the area of the standard library you should be looking at.



--
Terry Jan Reedy


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to