diff options
Diffstat (limited to 'paper/lua-filters/abstract-to-meta')
-rw-r--r-- | paper/lua-filters/abstract-to-meta/Makefile | 8 | ||||
-rw-r--r-- | paper/lua-filters/abstract-to-meta/README.md | 37 | ||||
-rw-r--r-- | paper/lua-filters/abstract-to-meta/abstract-to-meta.lua | 23 | ||||
-rw-r--r-- | paper/lua-filters/abstract-to-meta/expected.md | 19 | ||||
-rw-r--r-- | paper/lua-filters/abstract-to-meta/sample.md | 17 |
5 files changed, 104 insertions, 0 deletions
diff --git a/paper/lua-filters/abstract-to-meta/Makefile b/paper/lua-filters/abstract-to-meta/Makefile new file mode 100644 index 0000000..1ea3124 --- /dev/null +++ b/paper/lua-filters/abstract-to-meta/Makefile @@ -0,0 +1,8 @@ +test: sample.md abstract-to-meta.lua + @pandoc --lua-filter=abstract-to-meta.lua --standalone --to=markdown $< \ + | diff -u expected.md - + +expected.md: sample.md abstract-to-meta.lua + pandoc --lua-filter=abstract-to-meta.lua --standalone --output $@ $< + +.PHONY: test diff --git a/paper/lua-filters/abstract-to-meta/README.md b/paper/lua-filters/abstract-to-meta/README.md new file mode 100644 index 0000000..42c0d29 --- /dev/null +++ b/paper/lua-filters/abstract-to-meta/README.md @@ -0,0 +1,37 @@ +# abstract-to-meta + +This moves a document's abstract from the main text into the +metadata. Metadata elements usually allow for finer placement +control in the final output, but writing body text is easier and +more natural. + +## Defining an Abstract + +A document abstract can either be put directly in the document +metadata, for example by inserting an *abstract* attribute into a +YAML block. + + --- + abstract: | + Place abstract here. + + Multiple paragraphs are possible. + --- + +The additional indentation and formatting requirements in YAML +headers can be confusing or annoying for authors. It is hence +preferable to allow abstracts be written as normal sections. + + # Abstract + + Place abstract here. + + Multiple paragraphs are possible. + +This filter turns the latter into the former by looking for a +top-level header whose ID is `abstract`. Pandoc auto-creates IDs +based on header contents, so a header titled *Abstract* will +satisfy this condition.^[1] + +[1]: This requires the `auto_identifier` extension. It is + enabled by default. diff --git a/paper/lua-filters/abstract-to-meta/abstract-to-meta.lua b/paper/lua-filters/abstract-to-meta/abstract-to-meta.lua new file mode 100644 index 0000000..dbf9b03 --- /dev/null +++ b/paper/lua-filters/abstract-to-meta/abstract-to-meta.lua @@ -0,0 +1,23 @@ +local looking_at_abstract = false +local abstract = {} + +function Block (elem) + if looking_at_abstract then + abstract[#abstract + 1] = elem + return {} + end +end + +function Header (elem) + if elem.level == 1 and elem.identifier == 'abstract' then + looking_at_abstract = true + return {} + else + looking_at_abstract = looking_at_abstract and elem.level ~= 1 + end +end + +function Meta (meta) + meta.abstract = meta.abstract or pandoc.MetaBlocks(abstract) + return meta +end diff --git a/paper/lua-filters/abstract-to-meta/expected.md b/paper/lua-filters/abstract-to-meta/expected.md new file mode 100644 index 0000000..638e268 --- /dev/null +++ b/paper/lua-filters/abstract-to-meta/expected.md @@ -0,0 +1,19 @@ +--- +abstract: | + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. + + Excepteur sint occaecat cupidatat non proident, sunt in culpa qui + officia deserunt mollit anim id est laborum. +--- + +Lorem Ipsum +=========== + +Quo dolore molestiae et laboriosam occaecati explicabo corrupti. Earum +expedita ducimus quaerat est quam ut molestiae. Illum deleniti vel +labore facilis et cum est. Est nemo est vel ad. Assumenda consequatur +rerum officiis atque officia. Est nihil iste cumque ad qui. diff --git a/paper/lua-filters/abstract-to-meta/sample.md b/paper/lua-filters/abstract-to-meta/sample.md new file mode 100644 index 0000000..27aabcd --- /dev/null +++ b/paper/lua-filters/abstract-to-meta/sample.md @@ -0,0 +1,17 @@ +# Abstract + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor +incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis +nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu +fugiat nulla pariatur. + +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia +deserunt mollit anim id est laborum. + +# Lorem Ipsum + +Quo dolore molestiae et laboriosam occaecati explicabo corrupti. Earum expedita +ducimus quaerat est quam ut molestiae. Illum deleniti vel labore facilis et cum +est. Est nemo est vel ad. Assumenda consequatur rerum officiis atque officia. +Est nihil iste cumque ad qui. |