Как заставить pandoc генерировать заголовок, используя структуру beamer вместо блоков - PullRequest
2 голосов
/ 20 июня 2019

Как изменить способ преобразования заголовков ниже уровня слайда в LaTeX с помощью pandoc из {block} environment в \structure{} command?

  • Представьте себе такой файл уценки (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 Ответ

1 голос
/ 20 июня 2019

Легко достичь с помощью фильтров Lua :

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

Сохраните фильтр в файл и передайте этот файл в pandoc с помощью опции --lua-filter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...