我已经在 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 模板来生成简化的导出,但我把这留给高级用户作为练习。