public inbox archive for pandoc-discuss@googlegroups.com
 help / color / mirror / Atom feed
From: Bastien DUMONT <bastien.dumont-VwIFZPTo/vqsTnJN9+BGXg@public.gmane.org>
To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: Help with Lua filter for markdown to LaTeX with Pandoc
Date: Sun, 26 Mar 2023 09:53:27 +0000	[thread overview]
Message-ID: <ZCAWF2ex/yTJBEuH@localhost> (raw)
In-Reply-To: <aded6fcf-0720-4fea-a873-af2cacfb8281n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 3755 bytes --]

I attached two filters. If you run:

pandoc -t latex -L highlight-red.lua -L in-red.lua <<< 'Some *==text in red==*!'

You get:

Some \colorbox{lightred}{{text in red}}!

Le Sunday 26 March 2023 à 02:42:54AM, Pa Sc a écrit :
> Do you mean the two filters that are in the original post? Or what filter do
> you mean?
> 
> Bastien DUMONT schrieb am Sonntag, 26. März 2023 um 00:08:53 UTC+1:
> 
>     Please share the two lua filters you use to parse `==` as a syntax for
>     highlighting and to print in red an emphasized span produced by this
>     filter. We can't figure out what is wrong without them.
> 
>     Le Saturday 25 March 2023 à 03:44:24PM, Pa Sc a écrit :
>     > Yeah, I have a MWE here: [1]https://tex.stackexchange.com/questions/
>     680766/
>     > help-with-lua-filter-for-markdown-to-latex-with-pandoc
>     >
>     > As for the command:
>     > ```
>     > mkdir -p /home/ME/Documents/Obsidian/Output/{{title}}
>     > pandoc -r markdown-auto_identifiers -w latex {{file_path:absolute}} -o /
>     home/ME
>     > /Documents/Obsidian/Output/{{title}}/{{title}}.tex --template="/home/ME/
>     > Documents/LaTeX/My Templates/Proposal/default-proposal.tex" --lua-filter=
>     /home/
>     > ME/Documents/LaTeX/Filters/highlight.lua --lua-filter=/home/ME/Documents/
>     LaTeX/
>     > Filters/highlight-period.lua --lua-filter=/home/ME/Documents/LaTeX/
>     Filters/
>     > Span.lua --lua-filter=/home/ME/Documents/LaTeX/Filters/highlight-red.lua
>     > --lua-filter=/home/ME/Documents/LaTeX/Filters/Span-red.lua
>     > ```
>     >
>     > --
>     > You received this message because you are subscribed to the Google Groups
>     > "pandoc-discuss" group.
>     > To unsubscribe from this group and stop receiving emails from it, send an
>     email
>     > to [1]pandoc-discus...-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
>     > To view this discussion on the web visit [2][2]https://groups.google.com/
>     d/msgid/
>     > pandoc-discuss/6a7dabf5-1fda-4825-9d21-193b63363937n%[3]
>     40googlegroups.com.
>     >
>     > References:
>     >
>     > [1] mailto:pandoc-discus...-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
>     > [2] [4]https://groups.google.com/d/msgid/pandoc-discuss/
>     6a7dabf5-1fda-4825-9d21-193b63363937n%40googlegroups.com?utm_medium=email&
>     utm_source=footer
> 
> 
> --
> You received this message because you are subscribed to the Google Groups
> "pandoc-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email
> to [5]pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> To view this discussion on the web visit [6]https://groups.google.com/d/msgid/
> pandoc-discuss/aded6fcf-0720-4fea-a873-af2cacfb8281n%40googlegroups.com.
> 
> References:
> 
> [1] https://tex.stackexchange.com/questions/680766/
> [2] https://groups.google.com/d/msgid/
> [3] http://40googlegroups.com/
> [4] https://groups.google.com/d/msgid/pandoc-discuss/6a7dabf5-1fda-4825-9d21-193b63363937n%40googlegroups.com?utm_medium=email&utm_source=footer
> [5] mailto:pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
> [6] https://groups.google.com/d/msgid/pandoc-discuss/aded6fcf-0720-4fea-a873-af2cacfb8281n%40googlegroups.com?utm_medium=email&utm_source=footer

