Pandoc markdown разрыв страницы
недавно я начал использовать Pandoc markdown, который кажется хорошей альтернативой LaTeX, так как мой документ не имеет много математических формул, и у меня нет никакого опыта работы с LaTeX, что в сочетании с менее чем 2-недельным сроком подачи делает его хорошим решением.
одна вещь, которую я не смог обойти, - это как заставить его оставить остальную часть страницы пустой, может ли кто-нибудь помочь?
3 ответа:
TL; DR: use
\newpageи фильтр Lua ниже, чтобы получить разрывы страниц во многих форматах.Pandoc анализирует все входные данные во внутренний формат документа. Этот формат не имеет специального способа представления разрывов страниц, но по-прежнему можно кодировать информацию другими способами. Один из способов-использовать сырой латекс
\newpage. Это отлично работает при выводе LaTeX (или pdf, созданный через LaTeX). Тем не менее, вы столкнетесь с проблемами при таргетинге на различные форматы, такие как HTML или docx.простое решение при таргетинге на другие форматы-использовать pandoc filter который может преобразовать представление внутреннего документа таким образом, что он удовлетворяет наши потребности. Pandoc 2.0 и позже даже позволяет использовать интерпретатор Lua для выполнения этого преобразования.
предположим, что мы указываем разрывы страниц, помещая
\newpageв строке, такие как пустые строки, Вот так:lorem ipsum \newpage more textThe
\newpageбудет разбирается как RawBlock содержащего сырья TeX. Блок будет включен в Вывод только в том случае, если целевой формат может содержать необработанный TeX (т. е. LaTeX, Markdown, Org и т. д.).мы можем использовать простой фильтр Lua для перевода этого при таргетинге на другой формат. Следующие работы для docx, LaTeX и легкой разметки.
--- Return a block element causing a page break in the given format. local function newpage(format) if format == 'docx' then local pagebreak = '<w:p><w:r><w:br w:type="page"/></w:r></w:p>' return pandoc.RawBlock('openxml', pagebreak) elseif format:match 'html.*' then return pandoc.RawBlock('html', '<div style=""></div>') elseif format:match '(la)?tex' then return pandoc.RawBlock('tex', '\newpage{}') elseif format:match 'epub' then local pagebreak = '<p style="page-break-after: always;"> </p>' return pandoc.RawBlock('html', pagebreak) else -- fall back to insert a form feed character return pandoc.Para{pandoc.Str '\f'} end end -- Filter function called on each RawBlock element. function RawBlock (el) -- check that the block is TeX or LaTeX and contains only \newpage or -- \newpage{} if el.format:match '(la)?tex' and content:match -- '\newpage(%{%})?' then if el.text:match '\newpage' then -- use format-specific pagebreak marker. FORMAT is set by pandoc to -- the targeted output format. return newpage(FORMAT) end -- otherwise, leave the block unchanged return nil end
Я заметил, что это не работает .док и. файлы odt форматы. Обходной путь, который я нашел, состоял в том, чтобы вставить горизонтальную линию
-----------------и отформатируйте стиль "горизонтальная линия", чтобы сломать страницу и быть невидимым, используя текстовый редактор (ibre office в моем случае)