如何使用 pandoc 将 markdown 转换为可读/可编辑的 LaTex 和 Beamer?

如何使用 pandoc 将 markdown 转换为可读/可编辑的 LaTex 和 Beamer?

我已经在 SO 上问过这个问题,但没有得到任何答复,所以我也在这里尝试,我希望它没有超出范围。

如果我使用这个 Markdown 幻灯片的最小示例

### Slide 

- A
- bulleted
- list

~~~{.cpp}
    template<typename A> 
    class B {};
~~~

并使用 pandoc 将其转换为 LaTex Beamer pandoc -t beamer mwe.pd -o mwe.latex,我得到了这个无法读取的 LaTex 文件

\begin{frame}[fragile]{Slide}
\protect\hypertarget{slide}{}
\begin{itemize}
\tightlist
\item
  A
\item
  bulleted
\item
  list
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
    \KeywordTok{template}\OperatorTok{\textless{}}\KeywordTok{typename}\NormalTok{ A}\OperatorTok{\textgreater{}} 
    \KeywordTok{class}\NormalTok{ B }\OperatorTok{\{\};}
\end{Highlighting}
\end{Shaded}
\end{frame}

我要做什么才能告知 pandoc 我想使用它minted来突出显示代码(Highlighting是一个占位符)?

可以\protect删除吗?s 的格式很奇怪怎么办\item

我期望从这个最小的例子中得到

\begin{frame}[fragile]{Slide}

\begin{itemize}
    \item A
    \item bulleted
    \item list
\end{itemize}

\begin{verbatim}
    template<typename A> 
    class B {};
\end{verbatim}

\end{frame}

或类似的东西。即使Highlighting是一个占位符,这实际上是 .md 到 .latex 转换的 MWE,并且 .latex 中的代码被渲染为不可读的*Tok...

答案1

选项一:制作独立文档(-s),而不仅仅是文档正文。

pandoc -s -f markdown -t beamer mwe.Rmd -o mwe.tex

选项二:使用带有 YAML 标头的 Rstudio,如下所示:

---
output: 
  beamer_presentation: 
    keep_tex: yes
---

### Slide

-   A
-   bulleted
-   list

``` {.cpp}
    template<typename A> 
    class B {};
```

然后,使用Knit按钮,不仅可以生成 Beamer PDF,还可以在工作目录中保留 LaTeX 版本,以防您想直接修改它。然而,这两个选项都是最糟糕的工作流程,因为大量的特别指定添加的宏,如\OperatorTok。始终只写入rmarkdown,或者从一开始就只写入普通乳胶。

第三个选择是自定义 pandoc 模板来生成简化的导出,但我把这留给高级用户作为练习。

相关内容