diff options
author | Benjamin Chausse <benjamin@chausse.xyz> | 2019-09-19 21:52:25 -0400 |
---|---|---|
committer | Benjamin Chausse <benjamin@chausse.xyz> | 2019-09-19 21:52:25 -0400 |
commit | 9baaeac2f1eb7e5553e17a83e980985644a198be (patch) | |
tree | 606632102685a9e8a26339aa50d524730b9453ef | |
parent | 152d46f2ccbd5e6aea910d7242dd511b313f8236 (diff) |
Testing groffdown support by gh syntax
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | README.gd | 62 | ||||
-rw-r--r-- | README.md | 62 | ||||
-rw-r--r-- | README.pdf | bin | 0 -> 24003 bytes | |||
-rwxr-xr-x | groffdown | 94 | ||||
-rw-r--r-- | sample.md | 24 |
6 files changed, 171 insertions, 74 deletions
@@ -1,2 +1 @@ -# Test files -sample.* +*.pdf diff --git a/README.gd b/README.gd new file mode 100644 index 0000000..1cf90e9 --- /dev/null +++ b/README.gd @@ -0,0 +1,62 @@ +--- +title: Groffdown +author: Benjamin Chausse +date: 2019-09-19 +Markdown syntax with GNU/Troff-like compilation speeds. +--- + + +# What is Groffdown? +Groffdown aims to take the already existing (and well-known) +markdown syntax and make it compile at speed similar to the +ones of groff. The main compiler for markdown to pdf usually +being `pandoc`, it can be quite long to compile a document (up +to four seconds for one page documents +in some cases) unlike Groff which is known +to usually compile very quickly (0.1 second on average for +one page documents). + +Groffdown is a script which when run on a markdown document, +will convert the most typical markdown syntax into groff +(using the `ms` macros) to then send it to standard output. +Therefore, it can be piped directly into groff (or +it's related software). + +# Example piping workflow +groffdown <filename>.gd | refer -PS -e "-p$REFERBIB" | groff -me -ms -kejpt -T pdf > <filename>.pdf + +# Syntax goals +- Speed +- Markdown Syntax (with yaml preamble) +- LaTeX where markdown lacks + + +## Existing Syntax + +### Commands similar to markdown +- Headers (1-5) +- Italic +- Bold +- Bold & Italic +- Bullet points + +### Commands similar to LaTeX +- Abstract +- Inline equations +- Centered equations +- Citations + +### Commands similar to YAML +- Titles +- Authors +- Dates +- Author's Institution + +# Current issues +- All text formatings need to be on the same line (you can't start bold + on one line and finish on the other) Doing otherwise seems to trigger + an unescapable recursive loop on the groff side of things. + +# Needed implementations +- Numbered lists +- multi-macro compatibility (mom macros for urls) diff --git a/README.md b/README.md new file mode 100644 index 0000000..1cf90e9 --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +--- +title: Groffdown +author: Benjamin Chausse +date: 2019-09-19 +Markdown syntax with GNU/Troff-like compilation speeds. +--- + + +# What is Groffdown? +Groffdown aims to take the already existing (and well-known) +markdown syntax and make it compile at speed similar to the +ones of groff. The main compiler for markdown to pdf usually +being `pandoc`, it can be quite long to compile a document (up +to four seconds for one page documents +in some cases) unlike Groff which is known +to usually compile very quickly (0.1 second on average for +one page documents). + +Groffdown is a script which when run on a markdown document, +will convert the most typical markdown syntax into groff +(using the `ms` macros) to then send it to standard output. +Therefore, it can be piped directly into groff (or +it's related software). + +# Example piping workflow +groffdown <filename>.gd | refer -PS -e "-p$REFERBIB" | groff -me -ms -kejpt -T pdf > <filename>.pdf + +# Syntax goals +- Speed +- Markdown Syntax (with yaml preamble) +- LaTeX where markdown lacks + + +## Existing Syntax + +### Commands similar to markdown +- Headers (1-5) +- Italic +- Bold +- Bold & Italic +- Bullet points + +### Commands similar to LaTeX +- Abstract +- Inline equations +- Centered equations +- Citations + +### Commands similar to YAML +- Titles +- Authors +- Dates +- Author's Institution + +# Current issues +- All text formatings need to be on the same line (you can't start bold + on one line and finish on the other) Doing otherwise seems to trigger + an unescapable recursive loop on the groff side of things. + +# Needed implementations +- Numbered lists +- multi-macro compatibility (mom macros for urls) diff --git a/README.pdf b/README.pdf Binary files differnew file mode 100644 index 0000000..29c9771 --- /dev/null +++ b/README.pdf @@ -1,56 +1,54 @@ -#!/bin/sh +#!/bin/bash file=$(readlink -f "$1") dir=$(dirname "$file") base="${file%.*}" - -output=$( sed -e '1s/---// - s/title:/\.TL\n/ - s/author:/\.AU\n/ - s/date:/\.ND\n/ - s/institution:/\.AI\n/ - - s/\\begin{abstract}/\.AB/ - s/\\end{abstract}/\.AE/ - - s/\\begin{equation}/\.EQ/ - s/\\end{equation}/\.EN/ - - s/\\\$/$delim\ @@$\ $@delim\ $$@/g - - s/^\#####.\(.*\)/\.NH 5\n\1\n\.PP/g - s/^\####.\(.*\)/\.NH 4\n\1\n\.PP/g - s/^\###.\(.*\)/\.NH 3\n\1\n\.PP/g - s/^\##.\(.*\)/\.NH 2\n\1\n\.PP/g - s/^\#.\(.*\)/\.NH 1\n\1\n\.PP/g - - s/\*\*\*\(.*\)\*\*\*$/\n\.BI\ \"\1\"\ /g - s/\*\*\*\(.*\)\*\*\*\(.\)$/\n\.BI\ \"\1\"\ \"\2\"/g - s/\*\*\*\(.*\)\*\*\*\(.\)/\n\.BI\ \"\1\"\ \"\2\"\n/g - - s/\*\*\(.*\)\*\*$/\n\.B\ \"\1\"\ /g - s/\*\*\(.*\)\*\*\(.\)$/\n\.B\ \"\1\"\ \"\2\"/g - s/\*\*\(.*\)\*\*\(.\)/\n\.B\ \"\1\"\ \"\2\"\n/g - - s/\*\(.*\)\*$/\n\.I\ \"\1\"\ /g - s/\*\(.*\)\*\(.\)$/\n\.I\ \"\1\"\ \"\2\"/g - s/\*\(.*\)\*\(.\)/\n\.I\ \"\1\"\ \"\2\"\n/g - - s/`\(.*\)`$/\n\.CW\ \"\1\"\ /g - s/`\(.*\)`\(.\)$/\n\.CW\ \"\1\"\ \"\2\"/g - s/`\(.*\)`\(.\)/\n\.CW\ \"\1\"\ \"\2\"\n/g - - s/\\cite{\(.*\)}/\n\.\[\n\1\n\.\]/g - - s/^-\ /.IP\ \\(bu\ 2\n/g - - ' $1) +output=$( sed -e '1,1d + s/title:/\.TL\n/ + s/author:/\.AU\n/ + s/date:/\.ND\n/ + s/institution:/\.AI\n/ + + s/\\begin{abstract}/\.AB/ + s/\\end{abstract}/\.AE/ + + s/^\#####.\(.*\)/\.NH 5\n\1\n\.PP/g + s/^\####.\(.*\)/\.NH 4\n\1\n\.PP/g + s/^\###.\(.*\)/\.NH 3\n\1\n\.PP/g + s/^\##.\(.*\)/\.NH 2\n\1\n\.PP/g + s/^\#.\(.*\)/\.NH 1\n\1\n\.PP/g + + s/\*\*\*\(.*\)\*\*\*$/\n\.BI\ \"\1\"\ /g + s/\*\*\*\(.*\)\*\*\*\(.\)$/\n\.BI\ \"\1\"\ \"\2\"/g + s/\*\*\*\(.*\)\*\*\*\(.\)/\n\.BI\ \"\1\"\ \"\2\"\n/g + + s/\*\*\(.*\)\*\*$/\n\.B\ \"\1\"\ /g + s/\*\*\(.*\)\*\*\(.\)$/\n\.B\ \"\1\"\ \"\2\"/g + s/\*\*\(.*\)\*\*\(.\)/\n\.B\ \"\1\"\ \"\2\"\n/g + + s/\*\(.*\)\*$/\n\.I\ \"\1\"\ /g + s/\*\(.*\)\*\(.\)$/\n\.I\ \"\1\"\ \"\2\"/g + s/\*\(.*\)\*\(.\)/\n\.I\ \"\1\"\ \"\2\"\n/g + + s/`\(.*\)`$/\n\.CW\ \"\1\"\ /g + s/`\(.*\)`\(.\)$/\n\.CW\ \"\1\"\ \"\2\"/g + s/`\(.*\)`\(.\)/\n\.CW\ \"\1\"\ \"\2\"\n/g + + s/^\ ...............-\ /.IP\ \\(bu\ 10\n/g + s/^\ ...........-\ /.IP\ \\(bu\ 8\n/g + s/^\ .......-\ /.IP\ \\(bu\ 6\n/g + s/^\ ...-\ /.IP\ \\(bu\ 4\n/g + s/^-\ /.IP\ \\(bu\ 2\n/g + s/^\ .*-\ /.IP\ \\(bu\ 12\n/g + + ' $1) # echo "$output" | groff -me -ms -kejpt -T pdf > $base.pdf -# This script will compile the md document into a groff .ms file. -# Good for reviewing compiled .ms text for debugging the ms output -# as you code. -# echo "$output" > "$base".ms -echo "$output" +# echo "$output" > $base.ms # groff -ms $base.ms -T pdf > $base.pdf + +echo "$output" + +# $output >> output.ms +# s/\*\*\*.*\*\*\*/Hi\1hi/g diff --git a/sample.md b/sample.md deleted file mode 100644 index 437b6d6..0000000 --- a/sample.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: The Flight of the Bumblebee -author: Benjamin Chausse -date: 21 Septembre 2042 ---- - -# Heading 1 -This is a test paragraph which is meant to be relatively long -for what it is meant to express. I expect it -to contain (at least) some *italic* text, but -perhaps some text that is **bold**! -Perhaps even, if I'm lucky, I may, **very well** -want to integrate some ***Bold and italic*** text! -*Even* at the **beggining of line**... -This is an amazing alternative!!! - -## Assistant to the Regional Heading -Yes this was a *The Office* joke... - -### I will now - -#### Got up to.... - -##### FIVE! YAAAY! |