it/etc

Pandoc: markup to markup transfer

C/H 2021. 2. 24. 17:34

Pandoc

Pandoc은 한 마크 업 형식에서 다른 마크 업 형식으로 변환하기위한 Haskell 라이브러리 이며이 라이브러리를 사용하는 명령 줄 도구입니다.

Install

Pandoc Git

git clone https://github.com/jgm/pandoc
cd pandoc
stack setup
stack install

stack

# sh
curl -sSL https://get.haskellstack.org/ | sh
# mac
brew install haskell-stack

Mac OS

brew install pandoc

How to

입력 파일이 지정 되지 않으면 stdin 에서 입력을 읽습니다.
출력은 기본적 으로 stdout 으로 이동합니다.
파일로 출력하려면 다음 -o옵션을 사용하십시오.

pandoc -o output.html input.txt

기본적으로 pandoc은 문서 조각을 생성합니다.

독립형 문서 (예 : 및 를 포함하는 유효한 HTML 파일)를 생성하려면 -s 또는 --standalone 플래그를 사용하세요.

pandoc -s -o output.html input.txt

입/출력 형식

  • 입력 형식: -f / --from
  • 출력 형식: -t / --to
    hello.txt 파일 markdown 에서 latex 문서를 만든다.
    pandoc -f markdown -t latex hello.txt

문자 인코딩은 입/출력 모두 UTF-8을 사용한다.

iconv 를 이용 UTF-8 문서 파일 입력후 출력을 UTF-8으로 한다.

iconv -t utf-8 input.txt | pandoc | iconv -f utf-8

PDF 생성

pandoc은 기본으로 LaTeX를 이용해서 PDF를 생성하므로 LaTeX 엔진이 설치 되어 있어야 한다.

pandoc test.txt -o test.pdf

pandoc -f html -t markdown --request-header User-Agent:"Mozilla/5.0" https://www.fsf.org

옵션

읿반옵션

-f FORMAT, -r FORMAT, --from=FORMAT, --read=FORMAT

  • bibtex (BibTeX bibliography)
  • biblatex (BibLaTeX bibliography)
  • commonmark (CommonMark Markdown)
  • commonmark_x (CommonMark Markdown with extensions)
  • creole (Creole 1.0)
  • csljson (CSL JSON bibliography)
  • csv (CSV table)
  • docbook (DocBook)
  • docx (Word docx)
  • dokuwiki (DokuWiki markup)
  • epub (EPUB)
  • fb2 (FictionBook2 e-book)
  • gfm (GitHub-Flavored Markdown), or the deprecated and less accurate markdown_github; use markdown_github only if you need extensions not supported in gfm.
  • haddock (Haddock markup)
  • html (HTML)
  • ipynb (Jupyter notebook)
  • jats (JATS XML)
  • jira (Jira/Confluence wiki markup)
  • json (JSON version of native AST)
  • latex (LaTeX)
  • markdown (Pandoc’s Markdown)
  • markdown_mmd (MultiMarkdown)
  • markdown_phpextra (PHP Markdown Extra)
  • markdown_strict (original unextended Markdown)
  • mediawiki (MediaWiki markup)
  • man (roff man)
  • muse (Muse)
  • native (native Haskell)
  • odt (ODT)
  • opml (OPML)
  • org (Emacs Org mode)
  • rst (reStructuredText)
  • t2t (txt2tags)
  • textile (Textile)
  • tikiwiki (TikiWiki markup)
  • twiki (TWiki markup)
  • vimwiki (Vimwiki)

