GitHub - iamgio/quarkdown: ๐ช Markdown with superpowers: from ideas to papers, presentations, websites, books, and knowledge bases.
ํต์ฌ ํฌ์ธํธ
- 1Quarkdown์ CommonMark ๋ฐ GFM์ ํ์ฅํ ํ๋์ ์ธ Markdown ๊ธฐ๋ฐ ์กฐํ ์์คํ ์ผ๋ก, Turing-complete ๊ธฐ๋ฅ๊ณผ ๊ด๋ฒ์ํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๋์ ์ฝํ ์ธ ์์ฑ์ ์ง์ํฉ๋๋ค.
- 2์ด ์์คํ ์ Markdown ์์ค๋ฅผ HTML, PDF, ๋ํํ ์ฌ๋ผ์ด๋ ๋ฑ ๋ค์ํ ํ์์ผ๋ก ์ ์ฐํ๊ฒ ์ปดํ์ผํ์ฌ ๋ ผ๋ฌธ, ์ฑ , ์น์ฌ์ดํธ ๋ฐ ํ๋ ์ ํ ์ด์ ์ ์์ ํ์ฉ๋ ์ ์์ต๋๋ค.
- 3Quarkdown์ ๊ฐ๋ ฅํ ์คํฌ๋ฆฝํ ๊ธฐ๋ฅ, ๋น ๋ฅธ ์ปดํ์ผ ์๋, ๊ทธ๋ฆฌ๊ณ LaTeX ๋๋น ๋ฎ์ ํ์ต ๊ณก์ ์ ์ ๊ณตํ๋ฉฐ, `quarkdown` CLI๋ฅผ ํตํด ์ฝ๊ฒ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ๋ฌธ์๋ฅผ ์ปดํ์ผํ ์ ์์ต๋๋ค.
Quarkdown์ CommonMark ๋ฐ GFM์ ํ์ฅํ์ฌ Markdown์ ํจ์๋ฅผ ๋์
ํ Quarkdown Flavor๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํ๋์ ์ธ Markdown ๊ธฐ๋ฐ ์กฐํ ์์คํ
์
๋๋ค. ์ด ์์คํ
์ ํต์ฌ ๊ฐ๋
์ versatility์ ์์ผ๋ฉฐ, Turing-completeํ Markdown ํ์ฅ ๊ธฐ๋ฅ์ ํตํด ๋จ์ผ ์์ค์์ ์ธ์ ๊ฐ๋ฅํ ์ฑ
, ๋ํํ ํ๋ ์ ํ
์ด์
๋ฑ ๋ค์ํ ํ์์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์ํํ๊ฒ ์ปดํ์ผํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
ํต์ฌ ๋ฐฉ๋ฒ๋ก (Core Methodology)
Quarkdown์ ํต์ฌ์ Markdown ๋ด์์ Turing-completeํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฐ ์์ต๋๋ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์ปค๋์ฆ์ ํตํด ๊ตฌํ๋ฉ๋๋ค.
- ํจ์ ํธ์ถ ๊ตฌ๋ฌธ (Function Call Syntax):
.somefunction {arg1} {arg2} Body argument์ ๊ฐ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค. ์ด๋ ๊ธฐ์กด Markdown์ ์ ์ ์ธ ํน์ฑ์ ๋์ด ๋์ ์ฝํ
์ธ ์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.- ํ์ฅ ๊ฐ๋ฅํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Standard Library):
layout builders, I/O, math, conditional statements, loops ๋ฑ์ ํฌํจํ๋ ๊ด๋ฒ์ํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ๋ณต์กํ ๋ฌธ์ ๊ตฌ์กฐ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์กฐ๊ฑด๋ถ ๋ ๋๋ง, ๋ฐ๋ณต์ ์ธ ์ฝํ
์ธ ์์ฑ์ Markdown ๋ด์์ ์ง์ ์ํํ ์ ์์ต๋๋ค.- ์ฌ์ฉ์ ์ ์ ํจ์ ๋ฐ ๋ณ์ (User-defined Functions and Variables):
.function {greet} to from: **Hello, .to** from .from!์ ๊ฐ์ด ํจ์๋ฅผ ์ ์ํ๊ณ , .greet {world} from:{iamgio}์ ๊ฐ์ด ํธ์ถํ์ฌ ๋์ ์ผ๋ก "Hello, world from iamgio!"์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ scripting ๋ฅ๋ ฅ์ ๋ถ์ฌํ์ฌ vanilla Markdown์ผ๋ก๋ ๋ถ๊ฐ๋ฅํ ๋ณต์กํ๊ณ ๋์ ์ธ ์ฝํ
์ธ ๋ฅผ ์์ฑํ ์ ์๋๋ก ํฉ๋๋ค.์ฃผ์ ํน์ง ๋ฐ ๊ธฐ๋ฅ (Key Features and Capabilities)
- ๋ค๋ชฉ์ ์ถ๋ ฅ (Versatile Targets): Quarkdown์ ๋ค์ํ ์ถ๋ ฅ ํ์์ ์ง์ํฉ๋๋ค.
HTML Plain: ์ ์ ์น์ฌ์ดํธ ๋ฐ ์ง์ ๊ด๋ฆฌ(์: Notion/Obsidian ์คํ์ผ)์ ์ ํฉํ ์ฐ์์ ์ธ ํ๋ฆ์ ๊ฐ์ง ๋ฌธ์.Paged via paged.js: paged.js๋ฅผ ํ์ฉํ์ฌ ์ธ์์ฉ ์์ , ๋ ผ๋ฌธ, ๊ธฐ์ฌ์ ์ต์ ํ๋ ํ์ด์ง ๊ธฐ๋ฐ ๋ฌธ์.Slides via reveal.js: reveal.js๋ฅผ ์ฌ์ฉํ์ฌ ๋ํํ ํ๋ ์ ํ ์ด์ .PDF: ๋ชจ๋ HTML ๋ฌธ์ ์ ํ ๋ฐ ๊ธฐ๋ฅ์ด PDF ๋ด๋ณด๋ด๊ธฐ์์ ์ง์๋ฉ๋๋ค.
.doctype {plain}, .doctype {paged}, .doctype {slides} ํจ์ ํธ์ถ์ ํตํด ์ค์ ํ ์ ์์ต๋๋ค.
- ๊ฐ๋ฐ์ ๊ฒฝํ (Developer Experience):
live preview,๋น ๋ฅธ ์ปดํ์ผ ์๋(โก fast compilation speed),๊ฐ๋ ฅํ VS Code extension์ ์ ๊ณตํ์ฌ ํ์ ๋ ผ๋ฌธ, ์์ , ์ง์ ๊ธฐ๋ฐ ๋๋ ๋ํํ ํ๋ ์ ํ ์ด์ ์์ ์ ํจ์จ์ ์ ๋๋ค. - ๊ฐ๊ฒฐํ๊ณ ๊ฐ๋
์ฑ (Concise and Readable): LaTeX์ ๋น๊ตํ์ ๋, ๋ณต์กํ ๋ฌธ์ ๊ตฌ์กฐ(์: ๋ชฉ๋ก, ์ด๋ฏธ์ง ๋ฐฐ์ด)๋ฅผ Markdown์ ๊ฐ๊ฒฐํ ๊ตฌ๋ฌธ๊ณผ Quarkdown์ ํจ์๋ฅผ ํตํด ๋์ฑ ์ง๊ด์ ์ผ๋ก ํํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, LaTeX์ \begin{center} This text is \textit{centered}. \end{center}๋ Quarkdown์์
.center This text is _centered_ .๋ก ํํ๋ฉ๋๋ค.
์ค์น ๋ฐ ์ฌ์ฉ๋ฒ (Installation and Usage)
- ์ค์น: Linux/macOS์์๋
curl์คํฌ๋ฆฝํธ๋ Homebrew๋ฅผ ํตํด ์ค์นํ ์ ์์ผ๋ฉฐ, Windows์์๋ Scoop์ ํตํด ์ค์นํ ์ ์์ต๋๋ค. GitHub Actions ํตํฉ์ ์ํsetup-quarkdown๋ ์ ๊ณต๋ฉ๋๋ค. Java 17+, Node.js, npm, Puppeteer๊ฐ ํ์ํฉ๋๋ค. - ํ๋ก์ ํธ ์์ฑ:
quarkdown create [directory]๋ช ๋ น์ด๋ฅผ ํตํด ํ๋กฌํํธ ๊ธฐ๋ฐ์ ํ๋ก์ ํธ ๋ง๋ฒ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ Quarkdown ํ๋ก์ ํธ๋ฅผ ๋น ๋ฅด๊ฒ ์ค์ ํ ์ ์์ต๋๋ค. - ์ปดํ์ผ:
quarkdown c file.qd๋ช ๋ น์ด๋ก ์์ค ํ์ผ์ ์ปดํ์ผํ๋ฉฐ,-p๋๋--preview์ต์ ์ผ๋ก ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ์ฑํํ๊ณ ,-w๋๋--watch์ต์ ์ผ๋ก ์์ค ๋ณ๊ฒฝ ์ ์๋ ์ฌ์ปดํ์ผ์ ํ ์ ์์ต๋๋ค.-p -w์กฐํฉ์ผ๋กlive preview๋ฅผ ๊ตฌํํฉ๋๋ค.--pdf์ต์ ์ผ๋ก PDF ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค.
๋ผ์ด์ ์ค (License)
๊ธฐ๋ณธ์ ์ผ๋ก Quarkdown๊ณผ ๊ทธ ๋ชจ๋์ GNU GPLv3 ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฅด์ง๋ง, quarkdown-cli ๋ฐ quarkdown-lsp ๋ชจ๋๊ณผ ๋ฐ์ด๋๋ฆฌ๋ GNU AGPLv3 ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ
๋๋ค.