presenterm으로 마크다운 발표 자료 만들기: 터미널에서 돌아가는 슬라이드
개발자 모임이나 사내 세미나에서 발표 자료를 만들 때 늘 똑같은 고민이 들곤 합니다. Keynote나 파워포인트로 만들자니 코드 블록 하나 넣자고 폰트와 들여쓰기를 만지작거리는 게 영 번거롭고, 그렇다고 Google Slides는 코드 신택스 하이라이팅이 부실하죠. 마크다운으로 그냥 글 쓰듯 쓰면 안 될까 싶었던 적이 한두 번이 아닙니다.
presenterm은 딱 그 가려운 곳을 긁어주는 도구입니다. 마크다운 파일 하나로 슬라이드를 만들고 터미널에서 바로 띄울 수 있어요. 코드 블록은 bat 기반의 신택스 하이라이팅이 자동으로 들어가고, 심지어 발표 도중에 코드를 실행해서 결과를 화면에 띄울 수도 있습니다. Rust로 작성됐고 macOS, Linux, Windows 모두 지원해요.
이 글에서는 설치부터 슬라이드 작성, 코드 실행, 테마, PDF 내보내기까지 presenterm의 핵심 기능을 차례로 살펴보겠습니다.
설치
macOS를 쓰신다면 Homebrew로 간단히 설치할 수 있습니다.
brew install presenterm
Linux 사용자라면 배포판에 따라 패키지 매니저를 사용하면 됩니다.
# Arch Linux
sudo pacman -S presenterm
# Nix/NixOS
nix-env -iA nixos.presenterm
Windows에서는 Scoop이나 WinGet으로 설치합니다.
scoop install main/presenterm
Rust 개발 환경이 있다면 Cargo로 빌드하는 것도 한 가지 방법입니다.
cargo install --locked presenterm
빌드가 부담스럽다면 공식 릴리즈 페이지에서 미리 컴파일된 바이너리를 받아서 쓸 수도 있어요. 설치가 끝났다면 버전을 확인해봅시다.
presenterm --version
첫 슬라이드 만들기
demo.md 파일을 하나 만들어볼게요. presenterm은 일반적인 마크다운 문법을 그대로 따릅니다. 다만 한 가지 규칙이 있는데요. 슬라이드와 슬라이드 사이는 <!-- end_slide --> HTML 주석으로 구분합니다.
---
title: "presenterm 입문"
sub_title: "터미널에서 발표하기"
author: "홍길동"
---
# 안녕하세요
presenterm으로 만든 첫 슬라이드입니다.
<!-- end_slide -->
# 핵심 기능
- 마크다운 한 파일로 슬라이드 작성
- 코드 신택스 하이라이팅
- 발표 중 코드 실행
- PDF/HTML 내보내기
front matter는 표지에 들어갈 제목, 부제, 저자를 지정하는 영역이고 생략해도 괜찮습니다. 첫 슬라이드는 자동으로 표지처럼 가운데 정렬돼서 표시돼요.
두 번째 슬라이드에서는 핵심 기능 아래에 =====을 그어 setext 헤더를 만들었습니다. presenterm에서 setext 헤더는 슬라이드 제목으로 인식되어 화면 가운데에 큼직하게 표시됩니다. 일반 # 헤더와는 다르게 취급되니 슬라이드 제목을 강조하고 싶을 때 setext 형식을 쓰면 좋아요.
파일을 저장한 뒤 터미널에서 실행해봅시다.
presenterm demo.md
화살표 키나 j/k, 페이지업/다운으로 슬라이드를 넘길 수 있습니다. Ctrl+P를 누르면 전체 슬라이드 목록이 모달로 뜨고요. ?를 누르면 단축키 도움말이 나타나서 처음 익힐 때 편합니다.
발표 모드로 들어가려면 --present 플래그를 붙입니다.
presenterm --present demo.md
발표 모드에서는 디버깅용 UI가 사라지고, 깔끔하게 슬라이드만 보여줍니다.
핫 리로드로 빠르게 작성하기
presenterm의 강점 중 하나는 핫 리로드입니다. 파일을 수정하고 저장하면 그 변경이 곧바로 화면에 반영돼요. 에디터를 한쪽에 띄워두고 터미널을 옆에 두면 작성하면서 결과를 실시간으로 확인할 수 있습니다.
웹 프론트엔드 개발할 때 bun run dev로 핫 모듈 리로드를 쓰는 것과 비슷한 경험을 슬라이드에서도 할 수 있는 셈이죠. 처음 슬라이드를 짤 때는 레이아웃이 마음에 들 때까지 자잘하게 다듬게 되는데 매번 도구를 껐다 켜지 않아도 되니 편합니다.
코드 블록과 신택스 하이라이팅
발표에서 코드를 보여줄 일이 많죠. presenterm은 코드 블록에 언어만 지정해두면 알아서 색을 입혀줍니다.
```rust
fn main() {
println!("Hello, presenterm!");
}
```
Python, JavaScript, Rust, Go, Java, C++ 등 50개가 넘는 언어를 지원해요. 화면에 표시할 때 특정 줄을 강조하고 싶다면 중괄호 안에 줄 번호를 적어주면 됩니다.
```rust {1,3,5-7}
fn main() {
let x = 10;
let y = 20;
let z = x + y;
println!("{}", z);
}
```
위 예제에서는 1번, 3번, 그리고 5번부터 7번까지 줄이 하이라이트된 채로 보입니다. 나머지 줄은 약간 흐릿하게 표시돼서 시선이 자연스럽게 강조된 부분으로 갑니다.
여기서 한 단계 더 들어가면 점진적 하이라이팅(progressive highlighting)이 가능합니다. 파이프(|) 기호로 구간을 나누면 슬라이드를 한 번 넘길 때마다 하이라이트되는 줄이 바뀝니다.
```rust {1,3|5-7}
```
처음에는 1번과 3번 줄이 강조되고, 다음 키를 누르면 5~7번 줄로 강조가 이동하는 거죠. 라이브 코딩을 흉내내듯 한 줄씩 설명하면서 발표하기에 잘 맞습니다.
줄 번호를 함께 보여주고 싶다면 +line_numbers 스위치를 붙입니다.
```rust +line_numbers
fn main() {
println!("Hello");
}
```
코드 실행하기
신택스 하이라이팅보다 더 흥미로운 기능은 코드 실행입니다. 발표 중에 Ctrl+E를 누르면 코드 블록 바로 아래에 실행 결과가 나타나요. “이렇게 짜면 이런 결과가 나옵니다”라고 설명하면서 즉석에서 증명할 수 있는 거죠.
이 기능은 보안상 기본으로 꺼져 있어요. -x 플래그를 붙여서 실행하거나 설정 파일에서 snippet.exec.enable을 켜야 합니다.
presenterm -x demo.md
실행 가능한 코드 블록은 언어 뒤에 +exec를 붙여 표시합니다.
```bash +exec
echo "presenterm에서 실행되는 명령"
date
```
이 슬라이드에서 Ctrl+E를 누르면 echo와 date 명령이 실제로 돌아가고 출력이 화면에 표시됩니다. 슬라이드를 넘겼다가 돌아와도 결과는 그대로 남아 있어요.
bash, python, rust, javascript, typescript, Go, Java 등 다양한 언어가 실행을 지원합니다. Rust의 경우 단독 실행 파일이 아닌 스크립트로 돌리고 싶다면 rust-script를 활용하는 변형도 있어요.
```rust +exec:rust-script
fn main() {
println!("rust-script로 실행됩니다");
}
```
top이나 htop처럼 의사 터미널(pseudo-terminal)이 필요한 도구를 실행하려면 +pty를 사용합니다.
```bash +pty
htop
```
키 입력 없이 슬라이드가 표시되는 즉시 실행되게 하려면 +auto_exec를 붙이면 됩니다. 데모 자료에서 결과가 미리 보여있길 원할 때 유용해요.
테마 적용하기
기본 테마도 나쁘지 않지만 분위기에 따라 바꾸고 싶을 때가 있죠. presenterm은 여러 내장 테마를 제공합니다.
- Catppuccin 계열:
catppuccin-latte,catppuccin-frappe,catppuccin-macchiato,catppuccin-mocha - Tokyonight 계열:
tokyonight-moon,tokyonight-day,tokyonight-night,tokyonight-storm - 일반 테마:
dark,light,gruvbox-dark - 터미널 연동 테마:
terminal-dark,terminal-light
--theme 플래그로 테마를 지정해서 실행할 수 있습니다.
presenterm --theme catppuccin-mocha demo.md
매번 플래그를 붙이는 게 번거롭다면 front matter에 적어두면 돼요.
---
title: "presenterm 입문"
theme:
name: catppuccin-mocha
---
밝은 환경과 어두운 환경 양쪽 모두에서 발표할 일이 있을 때는 light/dark 자동 감지 기능을 활용해서 두 테마를 모두 지정해둘 수도 있습니다. 발표 장소에 가서 프로젝터에 띄워봤더니 너무 어두워서 안 보이는 사고를 막아주죠.
terminal-dark나 terminal-light 테마를 쓰면 슬라이드가 터미널의 현재 색상 팔레트를 그대로 따라가서 한층 자연스럽게 보입니다. 평소에 잘 만들어둔 터미널 컬러스킴을 그대로 쓰고 싶을 때 좋아요.
테마를 완전히 새로 만들고 싶다면 YAML 파일로 커스텀 테마를 정의해서 path로 가리키거나, front matter의 override 섹션에서 색상 일부만 덮어쓸 수 있습니다.
PDF와 HTML로 내보내기
발표 후에 자료를 공유하려면 PDF나 HTML로 변환할 일이 생기죠. presenterm은 두 가지 모두 내장 명령으로 지원합니다.
PDF로 내보내려면 weasyprint가 필요합니다. Python 패키지인데 uv를 쓰면 설치 없이 한 번에 돌릴 수 있어요.
uv run --with weasyprint presenterm --export-pdf demo.md
명령이 끝나면 demo.pdf가 만들어집니다. 출력 위치를 바꾸고 싶을 때는 --output 플래그를 추가하면 돼요.
HTML 내보내기는 별도 의존성 없이 바로 됩니다.
presenterm --export-html demo.md
HTML로 뽑으면 이미지와 스타일이 한 파일에 모두 포함된 단일 파일이 생성됩니다. 회사 위키나 GitHub Pages에 그대로 올려도 깨지지 않아서 편해요.
이미지와 미디어
슬라이드에 이미지를 넣을 때는 평범한 마크다운 문법을 그대로 씁니다.

