소개
pandoc-plot은 Laurent P. René de Cotret이 개발한 pandoc 필터로, Markdown 등 문서 안의 코드 블록을 그림으로 변환하여 변환된 문서에 자동으로 삽입해 줍니다. 사용자는 Matplotlib, ggplot2, MATLAB 등 다양한 플로팅 도구를 선택해 같은 문서에서 일관된 방식으로 그래프를 생성할 수 있습니다. 기술 문서 작성 과정에서 코드로부터 도표를 만들고자 하는 사용자에게 유용한 도구입니다.
상세정보
다양한 플로팅 도구 지원
pandoc-plot은 matplotlib, plotly_python, plotly_r, MATLAB, Mathematica, GNU Octave, ggplot2, gnuplot, Graphviz, Bokeh, Julia의 Plots.jl, PlantUML, Sage, D2, Asymptote, MermaidJS 등 다양한 플로팅 도구를 지원합니다. 각 도구는 시스템에 별도로 설치되어 있어야 하며, 어떤 도구가 현재 시스템에서 사용 가능한지는 명령줄에서 확인할 수 있습니다.
pandoc 필터로 동작
pandoc의 –filter 옵션을 통해 호출되며, 입력 문서의 코드 블록을 해당 클래스에 맞는 도구로 렌더링한 뒤 figure로 대체합니다. 변환 과정에서 별도의 수동 작업 없이 도표가 문서에 포함됩니다.
설치 경로 다양화
GitHub 릴리스 페이지에서 Windows, Linux, macOS용 바이너리를 내려받을 수 있고, Windows에서는 Inno 설치 프로그램도 제공됩니다. 또한 conda-forge, Homebrew, Hackage/Stackage, Windows 패키지 관리자 winget 등 다양한 패키지 관리자를 통해 설치할 수 있습니다.
설치 방법
- winget을 사용하는 경우 winget install –id LaurentPRenedeCotret.pandoc-plot –exact 명령으로 설치합니다.
- conda 환경을 사용하는 경우 conda install -c conda-forge pandoc-plot으로 설치합니다.
- macOS의 Homebrew 환경에서는 brew install pandoc-plot으로 설치합니다.
- Haskell 환경에서는 cabal update 후 cabal install로 설치할 수 있으며, Stackage를 이용할 수도 있습니다.
- 소스에서 직접 빌드하려면 저장소를 클론한 뒤 cabal install(또는 stack install)을 실행합니다.
문서에 적용하기
먼저 사용하려는 플로팅 도구(예: matplotlib)를 시스템에 설치하고, 코드 블록의 클래스를 해당 도구 이름(예: {.matplotlib})으로 지정합니다. 그 다음 pandoc 명령에 –filter pandoc-plot 옵션을 추가해 변환을 실행하면, 코드 블록이 결과 도표로 치환된 HTML, PDF 등의 문서가 생성됩니다.
활용 예시
- 기술 문서나 블로그 글에 코드와 함께 즉시 반영되는 matplotlib 그래프를 포함해, 독자가 같은 코드를 재현할 수 있도록 구성할 수 있습니다.
- PlantUML, MermaidJS, Graphviz, D2, Asymptote 등을 활용해 UML 다이어그램, 플로우차트, 그래프 구조를 마크다운 문서 안에 직접 삽입할 수 있습니다.
- ggplot2(예: plotly_r)와 같은 통계 시각화 도구를 사용해 데이터 분석 보고서용 차트를 코드와 함께 문서에 포함할 수 있습니다.
제한 및 확인 사항
- 사용하려는 플로팅 도구는 시스템에 미리 설치되어 있어야 하며, 도구가 설치되어 있지 않으면 해당 코드는 도표로 렌더링되지 않습니다.
- 라이선스는 GPL-2.0으로 공개되어 있습니다.
시스템 요구사항
사용 환경에 pandoc이 설치되어 있어야 하며, 사용하려는 플로팅 도구(matplotlib, ggplot2, gnuplot 등)는 시스템에 별도로 설치되어 있어야 합니다. winget 설치 시 Windows 패키지 관리자가 필요하고, conda 설치 시 conda 환경, Homebrew 설치 시 macOS의 Homebrew, Hackage/Stackage 설치 시 cabal 또는 stack이 필요합니다. 소스에서 빌드할 경우 Haskell 빌드 도구인 cabal(또는 stack)이 필요합니다.


