Quarkdown - 현대적인 Markdown 기반 조판 시스템
(github.com/iamgio)- 기존 Markdown 문법을 확장해 책, 논문, 슬라이드, 프레젠테이션 등 다양한 형식의 문서를 손쉽게 제작할 수 있는 현대적 타이포그래피 시스템
- 함수 지원, 변수 사용, 조건문/반복문, 표준 라이브러리 등 고급 기능을 마크다운에 직접 내장하여, 기존 Markdown이나 LaTeX보다 확장성과 자동화에서 차별성 보유
- 하나의 소스 파일로 HTML, PDF, 슬라이드(리빌JS), 페이징북(paged.js) 등 여러 출력물 생성 가능, 코드 기반 콘텐츠 제작에 특화
- 스크립팅 기능과 표현력 있는 확장 문법으로 복잡하거나 동적인 콘텐츠도 자유롭게 구현 가능
- REPL, 라이브 프리뷰, 빠른 컴파일 환경 제공으로, 실시간 문서 편집 및 디버깅이 가능함
- 기존 도구들과 비교해 스크립팅 기능, 문서 제어, 쉬운 학습 곡선 등에서 Markdown, LaTeX, Typst, AsciiDoc, MDX 대비 강점이 있음
- 별도 개발환경이나 복잡한 설정 없이 Java 17 이상만 있으면 주요 운영체제에서 모두 사용 가능함
About
- Quarkdown은 마크다운의 기본 구조에 함수 및 확장 문법을 추가하여, 사용자가 단순 텍스트부터 책, 논문, 슬라이드 등 다양한 형식의 완성도 높은 결과물을 쉽게 만들 수 있게 설계된 최신 타입세팅 시스템
-
CommonMark와 GFM을 기반으로 개발되었으며, 자체 문법과 함수, 변수, 사용자 정의 라이브러리까지 모두 지원함
- Quarkdown Flavor라는 독자 문법을 제공
- 튜링 완전 함수 확장 문법을 통해 마크다운에 함수, 조건문, 반복문 등 고급 기능을 추가함
- .qmd 라이브러리로 레이아웃, 입출력, 수학, 조건문, 반복문 등 다양한 기능을 사용할 수 있음
- 복잡한 문서 구조나 동적인 콘텐츠를 필요로 하는 경우에도 확장성과 생산성을 높일 수 있음
주요 특징 및 활용법
-
HTML, 슬라이드, 책(Paged), PDF 등 다양한 출력 포맷 지원
- .doctype {slides}, .doctype {paged} 등 함수 호출로 문서 유형 지정 가능
- reveal.js, paged.js 등 오픈소스 기반 엔진 연동
-
스크립팅 및 동적 콘텐츠
- 함수, 변수, 조건문, 반복문 등 프로그래밍적 요소 도입
- ex) .function {greet} ... .greet {world} from:{iamgio}
-
라이브 프리뷰, 빠른 컴파일
- 실시간 미리보기 및 파일 변경 감지(Watch) 기능 제공
- -p --preview, -w --watch 옵션으로 작업 효율 증대
-
타 문서 도구와 비교
- LaTeX 대비 학습 곡선이 낮고, Markdown 대비 기능 확장성 우수
- Typst, AsciiDoc, MDX 등과 비교 시에도 스크립팅/표현력에서 강점
지원 대상(타겟)
-
HTML
- 일반 출력(기본값)
- 슬라이드( reveal.js 활용 )
- 책/논문 형태( paged.js 활용, 웹서버 필요 )
-
PDF
- HTML이 지원하는 모든 문서 유형, 기능을 그대로 PDF로 출력 가능
- PDF 출력에 관한 자세한 내용은 wiki 문서 참고
-
.doctype {slides}
,.doctype {paged}
와 같은 함수 호출로 출력 포맷 제어
비교
Quarkdown | Markdown | LaTeX | Typst | AsciiDoc | MDX | |
---|---|---|---|---|---|---|
간결함·가독성 | ✔ | ✔ | ✗ | ✔ | ✔ | ✔ |
전체 문서 제어 | ✔ | ✗ | ✔ | ✔ | ✗ | ✗ |
스크립팅 기능 | ✔ | ✗ | 일부 지원 | ✔ | ✗ | ✔ |
책/기사 형식 출력 | ✔ | ✗ | ✔ | ✔ | ✔ | 3rd party |
프레젠테이션 출력 | ✔ | ✗ | ✔ | ✔ | ✔ | 3rd party |
러닝 커브 | 초록 | 초록 | 빨강 | 주황 | 초록 | 초록 |
타겟 지원 | HTML, PDF | HTML | PDF, PostScript | HTML, PDF, ePub | HTML |
Hacker News 의견
-
내 FOSS 텍스트 에디터 KeenWrite는 Markdown에서 XHTML, TeX, 그리고 PDF로 변환하는 유사한 방식을 사용함
소프트웨어 아키텍처는 프로세서 체인을 어떻게 설계할 수 있는지 보여줌
내가 KeenWrite를 만든 이유는 공상과학 소설을 쓸 때 등장인물의 이름이나 지역 같은 변수들을 쓸 수 있게 하려는 목적
자세한 내용은 튜토리얼 참고
아직도 pandoc과 셸 스크립트를 쓰는 사람들에게는, Typesetting Markdown 시리즈에서 Markdown을 PDF로 변환하는 스크립트 기반 인프라 구축 방법을 설명함
KeenWrite 자체 정보는 여기에서 볼 수 있음
아키텍처 다이어그램은 여기에서 확인 가능 -
최근 많은 주목을 받은 Typst와 이 프로젝트를 비교해보면 재미있을 것 같은데, 기능 비교 매트릭스에는 Typst가 전혀 언급되지 않았다는 점이 의외임
- 예전에 봤을 때 Typst는 HTML로 출력하지 못했었음
- 지금은 Typst도 언급되어 있음
전반적으로 두 프로젝트가 매우 유사해 보임
-
비교 차트가 정확한지 궁금함 – 링크
LaTeX는 분명히 완벽한 스크립팅 기능이 있다고 생각함, 물론 사용하기 괴로운 점은 있지만
Quarkdown의 난해한 문법이 Typst보다 더 간결하고 읽기 쉽다는 주장에 회의적임
학습 곡선도 Typst보다 쉽진 않을 것이라고 생각함, 둘이 거의 비슷해 보임
LaTeX도 tex4ht로 HTML을 만들 수 있다고 생각함- 솔직히 대부분의 Markdown은 Quarkdown에서도 그대로 사용 가능함
진입 장벽이 이보다 더 낮아질 수는 없음
물론 학습 곡선이 진입 장벽이랑 같은 말은 아니지만 상당 부분 겹침
그리고 '학습 곡선'은 주관적인 특성임
비교표에 넣으면 처음부터 왜곡될 수밖에 없음
명확한 기능이 더 객관적이지만 때로는 제품 특성상 어떤 기능이 필요 없을 수 있음 - 이런 사용 사례에는 Pandoc이 최고임
- TikZ랑 pgf로 LaTeX와 TeX의 스크립트 기능이 어느 정도인지 바로 파악할 수 있음
비교 표가 명백히 부정확함
- 솔직히 대부분의 Markdown은 Quarkdown에서도 그대로 사용 가능함
-
샘플 출력물이 멋져 보임
하지만 템플릿 언어가 함수 호출이나 복잡성으로 커지는 걸 항상 썩 좋아하지 않음
물론 이 컨텍스트에서는 의미가 있을지도 모르지만
만약 다른 언어와 같이 써야 한다면, 예를 들어 서버 사이드 렌더링이나 데이터 기반 문서 생성 등에서, 두 언어를 오가면서 시간을 너무 소모하게 됨
템플릿 언어는 항상 '진짜' 언어만큼 강력하지 않음
그래서 나는 JSX나 JavaScript의 tagged template literal 같은 방식을 선호함
실제 프로그래밍 언어를 사용하면서도 문서의 컨텍스트를 이해한다면 이스케이프(XSS 같은) 걱정을 덜 수 있는 방식이 더 좋음 -
Quarto와 이 프로젝트는 어떻게 다른지 궁금함
이름도 비슷하고, 확장자도 같고, 지향점도 유사해 보이는데 기능이 오히려 적어 보임 – Quarto- Quarto는 R Markdown 생태계의 실질적 후계자임
동일한 개발자들이 개발했다고 FAQ에서 밝힘 - 나도 같은 질문을 하려고 했음
며칠 전에 친구가 모든 강의 대본을 Quarto로 다시 작성하고 프레젠테이션까지 임베드하는 걸 보여줬는데 꽤 깔끔해 보였음
Quarto가 R Studio, Jupyter Notebook과도 잘 연동된다는 점은 큰 장점임 - 이름이 비슷한 건 QuarkXPress에 대한 언급이나 연관에서 온 듯함
이런 건 수렴 진화 같은 현상이라고 생각함
- Quarto는 R Markdown 생태계의 실질적 후계자임
-
"planet"처럼 보일 수 있는 게 사실은 쿼크, 특히 다운 쿼크라는 설명이 흥미로움
Cool한 프로젝트지만 QuarkXPress라는 출판 업계의 유명 브랜드 때문에 'Quark'란 단어를 출판 시스템 명칭으로 쓰는 건 약간 위험함
관련 상표 등록 정보는 여기, 여기에서 확인 가능
(왜 같은 단어로 두 개의 상표가 등록돼 있는지도 궁금함) -
이 분야 토론 쓰레드마다 항상 "왜 LaTeX 안 써?" 류 댓글이 70%라, 나부터 확실히 말하자면
난 확실히 모던 한 Markdown 기반 조판 시스템이 필요함
라텍스를 대체하는 여러 시도가 있었으면 좋겠음
LaTeX는 정말 불편하고 옛날 방식이며, 마크업을 더 자유롭게 줄 수 있는 시스템이 있으면 좋겠음
만약 기능이 풍부해져서 문법이 길어진다 해도 Markdown보단 살짝 강력한 영역은 분명 필요함
하지만 이 프로젝트는 내가 찾던 것은 아니라고 느낌
예제를 보면 그냥 Markdown보다 조금 더 강력한 쪽에 치우쳐져 있는 듯하고, 완전히 LaTeX(혹은 Typst) 대체로는 손색
이런 종류의 문서 시스템은 '정말 부드럽게' 사용할 수 있어야 하는데, 이건 그런 느낌 아님- 그리고 JVM 기반이라 나는 설치조차 안 하고 싶음
이런 건 확산성에 비추기 좋지 않음 - 문법도 마음에 안 듦
최대한 노멀 마크다운과 호환됐으면 좋겠지만, 함수 인자 들여쓰기가 필수라 전체 문서가 들여쓰기될 것 같고, 정작 마크다운 확장점은 일반적으로 코드 블록(```plugin-name`식)이 더 자연스러움
문법 차이로 인해 문서 전체 구조를 바꿔야 할 수도 있음 - "더 나은 마크다운" 컨셉은, 개인 메모에서 출발해 점차 공개 문서로 발전하는 경우 더 적합하다고 봄
문서를 출판 목적으로 만드는 거라면 LaTeX로 그냥 작업해도 됨
가장 유용한 건 노트 테이킹 앱에 잘 통합되어 있을 때임
Emacs나 Vim에서 하는 사람도 있겠지만, 나 같은 복고파도 결국 Obsidian 등으로 넘어갔음을 고백
문서 구조를 메모 앱에서 더 잘 컨트롤하거나, 퍼블리싱 기능도 연결할 수 있는 파트가 좋을 듯
독립 실행형이라면 왜 써야 할지 의문임
그나마 Typst는 온라인 에디터라도 있음, 다들 그걸로 씀
- LaTeX는 오래된 쓰레기가 아니고, 최고의 소프트웨어 중 하나임
쓸데없는 걸 문서에 추가하지 않는 게 핵심임
- 그리고 JVM 기반이라 나는 설치조차 안 하고 싶음
-
이런 시스템(Typst 포함)은 기본적으로 논문 같은 장문의 텍스트 조판을 위한 것임
HTML의 대안이 되었으면 좋겠는데, Typst도 써봤지만 작성자들이 거의 '논문이나 장문'에만 신경 쓰는 것처럼 느껴짐
폼, 인보이스, 전단지, 명함 같은 것도 만들고 싶지만 이런 요소들은 관심 밖임
(실은 Sile을 생각한 것인데 Typst도 비슷함)
Typst가 상업적이라 깊이 안 써봤음- 언급한 폼, 인보이스 등에서 Typst를 못 쓸 특별한 이유가 있을지 모르겠음
특히 인터랙티브 폼은 이미 작업 중이라는 소식도 있고(pdf writer의 백엔드는 이미 일부 지원)
시간이 좀 지나면 Typst에서 폼 기능이 구현될 듯 – 이슈 참고 - 이 분야가 '조판'보다는 '그래픽 디자인'에 가까워서 그렇다고 생각함
인보이스나 광고지, 명함 등은 작은 요소를 정확하게 페이지 중심이나 가장자리에 배치해야 하는데, 이건 WYSIWYG 도구가 편함
텍스트 기반 조판만으로는 시행착오가 너무 많아짐
예를 들어 타블로이드는 텍스트가 사각형이 아닌 이미지나 컷에 맞춰서 흐르고 감싸야 하는데, 실제로 눈으로 확인하지 않고 좌표만 써서 작업하는 건 매우 힘듦 - Typst 온라인 에디터는 상업적이지만, Typst 자체는 Apache 2.0 라이선스로 공개되어 있음
나는 Rust로 cargo 통해 설치해서 온라인 에디터 없이 충분히 사용 중 - Typst는 로컬에서 써도 되고 상업적 부분을 아예 건너뛰면 됨
여러 종류의 문서를 만들기에 꽤 쉬움
나는 슬라이드와 유인물 제작 용도로 이미 대체제로 쓰고 있음 - 내 Typst 첫 '실사용'이 포스터였는데, LaTeX보다 훨씬 쉬웠음
이미지 감싸기나 텍스트 플로우 등 아직 몇가지 피처는 없지만, TeX에서도 이건 어렵고 Typst에도 향후 추가 예정임
포스터 예시
- 언급한 폼, 인보이스 등에서 Typst를 못 쓸 특별한 이유가 있을지 모르겠음
-
이건 그냥 reStructuredText(rST)랑 거의 똑같아 보임
Quarkdown의 함수 문법(.somefunction {인자} {인자} 바디)과 rST의 함수 문법(.. somefunction:: {인자} {인자} 바디)가 매우 유사함 -
Markdown, Quarkdown, Typst 등 너무 많고 표준화가 안된 것 같아서 결국 HTML+CSS로 회귀함
- XML도 어때?
직접 써보진 않았지만 상당히 진지하게 고민 중임
나머지 포맷들은 복잡하고 학습 곡선이 있어서 글 작성 자체를 방해함
XML은 내 태그를 맘대로 정의해서, 파서로 각주 자동 생성 등 다양한 구조를 만들 수 있음
이런 접근을 써본 사람 있는지 궁금함 - 마크다운은 기본적인 수준에선 정말 효율적임
문제는 너무 많은 사람들이 시스템을 바로 위에 얹어가면서, 애초에 '더 복잡한 것'을 해결하려 들 때 발생함
원래 단순한 용도의 시스템을 자기 딴엔 개선한다면서 사실은 한계를 못 깨닫고, 오히려 불필요한 반복과 혼란만 늘린다고 생각
기능 부족이 아니라, 설계 목적에 맞는 범위를 벗어나서 문제
심지어 윈도우즈 notepad에 서식 처리가 들어가도, 본질적으로는 개선이 아니라 생각
notepad는 본래의 역할이 있었기 때문임 - 성숙하고 신뢰성 있는 Org-mode도 있음
Emacs를 싫어하지 않는다면 좋은 선택임 - 나도 HTML, CSS, Javascript로 웹개발에서 DOM 조작하는 게 오히려 더 재밌다고 느낌
수백 개의 프레임워크와 복잡한 문법을 그만큼 외울 필요 없음
AI로 markdown to html 변환기 생성 명령만 내려도 괜찮음 - 만약 2005년 텍스트 에디터의 오토컴플리트가 태그 밸런싱이나 들여쓰기, 하이라이트만 지금처럼 잘 지원해줬으면 JSON, YAML, Markdown 같은 포맷이 이 정도로 흥하지 않았을지도 모름
2003년에 나온 The Art of Unix Programming에도 XML 직접 편집은 고통이라서 각종 포맷과 파서를 새로 만들어야 했다는 내용이 나옴
- XML도 어때?