터미널이 kitty, WezTerm, Ghostty 같은 그래픽 프로토콜을 지원한다면 슬라이드 안에 진짜 이미지가 렌더링됩니다. 그렇지 않은 터미널이라도 ASCII로 폴백되니까 어디서든 동작하긴 해요. 데모할 때는 가능하면 그래픽 지원이 되는 터미널을 쓰는 게 시각적으로 훨씬 좋습니다.
애니메이션 GIF도 지원해서 짧은 데모 영상을 끼워 넣기 좋아요. asciinema로 녹화한 터미널 세션을 GIF로 변환해서 슬라이드에 넣으면 라이브 데모의 실패 리스크 없이 미리 녹화한 결과를 보여줄 수 있습니다.
발표 중 단축키
발표 도중에 알아두면 좋은 단축키 몇 개를 정리해둘게요.
j,k, 화살표, Page Down/Up — 다음/이전 슬라이드로 이동gg— 첫 슬라이드로 점프G— 마지막 슬라이드로 점프<숫자>G— 특정 번호 슬라이드로 점프 (예:5G)Ctrl+P— 슬라이드 인덱스 모달 열기Ctrl+E— 코드 실행 (실행 모드 활성화 시)Shift+T— 레이아웃 디버깅용 그리드 토글?— 단축키 도움말 모달
vim 사용자라면 j/k나 gg/G가 익숙하게 느껴질 거예요. 발표 중에 “다음 슬라이드로 가려면 어떻게 하더라?” 하다가 흐름 끊긴 경험이 있다면 단축키 도움말(?)이 든든한 안전망이 되어줍니다.
어디에 쓰면 좋을까
presenterm이 모든 발표에 어울리는 도구는 아닙니다. 디자인 요소가 많거나 애니메이션이 화려한 발표라면 Keynote 같은 GUI 도구가 더 잘 맞아요.
반면 다음과 같은 상황에서는 presenterm이 빛납니다. 우선 코드를 많이 보여주는 기술 세미나에 잘 어울려요. 신택스 하이라이팅이 자동으로 들어가고 라이브 실행까지 가능하니까 코드 중심 발표의 마찰이 크게 줄어듭니다. 또한 사내 스탠드업이나 짧은 데모처럼 시각적 화려함보다 빠르게 만들고 빠르게 넘기는 게 중요한 자리에도 좋습니다. 마크다운으로 글 쓰듯 만들 수 있어서 슬라이드 한 장 추가하는 비용이 거의 없거든요. 마지막으로 Git으로 슬라이드를 버전 관리해야 하는 경우에 강력합니다. 텍스트 파일이라 diff가 깔끔하게 보이고, 동료가 PR로 슬라이드 수정 제안을 보내는 식의 협업도 자연스러워요.
발표 자료가 결국 저장소의 README와 가까운 형태로 남는다는 점도 매력입니다. 자료를 들여다보다가 그대로 블로그 글로 옮기거나 문서로 재활용하기가 쉬워요.
마치며
presenterm은 마크다운으로 슬라이드를 만들고 터미널에서 돌리는 도구입니다. 코드 신택스 하이라이팅과 라이브 실행, 다양한 테마, PDF/HTML 내보내기까지 발표에 필요한 핵심 기능을 갖췄어요. 가벼우면서도 의외로 빠진 게 없습니다.
GUI 슬라이드 도구에 익숙해진 머리로는 처음엔 좀 낯설 수 있는데요. 일단 코드 블록 하나 잘 보이는 슬라이드를 만들어보면 그다음부터는 손이 자꾸 가게 됩니다. 다음 사내 발표나 컨퍼런스 토크 준비할 때 한번 시도해보세요. 익숙해지면 슬라이드 만드는 시간이 눈에 띄게 짧아질 거예요.
더 자세한 내용은 presenterm 공식 문서를 참고하세요.
This work is licensed under
CC BY 4.0