-t FORMAT, -w FORMAT, --to=FORMAT, --write=FORMAT

  • asciidoc (AsciiDoc) or asciidoctor (AsciiDoctor)
  • beamer (LaTeX beamer slide show)
  • bibtex (BibTeX bibliography)
  • biblatex (BibLaTeX bibliography)
  • commonmark (CommonMark Markdown)
  • commonmark_x (CommonMark Markdown with extensions)
  • context (ConTeXt)
  • csljson (CSL JSON bibliography)
  • docbook or docbook4 (DocBook 4)
  • docbook5 (DocBook 5)
  • docx (Word docx)
  • dokuwiki (DokuWiki markup)
  • epub or epub3 (EPUB v3 book)
  • epub2 (EPUB v2)
  • fb2 (FictionBook2 e-book)
  • gfm (GitHub-Flavored Markdown), or the deprecated and less accurate markdown_github; use markdown_github only if you need extensions not supported in gfm.
  • haddock (Haddock markup)
  • html or html5 (HTML, i.e. HTML5/XHTML polyglot markup)
  • html4 (XHTML 1.0 Transitional)
  • icml (InDesign ICML)
  • ipynb (Jupyter notebook)
  • jats_archiving (JATS XML, Archiving and Interchange Tag Set)
  • jats_articleauthoring (JATS XML, Article Authoring Tag Set)
  • jats_publishing (JATS XML, Journal Publishing Tag Set)
  • jats (alias for jats_archiving)
  • jira (Jira/Confluence wiki markup)
  • json (JSON version of native AST)
  • latex (LaTeX)
  • man (roff man)
  • markdown (Pandoc’s Markdown)
  • markdown_mmd (MultiMarkdown)
  • markdown_phpextra (PHP Markdown Extra)
  • markdown_strict (original unextended Markdown)
  • mediawiki (MediaWiki markup)
  • ms (roff ms)
  • muse (Muse),
  • native (native Haskell),
  • odt (OpenOffice text document)
  • opml (OPML)
  • opendocument (OpenDocument)
  • org (Emacs Org mode)
  • pdf (PDF)
  • plain (plain text),
  • pptx (PowerPoint slide show)
  • rst (reStructuredText)
  • rtf (Rich Text Format)
  • texinfo (GNU Texinfo)
  • textile (Textile)
  • slideous (Slideous HTML and JavaScript slide show)
  • slidy (Slidy HTML and JavaScript slide show)
  • dzslides (DZSlides HTML5 + JavaScript slide show),
  • revealjs (reveal.js HTML5 + JavaScript slide show)
  • s5 (S5 HTML and JavaScript slide show)
  • tei (TEI Simple)
  • xwiki (XWiki markup)
  • zimwiki (ZimWiki markup)
  • the path of a custom Lua writer, see Custom writers below

Ex

markdown to pdf

$ pandoc book.md -o book.pdf           \
    --table-of-contents                \
    --number-sections                  \
    --pdf-engine=xelatex               \
    --indented-code-classes=javascript \
    --highlight-style=monochrome       \
    -V mainfont="Palatino"             \
    -V documentclass=report            \
    -V papersize=A5                    \
    -V geometry:margin=1in

latex to docx

pandoc sig-alternate.tex               \
    --from=latex                       \
    --to=docx                          \
    --biblatex                         \
    --bibliography sigproc.bib         \
    --output=sig-alternate.docx        \
    --reference-docx=my-reference.docx

결과가 만족스럽지 않다면 markdown으로 변환 후 Pandoc이 지원하는 특수 옵션은 man pandoc_markdown, man pandoc 등으로 확인한 뒤,
개선된 markdown 파일을 docx로 변환한다.
reference-docx=reference.docx 템플릿 옵션을 주의하라.

.docx 형식은 (대부분) XML 파일의 ZIP 아카이브입니다.

docx to odt

pandoc -o example.docx example.odt

두 개의 서로 다른 워드 프로세서 파일 유형간에 변환하려면 약간의 창의성을 발휘해야 할 수도 있다.
이 결과는 파일 인코딩과 관련된 오류가 발생하고 변환이 작동하지 않을 수 있다.

pandoc -o example.docx example-tmp.html && pandoc -o example.odt example-tmp.html

HTML 파일을 중간 변환으로 이용해서 DOCX에서 텍스트를 HTML 파일로 추출한 다음 해당 HTML을 ODT로 변환하면 서식이 유지된다.
이런 식으로 이상한 인코딩 오류가 없으며 파이프를 엉망으로 만들 필요가 없다.

반응형

'it > etc' 카테고리의 다른 글

DNS 정보 조회  (1) 2020.02.11
DNS  (0) 2020.02.10
사진으로 찍은 이미지 일괄 후 편집 툴 scan tailer  (0) 2017.12.13
rfc2119 - Key words for use in RFCs to Indicate Requirement Levels  (0) 2017.06.21
Headless Android  (0) 2017.03.13