希望还是有价值的。我在 Python 中制作了一个Pandoc 过滤器,以便轻松放置列,因此您可以这样编写演示文稿:
# Hello World
[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)
columnfilter.py
如果您从不使用 pandoc 过滤器,只需将过滤器保存到与(或您想要的其他名称)相同的文档位置并运行
pandoc -t beamer --filter columnfilter.py yourDocument.mkd
享受!