I followed that, thanks! But I'm still getting `\emph{\hl{abc}` as the output, any other ideas?

Bastien DUMONT schrieb am Samstag, 25. März 2023 um 15:38:47 UTC+1:
First, you need to replace `\\hl{` with `\\colorbox{declared-color}{` (mind the double backslash). Then Span.lua can be replaced with the following filter acting on emphasized (italicized) pieces of text:

in-red.lua:
```
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
```

Here, I replaced "mark" with "mark-red" as you suggested because I don't remove the Span element, in case it contains other classes or attributes that should be processed by other filters or by Pandoc itself. If the Span was kept with the "mark" class, Pandoc would wrap it in the \hl macro afterwards.

Le Saturday 25 March 2023 à 05:42:45AM, Pa Sc a écrit :
> In markdown (written in Obsidian.md) I use a plugin/theme so that `*==text==*`
> is rendered as red instead of italic and highlighted.
>
> I use this lua-filter to convert regular `==highlighting==` to LaTeX `\hl
> {highlighting}` which works perfectly: (I somehow require these two files, I
> can't remember why)
>
> **highlight.lua**:
> ```
>     --[[
>     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"})
>     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
>    
>     local function markup_inlines (inlines)   return {pandoc.RawInline('tex', '
> \\hl{')} .. inlines .. {pandoc.RawInline('tex', '}')} end
> ```
>
> **Span.lua**:
> ```
>     function Span (span)
>       if span.classes:includes 'mark' then
>         return {pandoc.RawInline('latex', '\\hl{')} ..
>           span.content ..
>           {pandoc.RawInline('latex', '}')}
>       end
>     end
> ```
> This works great, I got this here: [https://gist.github.com/tarleb/
> a0646da1834318d4f71a780edaf9f870](https://gist.github.com/tarleb/
> a0646da1834318d4f71a780edaf9f870)
>
> However, for my other usecase I'd like it to be able to render `*==this kind of
> highlighting==*` as `\colorbox{lightred}{this new kind of highlighting}`
>
> I've tried replacing the `\\hl{` with `\colorbox{declared-color}{` but that
> didn't work.
>
> I was wondering if it had something to do with the class? But renaming that
> class from `mark` to `mark-red` didn't work either.
>
> Any advice or ideas? Thanks!
>
> --
> 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...@googlegroups.com.
> To view this discussion on the web visit [2]https://groups.google.com/d/msgid/
> pandoc-discuss/79ac7814-9558-4d49-a682-cf31f970d27dn%40googlegroups.com.
>
> References:
>
> [1] mailto:pandoc-discus...-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
> [2] https://groups.google.com/d/msgid/pandoc-discuss/79ac7814-9558-4d49-a682-cf31f970d27dn%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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/bb3c6fab-dee9-48c4-81e4-7db67bc6931an%40googlegroups.com.