再见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
## Subsection
1. **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] 

mockmock

[17] 

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



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

(文:GitHubStore)

发表评论

×

下载每时AI手机APP

 

和大家一起交流AI最新资讯!

立即前往