๋ชฉ๋ก์œผ๋กœ
GitHub - iamgio/quarkdown: ๐Ÿช Markdown with superpowers: from ideas to papers, presentations, websites, books, and knowledge bases.
Service2025.06.08

GitHub - iamgio/quarkdown: ๐Ÿช Markdown with superpowers: from ideas to papers, presentations, websites, books, and knowledge bases.

์š”์•ฝ

๐Ÿช Quarkdown์€ CommonMark ๋ฐ GFM์„ ํ™•์žฅํ•œ ํ˜„๋Œ€์ ์ธ Markdown ๊ธฐ๋ฐ˜ ์กฐํŒ ์‹œ์Šคํ…œ์œผ๋กœ, Turing-complete ๊ธฐ๋Šฅ๊ณผ ๊ด‘๋ฒ”์œ„ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋™์  ์ฝ˜ํ…์ธ  ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์ด ์‹œ์Šคํ…œ์€ Markdown ์†Œ์Šค๋ฅผ HTML, PDF, ๋Œ€ํ™”ํ˜• ์Šฌ๋ผ์ด๋“œ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•์‹์œผ๋กœ ์œ ์—ฐํ•˜๊ฒŒ ์ปดํŒŒ์ผํ•˜์—ฌ ๋…ผ๋ฌธ, ์ฑ…, ์›น์‚ฌ์ดํŠธ ๋ฐ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์ œ์ž‘์— ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Quarkdown์€ ๊ฐ•๋ ฅํ•œ ์Šคํฌ๋ฆฝํŒ… ๊ธฐ๋Šฅ, ๋น ๋ฅธ ์ปดํŒŒ์ผ ์†๋„, ๊ทธ๋ฆฌ๊ณ  LaTeX ๋Œ€๋น„ ๋‚ฎ์€ ํ•™์Šต ๊ณก์„ ์„ ์ œ๊ณตํ•˜๋ฉฐ, quarkdown CLI๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฌธ์„œ๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ธ ๋‚ด์šฉ

Quarkdown์€ CommonMark ๋ฐ GFM์„ ํ™•์žฅํ•˜์—ฌ Markdown์— ํ•จ์ˆ˜๋ฅผ ๋„์ž…ํ•œ Quarkdown Flavor๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํ˜„๋Œ€์ ์ธ Markdown ๊ธฐ๋ฐ˜ ์กฐํŒ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ด ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ๊ฐœ๋…์€ versatility์— ์žˆ์œผ๋ฉฐ, Turing-completeํ•œ Markdown ํ™•์žฅ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋‹จ์ผ ์†Œ์Šค์—์„œ ์ธ์‡„ ๊ฐ€๋Šฅํ•œ ์ฑ…, ๋Œ€ํ™”ํ˜• ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•์‹์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๋ฐฉ๋ฒ•๋ก  (Core Methodology)

Quarkdown์˜ ํ•ต์‹ฌ์€ Markdown ๋‚ด์—์„œ Turing-completeํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

  • ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ตฌ๋ฌธ (Function Call Syntax):
  • Markdown ๋ฌธ์„œ ๋‚ด์—์„œ .somefunction {arg1} {arg2} Body argument์™€ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ์กด Markdown์˜ ์ •์ ์ธ ํŠน์„ฑ์„ ๋„˜์–ด ๋™์  ์ฝ˜ํ…์ธ  ์ƒ์„ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (Standard Library):
  • Quarkdown์€ layout builders, I/O, math, conditional statements, loops ๋“ฑ์„ ํฌํ•จํ•˜๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ๋ณต์žกํ•œ ๋ฌธ์„œ ๊ตฌ์กฐ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง, ๋ฐ˜๋ณต์ ์ธ ์ฝ˜ํ…์ธ  ์ƒ์„ฑ์„ Markdown ๋‚ด์—์„œ ์ง์ ‘ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ ๋ฐ ๋ณ€์ˆ˜ (User-defined Functions and Variables):
  • ์‚ฌ์šฉ์ž๋Š” Markdown ํŒŒ์ผ ๋‚ด์—์„œ ์ง์ ‘ ์ž์‹ ๋งŒ์˜ ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, .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 ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

    ์›๋ณธ ๋ณด๊ธฐ
    GitHub
    Shared by Anonymous