Pandoc Markdown中的LaTeX多列块

13

我想使用Pandoc将Markdown文件转换为HTML和PDF格式。对于打印用途的PDF文件,我希望能够以两列格式呈现一个(窄)文本块。以下是我尝试过但不起作用的代码:

---
papersize: a4
documentclass: article
header-includes:
    - \usepackage{multicol}
...

H1
==============

H2 - A
--------------

\begin{multicols}{2}

### H3 - a
Blah blah blah...

### H3 - b
Blah blah blah...

### H3 - c
Blah blah blah...

\end{multicols}

H2 - B
--------------
Blah blah blah...

使用Pandoc可以实现吗?问题在于Pandoc似乎将从\begin{multicols}{2}\end{multicols}之间的所有内容都视为原始LaTeX源代码。这意味着:

  1. HTML输出不包括该块的内容。
  2. 在传递给LaTeX之前,Markdown没有被解释,使得LaTeX无法处理该块。

有没有办法指示Pandoc注入环境开始命令(\begin{multicols}{2}),但停止扫描以查找其结束而是在那一点上停止LaTeX原始块呢?或者提供更好的解决方案来实现期望的效果?

我用于转换的命令行如下:

pandoc --standalone --normalize -f markdown-hard_line_breaks -t html5 --self-contained -o out.pdfl in.md
pandoc --standalone --normalize -f markdown-hard_line_breaks -t latex -o out.pdf in.md

我认为你需要将LaTeX环境更改为pandoc div,然后编写一个pandoc过滤器将它们转换为所需的格式... - mb21
1个回答

29

你可以使用在这里讨论的技巧。

基本上,Pandoc 编码识别 \begin 和 \end,因此可以在头部定义 \Begin 和 \End 并使用它们。

例如:

---
papersize: a4
documentclass: article
header-includes:
    - \usepackage{multicol}
    - \newcommand{\hideFromPandoc}[1]{#1}
    - \hideFromPandoc{
        \let\Begin\begin
        \let\End\end
      }

...

H1
==============

H2 - A
--------------

\Begin{multicols}{2}

### H3 - a
Blah blah blah...

### H3 - b
Blah blah blah...

### H3 - c
Blah blah blah...

\End{multicols}

H2 - B
--------------
Blah blah blah...

2
非常酷。谢谢!一个细节是,在\Begin \End之后需要留下一个空行。 - m000
3
这个问题可能是一个重复的问题,但解决方案比原来提出的更好 :) - m000
是的,\hideFromPandoc 对于许多事情来说显然非常有用。 - DHW
这似乎不允许在多列部分通过 ! [My Image](....)插入图片。 这是“multicol”软件包的限制吗? - Ammo Goettsch
无法告诉你我有多激动这个起作用了。干得好,@Sergio。 - Nathan
在 pandoc 的输入参数中将 latex-engine 改为 pdf-engine 后,不再起作用。 - micholeodon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接