From 0eeb0cc0aa56a8ec35eda05ace96234cda7fa6a9 Mon Sep 17 00:00:00 2001 From: RunasSudo Date: Mon, 9 Sep 2019 22:46:32 +1000 Subject: [PATCH] Add documentation and example output --- .gitignore | 2 -- README.md | 25 +++++++++++++++++++++++++ example.md | 7 +++++++ example.pdf | Bin 0 -> 12718 bytes example.rtf | 1 + 5 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 README.md create mode 100644 example.pdf create mode 100644 example.rtf diff --git a/.gitignore b/.gitignore index 1d0b49c..3ec6e7f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,4 @@ __pycache__ *.log -*.pdf -*.rtf *.tex diff --git a/README.md b/README.md new file mode 100644 index 0000000..21cef92 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# legalmd + +An extension of Markdown to notate Australian-style legal markup, using the Python [mistletoe](https://github.com/miyuchina/mistletoe) Markdown parser. + +legalmd can process Markdown files into LaTeX source code, and RTF. The output style is based on, but separate from, the [latex-legal](https://gitlab.com/RunasSudo/latex-legal) style. + +## Examples + +See example.md for example markup. + +To generate LaTeX output, run: + +``` +python -m legalmd example.md > example.tex +``` + +The LaTeX output file can then be compiled as usual into a PDF document. Note that the generated code utilises *fontspec* for font support, so LuaLaTeX or XeLaTeX will be required. + +To generate RTF output, run: + +``` +python -m legalmd --format rtf example.md > example.rtf +``` + +The RTF output file can then be directly viewed in a compatible RTF editor. diff --git a/example.md b/example.md index c05c94a..759f7a7 100644 --- a/example.md +++ b/example.md @@ -25,3 +25,10 @@ This is the *blah blah*. Continued (2) DEF + +### 3 Table example + +| 1 First column | 2 Second column | +|----------------|-----------------| +| 1 First row | Foo bar | +| 2 Second row | Baz qux | diff --git a/example.pdf b/example.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c23c983e92f01da417a44eaf58029b1bee0ee768 GIT binary patch literal 12718 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