Разрыв страницы уценки Пандока
Недавно я начал использовать уценку Pandoc, которая кажется хорошей альтернативой LaTeX, так как в моем документе нет много математических формул, и у меня нет ЛЮБОГО опыта работы с LaTeX, который в сочетании с менее чем 2-недельным сроком представления делает его хорошим решением.
Одна вещь, которую я не смог найти - как заставить ее оставить остальную часть страницы пустой, кто-нибудь может помочь?
5 ответов
Похоже, что уценка в pandoc для этой цели использует стандартные теги LaTeX:
\newpage
а также \pagebreak
TL; DR: использовать \newpage
и фильтр Lua ниже, чтобы получить разрывы страниц во многих форматах.
Pandoc анализирует все входные данные во внутреннем формате документа. Этот формат не имеет специального способа представления разрывов страниц, но все же можно кодировать информацию другими способами. Одним из способов является использование сырого латекса \newpage
, Это прекрасно работает при выводе LaTeX (или PDF, созданный через LaTeX). Однако при таргетинге на разные форматы, такие как HTML или docx, могут возникнуть проблемы.
Простое решение при нацеливании на другие форматы заключается в использовании фильтра pandoc, который может трансформировать внутреннее представление документа так, чтобы он соответствовал нашим потребностям. Pandoc 2.0 и более поздние версии даже позволяют использовать включенный интерпретатор Lua для выполнения этого преобразования.
Давайте предположим, что мы указываем разрывы страниц, помещая \newpage
в строке, заключенной в пустые строки, например:
lorem ipsum
\newpage
more text
\newpage
будет проанализирован как RawBlock, содержащий необработанный TeX. Блок будет включен в выходные данные только в том случае, если целевой формат может содержать необработанный TeX (т. Е. LaTeX, Markdown, Org и т. Д.).
Мы можем использовать простой фильтр Lua, чтобы перевести это при нацеливании на другой формат. Следующее работает для docx, LaTeX, epub и облегченной разметки.
--- 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 '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
-- \pagebreak.
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
Мы опубликовали обновленную, более интересную версию. Он доступен в официальном репозитории pandoc lua-filters.
Я заметил, что это не работает для форматов.doc и.odt. Обходной путь, который я нашел, должен был вставить горизонтальную линию -----------------
и отформатировать стиль "горизонтальная линия", чтобы разбить страницу и стать невидимым, используя текстовый редактор (ibre office в моем случае)
Не могу отредактировать ответ LucasSeveryn, очередь сказала, что очередь заполнена, поэтому добавьте сюда некоторую информацию.
способ 1: +raw_tex
\newpage
а также \pagebreak
нужно raw_tex
расширение на.
// с pandoc 2.9.2.1, не работает с выводом docx или html, --verbose говорит
[INFO] Not rendering RawBlock (Format "tex") "\\pagebreak"
[INFO] Not rendering RawBlock (Format "tex") "\\newpage"
способ 2: +raw_attribute
https://pandoc.org/MANUAL.html
```{=openxml}
<w:p>
<w:r>
<w:br w:type="page"/>
</w:r>
</w:p>
```
// также не поддерживается в формате ввода gfm.
// это сработало для вывода docx, не работает с выводом html.
УВЕДОМЛЕНИЕ о расширении
эта потребность +raw_tex
расширение формата. который не поддерживает все варианты уценки в pandoc.
https://pandoc.org/MANUAL.html
Note, however, that commonmark and gfm have limited support for extensions.
Only those listed below (and smart, raw_tex, and hard_line_breaks) will work.
The extensions can, however, all be individually disabled.
Also, raw_tex only affects gfm output, not input.
так -f markdown
будет работать, но -f gfm
не работает.
расширение формата
https://pandoc.org/MANUAL.html
Extensions can be individually enabled or disabled by appending
+EXTENSION or -EXTENSION to the format name.
например
-t html+raw_tex
: output enable raw_tex
-f markdown-raw_tex-raw_attribute
: input отключить raw_tex и raw_attribute
Вы можете применить следующий подход, если конвертируете файл из формата Markdown в формат epub:
<div style="page-break-before:always;"></div>