我希望这仍然有价值。我用Python编写了一个Pandoc过滤器,以便轻松地放置列,因此您可以以以下方式编写演示文稿:
[columns]
[column=0.5]
~~~python
if __name__ == "__main__":
print "Hello World"
~~~
[column=0.5]
This is how a "Hello World" looks like in Python
[/columns]
过滤器将把每个标记转换为\begin{columns}和\column{.5\textwidth},因此上面的文档将变成:
\begin{frame}[fragile]{Hello}
\begin{columns}
\column{0.5\textwidth}
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{some python code}
\end{Highlighting}
\end{Shaded}
\column{0.5\textwidth}
Hello World
\end{columns}
\end{frame}
代码过滤器在这里。
import pandocfilters as pf
def latex(s):
return pf.RawBlock('latex', s)
def mk_columns(k, v, f, m):
if k == "Para":
value = pf.stringify(v)
if value.startswith('[') and value.endswith(']'):
content = value[1:-1]
if content == "columns":
return latex(r'\begin{columns}')
elif content == "/columns":
return latex(r'\end{columns}')
elif content.startswith("column="):
return latex(r'\column{%s\textwidth}' % content[7:])
if __name__ == "__main__":
pf.toJSONFilter(mk_columns)
如果您从未使用过pandoc筛选器,只需将筛选器保存到与columnfilter.py
(或其他名称)相同的文件位置,然后运行该命令即可。
pandoc -t beamer --filter columnfilter.py yourDocument.mkd
享受吧!