diff options
-rw-r--r-- | rst_context.lua | 28 | ||||
-rw-r--r-- | rst_parser.lua | 13 |
2 files changed, 27 insertions, 14 deletions
diff --git a/rst_context.lua b/rst_context.lua index 5c36c54..575d756 100644 --- a/rst_context.lua +++ b/rst_context.lua @@ -74,6 +74,14 @@ function rst_context.footnote_reference (label) print("creating symbolnote nr " .. rc) rst_context.current_symbolnote_number = rc return [[\\symbolnote{\\getbuffer[__footnote_symbol_]].. rc .."]}" + else -- “citation reference” for now treating them like footnotes + local rc = rst_context.current_footnote_number + rc = rc + 1 + --rst_context.current_footnote_number = rst_context.current_footnote_number + 1 + print("creating footnote nr " .. rc) + rst_context.current_footnote_number = rc + return [[\\footnote{\\getbuffer[__footnote_number_]].. rc .."]}" + --return [[\\cite{]] .. label .. "}" end end @@ -316,7 +324,10 @@ local inline_parser = P{ _reference = (1 - V"underscore" - V"spacing" - V"eol" - V"punctuation" - V"groupchars")^1 * V"underscore", - footnote_reference = V"lsquare" * Cs(V"footnote_label") * V"rsquare" * V"underscore" + footnote_reference = V"lsquare" + * Cs(V"footnote_label" + V"citation_reference_label") + * V"rsquare" + * V"underscore" / rst_context.footnote_reference , @@ -326,6 +337,8 @@ local inline_parser = P{ + V"asterisk" , + citation_reference_label = V"letter" * (1 - V"rsquare")^1, + -------------------------------------------------------------------------------- -- Urls -------------------------------------------------------------------------------- @@ -866,18 +879,23 @@ function rst_context.footnote(label, content) local tf = state.footnotes rst_context.addsetups("footnotes") if label:match("^%d+$") then -- all digits - tf.numbered[tonumber(label)] = content + tf.numbered[tonumber(label)] = rst_context.escape(inline_parser:match(content)) elseif label == "#" then --autonumber repeat -- until next unrequested number tf.autonumber = tf.autonumber + 1 until tf.numbered[tf.autonumber] == nil - tf.numbered[tf.autonumber] = content + tf.numbered[tf.autonumber] = rst_context.escape(inline_parser:match(content)) elseif label:match("^#.+$") then local thelabel = label:match("^#(.+)$") - tf.autolabel[thelabel] = content + tf.autolabel[thelabel] = rst_context.escape(inline_parser:match(content)) elseif label == "*" then rst_context.addsetups("footnote_symbol") - tf.symbol[#tf.symbol+1] = content + tf.symbol[#tf.symbol+1] = rst_context.escape(inline_parser:match(content)) + else -- “citation reference” treated like ordinary footnote + repeat -- until next unrequested number + tf.autonumber = tf.autonumber + 1 + until tf.numbered[tf.autonumber] == nil + tf.numbered[tf.autonumber] = rst_context.escape(inline_parser:match(content)) end return "" end diff --git a/rst_parser.lua b/rst_parser.lua index d4ad90b..3d0bdd5 100644 --- a/rst_parser.lua +++ b/rst_parser.lua @@ -245,25 +245,23 @@ local parser = P{ footnote_block = V"footnote"^1 * V"end_block", footnote = V"explicit_markup_start" - * V"footnote_marker" + * (V"footnote_marker" + V"citation_reference_label") * C(V"footnote_content") * (V"blank_line" - V"end_block")^-1 - --* C(V"block") / rst.footnote , footnote_marker = V"lsquare" * C(V"footnote_label") * V"rsquare" * V"whitespace"^0 , + citation_reference_label = V"lsquare" * C(V"letter" * (1 - V"rsquare")^1) * V"rsquare" * V"whitespace"^0, + footnote_label = V"digit"^1 + (V"gartenzaun" * V"letter"^1) + V"gartenzaun" + V"asterisk" , - --footnote_content = V"footnote_simple" -- single line - --+ V"footnote_long" - footnote_content = V"footnote_long" -- single line + V"footnote_simple" , @@ -275,10 +273,6 @@ local parser = P{ * V"footnote_body" , - --footnote_body = V"fn_body_first" - --* (V"fn_body_other" * (V"blank_line" * V"fn_body_other")^0)^0 - --, - footnote_body = V"fn_body_first" * (V"fn_body_other" + V"fn_body_other_block")^0 , @@ -1288,6 +1282,7 @@ local function get_setups () %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setupcolors[state=start] \setupinteraction[state=start,color=darkgreen,contrastcolor=darkgreen] +\setupbodyfontenvironment [default] [em=italic] ]] for item, _ in next, state.addme do |