Многоколоночный блок LaTeX в уценке Pandoc

Я хочу преобразовать файл уценки в html и pdf с помощью pandoc. Для файла 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} как необработанный источник латекса. Это означает, что:

  1. вывод html не включает содержимое блока.
  2. 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

person m000    schedule 05.12.2016    source источник
comment
Я думаю, вам придется изменить env LaTeX на div pandoc, а затем написать pandoc filter для преобразовать их в то, что вам нужно...   -  person mb21    schedule 06.12.2016


Ответы (1)


Вы можете использовать трюк, который обсуждался здесь

По сути, Pandoc закодирован так, чтобы распознавать \begin и \end, поэтому вместо этого определите \Begin и \End в заголовке и используйте их.

E.g.:

---
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...
person Sergio Correia    schedule 06.12.2016
comment
Довольно круто. Спасибо! Одна деталь заключается в том, что вам нужно оставить пустую строку после \Begin\End. - person m000; 12.12.2016
comment
Вопрос может быть дублирующим, но решение гораздо лучше предложенных для оригинала :) - person m000; 12.12.2016
comment
Да, \hideFromPandoc явно НАСТОЛЬКО полезен для многих вещей. - person DHW; 24.12.2017
comment
Похоже, это не разрешает изображения через ![My Image](....) в разделе с несколькими столбцами. Является ли это ограничением пакета «multicol»? - person Ammo Goettsch; 07.02.2019
comment
Не могу передать вам, как я взволнован тем, что это работает. Зажигай, @Серхио. - person Nathan; 30.11.2020