Pandoc 마크 다운 페이지 나누기
최근에 LaTeX의 좋은 대안으로 보이는 Pandoc 마크 다운을 사용하기 시작했습니다. 제 문서에는 수학 공식이 많지 않아서 LaTeX에 대한 경험이 없어서 마감일이 2 주도되지 않아 좋은 솔루션이되었습니다.
내가 돌아 다닐 수 없었던 한 많은 페이지의 나머지 부분을 비워 두도록 강제하는 방법입니다. 누구든지 누구든지 수 있습니까?
pandoc markdown은 목적으로 표준 LaTeX 태그를 사용하는 것처럼 보입니다.
\newpage
과 \pagebreak
TL; DR : 아래 \newpage
의 Lua 필터를 사용 하여 다양한 형식으로 페이지 나누기 를 가져옵니다 .
Pandoc은 모든 입력을 내부 문서 형식으로 구문 분석합니다. 이 형식은 페이지 나누기를 전용 방법이 없지만 다른 방법으로 정보를 인코딩하는 것은 여전히 가능합니다. 한 가지 방법은 원시 LaTeX를 사용하는 것입니다 \newpage
. 이것은 LaTeX (또는 LaTeX를 통해 생성 된 pdf)를 출력 할 때 완벽하게 작동합니다. 그러나 HTML 또는 docx와 같은 다른 형식을 사용할 때 문제가 발생합니다.
다른 형식을 대상으로 할 때 간단한 해결책 은 내부 문서 표현을 변환 할 수 있는 pandoc 필터 를 사용하는 것입니다. Pandoc 2.0 이상 에서는 포함 된 Lua 인터프리터를 사용하여이 변환을 수행 할 수도 있습니다 .
다음 \newpage
과 같이 빈 줄처럼 줄 을 넣어 페이지 나누기를 표시 가정 해 보겠습니다 .
lorem ipsum
\newpage
more text
는 원시 텍를 포함 \newpage
하는 RawBlock 으로 구문 분석됩니다 . 블록은 대상 형식이 원시 TeX (예 : LaTeX, Markdown, Org 등)를 포함 할 수있는 경우에만 출력에 포함됩니다.
다른 형식을 대상으로 할 때 간단한 Lua 필터를 사용하여 변환 할 수 있습니다. 다음 작품 에 대한 DOCX , 유액 , 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)를 사용하여 가로줄을 삽입 하고 "가로줄"스타일을 포맷하여 페이지를 나누고 보이지 않게하는 것이 었습니다.
참고 URL : https://stackoverflow.com/questions/16965490/pandoc-markdown-page-break
'IT' 카테고리의 다른 글
Numpy : 빠른 가치의 첫 번째 눈길 찾기 (0) | 2020.08.28 |
---|---|
YAML에서 파이프 기호를 사용하는 것은 무엇입니까? (0) | 2020.08.28 |
Django Rest Framework의 응답에 중개자 (모델을 통해) 포함 (0) | 2020.08.28 |
Fragment에서 onCreateView와 onViewCreated의 차이점 (0) | 2020.08.28 |
두 개의 인라인 블록을 같은 줄에 왼쪽과 오른쪽으로 정렬 (0) | 2020.08.28 |