如何使用投影仪结构而不是块使Pandoc生成标头

时间:2019-06-19 23:35:54

标签: pandoc beamer

如何更改Pandoc在LaTeX中将幻灯片级别下的标头从{block}环境转换为\structure{}命令的方式?

  • 想象一下这样的Markdown文件(foo.md

    # Slide title
    
    ## Header
    
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    
  • 让我们使用以下命令将其转换为LaTeX:

    pandoc -t beamer --slide-level 1 foo.md -o foo.tex
    
  • 生成的LaTeX文件类似于:

    \begin{frame}{Slide}
    
    \begin{block}{Header}
    
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    
    \end{block}
    
    \end{frame}
    

是否有一个简单而优雅的解决方案,以便pandoc生成如下内容?

\begin{frame}{Slide}

\structure{Header}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

\end{frame}

1 个答案:

答案 0 :(得分:1)

通过Lua filters轻松实现:

function Header (header)
  if header.level == 2 then
    local inlines = pandoc.List:new{}
    inlines:extend {pandoc.RawInline('tex', '\\structure{')}
    inlines:extend(header.content)
    inlines:extend {pandoc.RawInline('tex', '}')}
    return pandoc.Plain(inlines)
  end
end

将过滤器安全保存到文件,然后通过--lua-filter选项将该文件传递给pandoc。