diff options
Diffstat (limited to 'paper/lua-filters/multiple-bibliographies')
7 files changed, 0 insertions, 200 deletions
diff --git a/paper/lua-filters/multiple-bibliographies/Makefile b/paper/lua-filters/multiple-bibliographies/Makefile deleted file mode 100644 index a42ce28..0000000 --- a/paper/lua-filters/multiple-bibliographies/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -test: sample.md multiple-bibliographies.lua - @pandoc --lua-filter=multiple-bibliographies.lua \ - --standalone --to=native $< 2>/dev/null \ - | diff -u - expected.native - -.PHONY: test diff --git a/paper/lua-filters/multiple-bibliographies/README.md b/paper/lua-filters/multiple-bibliographies/README.md deleted file mode 100644 index 0111ee6..0000000 --- a/paper/lua-filters/multiple-bibliographies/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# multiple-bibliographies - -This filter allows to create multiple bibliographies using -`pandoc-citeproc`. The content of each bibliography is controlled -via YAML values and the file in which a bibliographic entry is -specified. - -## Usage - -Instead of using the usual *bibliography* metadata field, all -bibliographies must be defined via a separate field of the scheme -*bibliographyX*, e.g. - - --- - bibliography_main: main-bibliography.bib - bibliography_software: software.bib - --- - -The placement of bibliographies is controlled via special divs. - - # References - - ::: {#refs_main} - ::: - - # Software - - ::: {#refs_software} - ::: - -Each refsX div should have a matching bibliographyX entry in the -header. These divs are filled with citations from the respective -bib-file. diff --git a/paper/lua-filters/multiple-bibliographies/expected.native b/paper/lua-filters/multiple-bibliographies/expected.native deleted file mode 100644 index a7ead12..0000000 --- a/paper/lua-filters/multiple-bibliographies/expected.native +++ /dev/null @@ -1,14 +0,0 @@ -Pandoc (Meta {unMeta = fromList [("bibliography_recommended_reading",MetaInlines [Str "secondary.bib"]),("bibliography_sources",MetaInlines [Str "primary.bib"]),("nocite",MetaInlines [Cite [Citation {citationId = "Knu86", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [Str "@Knu86"],Str ",",Space,Cite [Citation {citationId = "Bae", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [Str "@Bae"]]),("title",MetaInlines [Str "Multiple",Space,Str "Bibliographies",Space,Str "Demo"])]}) -[Para [Cite [Citation {citationId = "Nie72", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 1}] [Str "Nietzsche",Space,Str "(1872)"],Str ",",Space,Cite [Citation {citationId = "Bel", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 2}] [Str "Bellori",Space,Str "(1672)"]] -,Header 1 ("references",[],[]) [Str "References"] -,Div ("refs_sources",[],[]) - [Div ("ref-Bel",[],[]) - [Para [Str "Bellori.",Space,Str "1672.",Space,Emph [Str "Le",Space,Str "Vite",Space,Str "de\8217",Space,Str "Pittori,",Space,Str "Scultori",Space,Str "E",Space,Str "Architetti",Space,Str "Moderni"],Str "."]] - ,Div ("ref-Nie72",[],[]) - [Para [Str "Nietzsche,",Space,Str "Friedrich.",Space,Str "1872.",Space,Emph [Str "Die",Space,Str "Geburt",Space,Str "Der",Space,Str "Trag\246die",Space,Str "Aus",Space,Str "Dem",Space,Str "Geiste",Space,Str "Der",Space,Str "Musik"],Str "."]]] -,Header 1 ("recommended-reading",[],[]) [Str "Recommended",Space,Str "Reading"] -,Div ("refs_recommended_reading",[],[]) - [Div ("ref-Bae",[],[]) - [Para [Str "B\228tschmann,",Space,Str "Oskar.",Space,Str "1985.",Space,Emph [Str "Pygmalion",Space,Str "Als",Space,Str "Betrachter"],Str "."]] - ,Div ("ref-Knu86",[],[]) - [Para [Str "Knuth,",Space,Str "Donald",Space,Str "E.",Space,Str "1986.",Space,Emph [Str "The",Space,Str "Texbook"],Str "."]]]] diff --git a/paper/lua-filters/multiple-bibliographies/multiple-bibliographies.lua b/paper/lua-filters/multiple-bibliographies/multiple-bibliographies.lua deleted file mode 100644 index 934e6ea..0000000 --- a/paper/lua-filters/multiple-bibliographies/multiple-bibliographies.lua +++ /dev/null @@ -1,110 +0,0 @@ ---[[ -multiple-bibliographies – create multiple bibliographies - -Copyright © 2018-2019 Albert Krewinkel - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -]] -local List = require 'pandoc.List' -local utils = require 'pandoc.utils' -local stringify = utils.stringify -local run_json_filter = utils.run_json_filter - ---- Collection of all cites in the document -local all_cites = {} ---- Document meta value -local doc_meta = pandoc.Meta{} - ---- Div used by pandoc-citeproc to insert the bibliography. -local refs_div = pandoc.Div({}, pandoc.Attr('refs')) - -local supports_quiet_flag = (function () - local version = pandoc.pipe('pandoc-citeproc', {'--version'}, '') - local major, minor, patch = version:match 'pandoc%-citeproc (%d+)%.(%d+)%.?(%d*)' - major, minor, patch = tonumber(major), tonumber(minor), tonumber(patch) - return major > 0 - or minor > 14 - or (minor == 14 and patch >= 5) -end)() - ---- Resolve citations in the document by combining all bibliographies --- before running pandoc-citeproc on the full document. -local function resolve_doc_citations (doc) - -- combine all bibliographies - local meta = doc.meta - local orig_bib = meta.bibliography - meta.bibliography = pandoc.MetaList{orig_bib} - for name, value in pairs(meta) do - if name:match('^bibliography_') then - table.insert(meta.bibliography, value) - end - end - -- add dummy div to catch the created bibliography - table.insert(doc.blocks, refs_div) - -- resolve all citations - doc = run_json_filter(doc, 'pandoc-citeproc') - -- remove catch-all bibliography - table.remove(doc.blocks) - -- restore bibliography to original value - doc.meta.bibliography = orig_bib - return doc -end - ---- Explicitly create a new meta object with all fields relevant for ---- pandoc-citeproc. -local function meta_for_pandoc_citeproc (bibliography) - -- We could just indiscriminately copy all meta fields, but let's be - -- explicit about what's important. - local fields = { - 'bibliography', 'references', 'csl', 'citation-style', - 'link-citations', 'citation-abbreviations', 'lang', - 'suppress-bibliography', 'reference-section-title', - 'notes-after-punctuation', 'nocite' - } - local new_meta = pandoc.Meta{} - for _, field in ipairs(fields) do - new_meta[field] = doc_meta[field] - end - new_meta.bibliography = bibliography - return new_meta -end - ---- Create a bibliography for a given topic. This acts on all divs whose --- ID starts with "refs", followed by nothing but underscores and --- alphanumeric characters. -local function create_topic_bibliography (div) - local name = div.identifier:match('^refs([_%w]*)$') - local bibfile = name and doc_meta['bibliography' .. name] - if not bibfile then - return nil - end - local tmp_blocks = {pandoc.Para(all_cites), refs_div} - local tmp_meta = meta_for_pandoc_citeproc(bibfile) - local tmp_doc = pandoc.Pandoc(tmp_blocks, tmp_meta) - local filter_args = {FORMAT, supports_quiet_flag and '-q' or nil} - local res = run_json_filter(tmp_doc, 'pandoc-citeproc', filter_args) - -- First block of the result contains the dummy paragraph, second is - -- the refs Div filled by pandoc-citeproc. - div.content = res.blocks[2].content - return div -end - -return { - { - -- Collect all citations and the doc's Meta value for other filters. - Cite = function (c) all_cites[#all_cites + 1] = c end, - Meta = function (m) doc_meta = m end, - }, - { Pandoc = resolve_doc_citations }, - { Div = create_topic_bibliography }, -} diff --git a/paper/lua-filters/multiple-bibliographies/primary.bib b/paper/lua-filters/multiple-bibliographies/primary.bib deleted file mode 100644 index 8c9decc..0000000 --- a/paper/lua-filters/multiple-bibliographies/primary.bib +++ /dev/null @@ -1,10 +0,0 @@ -@book{Bel,
- author = {Bellori},
- title = {Le vite de' pittori, scultori e architetti moderni},
- year = {1672},
-}
-@book{Nie72,
- author = {Nietzsche, Friedrich},
- title = {Die Geburt der Tragödie aus dem Geiste der Musik},
- year = {1872},
-}
diff --git a/paper/lua-filters/multiple-bibliographies/sample.md b/paper/lua-filters/multiple-bibliographies/sample.md deleted file mode 100644 index d4ab2eb..0000000 --- a/paper/lua-filters/multiple-bibliographies/sample.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Multiple Bibliographies Demo -bibliography_sources: primary.bib -bibliography_recommended_reading: secondary.bib -nocite: '@Knu86, @Bae' ---- -@Nie72, @Bel - -# References - -::: {#refs_sources} -::: - -# Recommended Reading - -::: {#refs_recommended_reading} -::: diff --git a/paper/lua-filters/multiple-bibliographies/secondary.bib b/paper/lua-filters/multiple-bibliographies/secondary.bib deleted file mode 100644 index 45e6306..0000000 --- a/paper/lua-filters/multiple-bibliographies/secondary.bib +++ /dev/null @@ -1,10 +0,0 @@ -@book{Bae,
- author = {Bätschmann, Oskar},
- title = {Pygmalion als Betrachter},
- year = {1985}
-}
-@book{Knu86,
- author = {Knuth, Donald E.},
- year = {1986},
- title = {The \TeX book},
-}
|