-- 
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/ZCAWF2ex/yTJBEuH%40localhost.

[-- Attachment #2: highlight-red.lua --]
[-- Type: text/plain, Size: 2679 bytes --]

--[[
Add support for a custom inline syntax.

This pandoc Lua filter allows to add a custom markup syntax
extension. It is designed to be adjustable; it should not be
necessary to modify the code below the separator line.

The example here allows to add highlighted text by enclosing the
text with `==` on each side. Pandoc supports this for HTML output
out of the box. Other outputs will need additional filters.

Copyright: © 2022 Albert Krewinkel
License: MIT
]]

-- Lua pattern matching the opening markup string.
local opening = [[==]]

-- Lua pattern matching the closing markup string.
local closing = [[==]]

-- Toggle whether the opening markup may be followed by whitespace.
local nospace = true

-- Function converting the enclosed inlines to their internal pandoc
-- representation.
local function markup_inlines (inlines)
  return pandoc.Span(inlines, {class="mark-red"})
end

------------------------------------------------------------------------

local function is_space (inline)
  return inline and
    (inline.t == 'Space' or
     inline.t == 'LineBreak' or
     inline.t == 'SoftBreak')
end

function Inlines (inlines)
  local result = pandoc.Inlines{}
  local markup = nil
  local start = nil
  for i, inline in ipairs(inlines) do
    if inline.tag == 'Str' then
      if not markup then
        local first = inline.text:match('^' .. opening .. '(.*)')
        if first then
          start = inline -- keep element around in case the
                         -- markup is not closed. Check if the
                         -- closing pattern is already in this
                         -- string.
          local selfclosing = first:match('(.*)' .. closing .. '$')
          if selfclosing then
            result:insert(markup_inlines{pandoc.Str(selfclosing)})
          elseif nospace and first == '' and is_space(inlines[i+1]) then
            -- the opening pattern is followed by a space, but the
            -- config disallows this.
            result:insert(inline)
          else
            markup = pandoc.Inlines{pandoc.Str(first)}
          end
        else
          result:insert(inline)
        end
      else
        local last = inline.text:match('(.*)' .. closing .. '$')
        if last then
          markup:insert(pandoc.Str(last))
          result:insert(markup_inlines(markup))
          markup = nil
        else
          markup:insert(inline)
        end
      end
    else
      local acc = markup or result
      acc:insert(inline)
    end
  end

  -- keep unterminated markup
  if markup then
    markup:remove(1) -- the stripped-down first element
    result:insert(start)
    result:extend(markup)
  end
  return result
end

[-- Attachment #3: in-red.lua --]
[-- Type: text/plain, Size: 296 bytes --]

function Emph (emph)
  local content = emph.content
  if #content == 1
    and content[1].t == 'Span'
    and content[1].classes:includes 'mark-red' then
    return {
      pandoc.RawInline('latex', '\\colorbox{lightred}{'),
      content[1],
      pandoc.RawInline('latex', '}')
    }
  end
end

  parent reply	other threads:[~2023-03-26  9:53 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-25 12:42 Pa Sc
     [not found] ` <79ac7814-9558-4d49-a682-cf31f970d27dn-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-03-25 14:38   ` Bastien DUMONT
2023-03-25 22:01     ` Pa Sc
     [not found]       ` <bb3c6fab-dee9-48c4-81e4-7db67bc6931an-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-03-25 22:40         ` Bastien DUMONT
2023-03-25 22:44           ` Pa Sc
     [not found]             ` <6a7dabf5-1fda-4825-9d21-193b63363937n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-03-25 23:08               ` Bastien DUMONT
2023-03-26  9:42                 ` Pa Sc
     [not found]                   ` <aded6fcf-0720-4fea-a873-af2cacfb8281n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-03-26  9:53                     ` Bastien DUMONT [this message]
2023-03-26 10:33                       ` Pa Sc
     [not found]                         ` <39893365-8248-4286-ae04-560895d69212n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2023-03-26 18:51                           ` Bastien DUMONT

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZCAWF2ex/yTJBEuH@localhost \
    --to=bastien.dumont-vwifzpto/vqstnjn9+bgxg@public.gmane.org \
    --cc=pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).