安爸-超级家庭

再见Latex,基于Markdown的多功能排版系统Quarkdown

安爸 发布于

项目简介

Quarkdown 是一种基于 Markdown 的现代排版系统,围绕多功能性这一核心概念设计,能够无缝地将项目编译成适合打印的书籍或交互式演示文稿。通过功能强大的图灵完备的 Markdown 扩展,确保您的想法能够自动转化为纸质文档。

原始来源:Attention Is All You Need

Quarkdown 风格源于 CommonMark 和 GFM 的扩展,为 Markdown 增加了函数以及许多其他语法扩展。

这是一个函数调用:

ounter(lineounter(line .somefunction {arg1} {arg2}     Body argument

凭借不断扩展的标准库[1],可能性无限,标准库提供布局构建器、输入输出、数学运算、条件语句和循环等功能。

还不够? 您仍然可以在 Markdown 中定义自己的函数和变量——甚至可以创建供大家使用的出色库。

ounter(lineounter(lineounter(lineounter(lineounter(line .function {greet}     to from:     **Hello, .to** from .from! .greet {world} from:{iamgio}

结果:Hello, world from iamgio!

这种开箱即用的脚本支持功能为复杂和动态内容的实现打开了大门,而这些内容用原生 Markdown 是无法实现的。

结合实时预览和 :zap: 快速编译速度,Quarkdown 简直让工作变得轻而易举。

查看 wiki[2] 了解更多关于该语言及其功能的信息。


查看演示演示文稿 这里

由 Quarkdown 自身构建 — 源代码

(建议使用桌面视图)


如您所期望的简单……

灵感来源:附近超大质量黑洞的 X 射线闪光加速神秘莫测

如您所需的复杂。

目标

  • HTML
    • :white_check_mark: 纯输出(默认)
    • :white_check_mark: 幻灯片 通过 reveal.js[3]
    • :white_check_mark: 分页(书籍、文章) 通过 paged.js[4]
      分页文档需要在 Web 服务器上渲染以在浏览器中显示。请参阅下面的 `-p`[5] 选项。
  • PDF
    • :white_check_mark: HTML 支持的所有文档类型和功能在导出为 PDF 时也同样支持。
    • 查看 wiki 的 PDF 导出[6] 页面了解更多信息。

可以通过在源文件中调用 `.doctype` 函数[7] 来设置所需的文档类型:

  • .doctype {slides}
  • .doctype {paged}

对比

Quarkdown Markdown LaTeX AsciiDoc MDX
简洁易读 :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark:
完整的文档控制 :white_check_mark: :x: :white_check_mark: :x: :x:
脚本支持 :white_check_mark: :x: 部分 :x: :white_check_mark:
书籍/文章导出 :white_check_mark: :x: :white_check_mark: :white_check_mark: 第三方支持
演示文稿导出 :white_check_mark: :x: :white_check_mark: :white_check_mark: 第三方支持
目标格式 HTML, PDF HTML PDF, PostScript HTML, PDF, ePub HTML
LaTeX Quarkdown
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line\tableofcontents\section{Section}\subsection{Subsection}\begin{enumerate}    \item \textbf{First} item    \item \textbf{Second} item\end{itemize}\begin{center}    This text is \textit{centered}.\end{center}\begin{figure}[!h]    \centering    \begin{subfigure}[b]        \includegraphics[width=0.3\linewidth]{img1.png}    \end{subfigure}    \begin{subfigure}[b]        \includegraphics[width=0.3\linewidth]{img2.png}    \end{subfigure}    \begin{subfigure}[b]        \includegraphics[width=0.3\linewidth]{img3.png}    \end{subfigure}\end{figure} ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line.tableofcontents# Section## Subsection1. **First** item2. **Second** item.center    This text is _centered_..row alignment:{spacebetween}    ![Image 1](img1.png)    ![Image 2](img2.png)    ![Image 3](img3.png)

入门指南

安装

从 releases[8] 页面下载 quarkdown.zip,或者使用 gradlew distZip 构建,并解压缩。

  • bin 目录包含可执行脚本。可选地,将其添加到您的 PATH 中可以更方便地访问 Quarkdown。
  • lib/qmd 目录包含可以导入到项目中的 .qmd 库。

需要 Java 17 或更高版本。

创建项目

运行 quarkdown create [directory] 将启动基于提示的项目向导,使设置新的 Quarkdown 项目变得前所未有的快捷,所有元数据[9]和初始内容已经准备就绪。

有关项目创建器的更多信息,请查看其 wiki 页面[10]。

或者,您可以手动创建一个 .qmd 源文件并从头开始。

编译

运行 quarkdown c file.qmd 将编译给定的文件并将输出保存到文件中。

如果项目由多个源文件组成,则目标文件必须是根文件,即包含其他文件的文件。

  • 如何包含其他文件?[11]

如果您想熟悉 Quarkdown,quarkdown repl 可以让您在交互式 REPL 模式中进行尝试。

选项

  • -p--preview: 编译后启用自动内容重新加载。
    如果 webserver[12] 尚未运行,则会启动并在默认浏览器中打开文档。
    这是在浏览器中渲染分页文档所必需的。
  • -w--watch: 每当源目录中的文件发生更改时重新编译源文件。

[!TIP] 结合 -p -w 可实现***实时预览***!

  • --pdf: 生成 PDF 文件。在 wiki 的 *PDF 导出*[13] 页面了解更多信息。
  • -o <dir>--output <dir>: 设置输出文件的目录。默认为 ./output
  • -l <dir>--libs <dir>: 设置可以加载外部库的目录。默认为 <安装目录>/lib/qmd。 (?)[14]
  • -r <renderer>--render <renderer>: 设置目标渲染器。默认为 html。接受的值:
    • html
    • html-pdf(等同于 -r html --pdf
  • --server-port <port>: 可选地自定义本地 Web 服务器的端口。默认为 8089
  • --pretty: 生成格式美观的输出代码。这对于调试或更容易阅读输出代码很有用, 但在生产环境中应禁用,因为结果可能会影响视觉效果。
  • --clean: 在生成新文件之前删除输出目录的内容。破坏性操作。
  • --strict: 如果发生错误,则强制程序退出。在非严格模式下,错误会以框的形式显示在文档中。
  • --no-media-storage: 关闭媒体存储系统。 (?)[15]
  • -Dloglevel=<level> (JVM 属性): 设置日志级别。如果设置为 warning 或更高,则不打印输出内容。

模拟文档

Mock,用 Quarkdown 编写,是该语言提供的视觉元素的全面集合,非常适合探索和理解其关键功能——同时通过具体的页面或幻灯片形式进行实践和实验。

  • 文档的源文件位于 `mock`[16] 目录中,可以通过 quarkdown c mock/main.qmd -p 进行编译。
  • 为所有可能的主题组合生成的 PDF 成品可在 `generated`[17] 分支中查看。

项目地址

https://github.com/iamgio/quarkdown/blob/main/README.md

参考资料

[1]

标准库: quarkdown-stdlib/src/main/kotlin/com/quarkdown/stdlib

[2]

wiki: https://github.com/iamgio/quarkdown/wiki

[3]

reveal.js: https://revealjs.com

[4]

paged.js: https://pagedjs.org

[5]

-p: #options

[6]

PDF 导出: https://github.com/iamgio/quarkdown/wiki/pdf-export

[7]

.doctype 函数: https://github.com/iamgio/quarkdown/wiki/document-metadata

[8]

releases: https://github.com/iamgio/quarkdown/releases

[9]

directory]`** 将启动基于提示的项目向导,使设置新的 Quarkdown 项目变得前所未有的快捷,所有[元数据: https://github.com/iamgio/quarkdown/wiki/document-metadata

[10]

wiki 页面: https://github.com/iamgio/quarkdown/wiki/cli%3A-project-creator

[11]

如何包含其他文件?: https://github.com/iamgio/quarkdown/wiki/including-other-quarkdown-files

[12]

webserver: https://github.com/iamgio/quarkdown/wiki/cli%3A-webserver

[13]

PDF 导出: https://github.com/iamgio/quarkdown/wiki/pdf-export

[14]

(?): https://github.com/iamgio/quarkdown/wiki/importing-external-libraries

[15]

(?): https://github.com/iamgio/quarkdown/wiki/media-storage

[16]

mock: mock

[17]

generated: https://github.com/iamgio/quarkdown/tree/generated/pdf/mock

扫码加入技术交流群,备注「开发语言-城市-昵称

(文:GitHubStore)

再见Latex,基于Markdown的多功能排版系统Quarkdown最先出现在每时AI


扫描二维码,在手机上阅读