Zettlr

Zettlr

开源Markdown编辑器及知识管理工具

Zettlr是一款开源的Markdown编辑器和知识管理工具。它支持Zettelkasten方法,提供全文搜索、引用管理和代码高亮等功能。Zettlr注重隐私保护,支持多语言,可导出多种格式。软件界面简洁专业,适合学术写作和知识管理。Zettlr免费开源,兼容Windows、macOS和Linux系统。

ZettlrMarkdown编辑器开源软件写作工具知识管理Github开源项目
<h1 align="center"> <a href="https://github.com/Zettlr/Zettlr"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/e05c036a-1186-442d-a7ab-c8096060c974.png" alt="Zettlr"/> </a> <br/> Zettlr [<em>ˈset·lər</em>] </h1> <p align="center"><strong>您的一站式出版工作台</strong>。</p> <p align="center"> <a href="https://doi.org/10.5281/zenodo.2580173"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/8a5c84fb-e805-4836-a5cb-0ac4ccd72568.svg" alt="DOI"> </a> <a href="https://www.gnu.org/licenses/gpl-3.0"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/73c27eae-e3e0-4d4e-ba10-01b594c2be56.svg" alt="许可证:GNU GPL v3"> </a> <a href="https://www.zettlr.com/download"> <img alt="GitHub 标签(最新日期)" src="https://yellow-cdn.veclightyear.com/0a4dffa0/7cfb6015-75de-4f80-b2ef-53fcb7918204.svg?label=latest"> </a> <img alt="GitHub 所有版本" src="https://yellow-cdn.veclightyear.com/0a4dffa0/afa5c855-3425-4172-8d64-9de53d81dd1a.svg"> <img alt="单元测试 / Lint" src="https://yellow-cdn.veclightyear.com/0a4dffa0/5904768d-288d-448f-a426-02f03ba2a7f6.svg"> <img alt="构建" src="https://yellow-cdn.veclightyear.com/0a4dffa0/59e342ef-fa53-4e10-9920-116efb5c6689.svg"> </p> <p align="center"> <a href="https://www.zettlr.com/" target="_blank">主页</a> | <a href="https://www.zettlr.com/download">下载</a> | <a href="https://docs.zettlr.com/" target="_blank">文档</a> | <a rel="me" href="https://fosstodon.org/@zettlr" target="_blank">Mastodon</a> | <a href="https://discord.gg/PcfS3DM9Xj" target="_blank">Discord</a> | <a href="#contributing">贡献</a> | <a href="https://www.patreon.com/zettlr" target="_blank">支持我们</a> </p>

截图

Zettlr 为您的文本带来简洁。开放式写作适应您的风格。快速信息检索找到对您重要的内容。多功能导出使您能够适应雇主或学校使用的任何出版流程。

专注于对您重要的事情。

发表,而非沉沦。

在我们的网站上了解更多

特性

  • 您的笔记属于您:Zettlr 以隐私为先
  • 引用变得简单:与您喜爱的参考文献管理器(Zotero、JabRef 等)紧密集成,并不断扩展
  • 提供十多种语言版本
  • 在专业环境中起草您的出版物,支持 LaTeX 和 Word 模板
  • 使用 PandocLaTeXTextbundle 进行简单而美观的导出
  • 代码片段允许您自动插入常用代码
  • 主题、深色模式和自定义 CSS 的完全灵活性
  • 支持多种语言的代码高亮
  • 支持最先进的知识管理技术(卡片盒笔记法
  • 强大的全文搜索帮助您随时随地找到任何内容

……最棒的是:Zettlr 是自由开源软件(FOSS)

安装

要安装 Zettlr,只需下载适用于您操作系统的最新版本。目前支持 macOS、Windows 和大多数 Linux 发行版(通过 Debian 和 Fedora 软件包以及 AppImage)。

在我们的网站和 GitHub 上,我们提供了一套适用于最常见使用场景的安装程序。我们提供 64 位安装程序以及 ARM 系统安装程序(在 macOS 生态系统中称为"Apple Silicon")。不支持 32 位。我们直接提供以下二进制文件:

  • Windows(x64)
  • macOS(Intel 和 Apple Silicon)
  • Debian 和 Fedora(x64 和 ARM)
  • AppImage(x64 和 ARM)

感谢我们的社区,我们还可以为您提供多种其他安装方式:

所有其他 Electron 支持的平台 也受支持,但您需要自行构建应用程序才能使用。

请考虑成为赞助人一次性捐赠

入门

安装 Zettlr 后,前往我们的文档了解 Zettlr。如果您更喜欢直接上手使用软件,请参阅快速入门指南

使用深色主题的 Zettlr 中央窗口

贡献

作为一个开源应用程序,Zettlr 始终欢迎来自社区的贡献。**您不需要懂得编写代码就能提供帮助!**在我们的贡献指南中可以找到您可以提供帮助的所有领域的完整概述。在这里,我们介绍了两个最需要帮助的主要领域:翻译和代码贡献。

翻译

开发团队维护英语和德语翻译,但缺乏对其他语言的充分了解。所有其他可用的翻译都是由我们的社区创建的。

Zettlr 的翻译使用 gettext 系统。这意味着翻译保存在 static/lang 目录 中的 PO 文件中。 要更新翻译,只需下载相应的语言文件并进行编辑。您可以使用简单的文本编辑器编辑 PO 文件,但如果您更喜欢更舒适的图形化编辑器,有很多可供选择。一个不错的选择是开源编辑器 POedit

一旦您对修改感到满意,请在此处打开一个更新相应文件的拉取请求。GitHub 创建了一个很棒的如何打开拉取请求的指南

贡献代码

Zettlr 是一个基于 Electron 的应用程序,因此要开始开发,您需要在电脑上安装以下内容:

  1. NodeJS。确保至少是 Node 20(lts/iron)。要测试您的版本,运行 node -v
  2. Yarn。这是项目的包管理器,因为我们不提交 package-lock.json 文件,而且许多命令需要 yarn。您可以使用 npm install -g yarn 或 Homebrew(如果您使用 macOS)全局安装它。
  3. 在 Windows 上,我们建议安装 Windows 子系统 Linux (WSL),这将使接下来的许多步骤更容易。
  4. 一些命令行工具,各种脚本需要这些工具来运行开发构建:
    • cURL(Pandoc 下载脚本需要)
    • unzip(Pandoc 下载脚本需要)
    • jq(i18n 脚本需要)
  5. 适用于您操作系统的适当构建工具链,因为 Zettlr 需要一些必须在运行应用程序之前编译的原生 C++ 模块:
    • macOS:在 macOS 上,通过 xcode-select --install 安装 XCode 命令行工具就足够了
    • Windows:在 Windows 上,您需要免费的 Visual Studio 开发工具,其中包含所需的工具
    • Linux:在 Linux 上,有各种兼容的工具链可用,有时它们已经预先安装。请参阅您发行版的手册以获取更多信息。

然后,只需克隆仓库并在本地计算机上安装依赖项:

$ git clone https://github.com/Zettlr/Zettlr.git $ cd Zettlr $ yarn install --immutable

--immutable 标志确保 yarn 会坚持使用 yarn.lock 中列出的版本,而不会尝试更新它们。

在开发过程中,热模块重载(HMR)处于活动状态,因此您可以轻松编辑渲染器的代码,并在 electron-forge 编译更改后按 F5。您可以保持开发者工具打开,以查看 HMR 何时完成加载您的更改。

我需要了解什么才能贡献代码?

为了提供代码,您应该对以下主题和/或手册有基本的了解(按重要性降序排列):

[!TIP] 查看下面的"目录结构"部分,了解 Zettlr 的具体工作方式。

开发命令

本节列出了在应用程序开发过程中可以使用的所有可用命令。这些命令在 package.json 中定义,可以通过在命令前加上 yarn 来从命令行运行。请在仓库的基本目录中运行它们。

start

使用此命令可以无忧无虑地测试您对应用程序所做的任何更改。此命令将启动应用程序,但会提供自定义配置和自定义目录。因此,它不会触及常规 Zettlr 安装使用的任何文件。

第一次运行此命令时,传递 --clean 标志以将一些测试文件复制到您的 ./resources 目录,在项目根目录中创建 test-config.yml,并使用这个干净的配置启动应用程序。然后,您可以根据自己的喜好调整 test-config.yml(这样,某些您通常总是需要设置的设置就可以预先设置,而无需打开首选项)。

每当您想将测试目录重置为初始状态(或者您删除了目录,或重新克隆了整个项目)时,请向命令传递 --clean 标志以创建或重置目录。如果您在 test-config.yml 中更改了某些内容,这也是必要的

如果您想阻止创建配置文件(例如,模拟首次启动体验),您可以向此命令传递 --no-config 标志。

您还可以向此命令传递其他命令行开关,如 --clear-cache。它们将被传递给子进程。

[!WARNING] 注意:在首次运行命令之前,您必须使用 --clean 标志运行它以首先创建目录!

另外,请查看我们的完整开发文档

package

打包应用程序,但不将其捆绑成安装程序。没有任何后缀时,此命令将为您当前的平台和架构打包应用程序。要创建特定的包(可能需要在相应的平台上运行),可以使用以下后缀:

  • package:mac-x64(基于 Intel 的 Mac)
  • package:mac-arm(基于 Apple Silicon 的 Mac)
  • package:win-x64(基于 Intel 的 Windows)
  • package:linux-x64(基于 Intel 的 Linux)
  • package:linux-arm(基于 ARM 的 Linux)

生成的应用程序包存储在 ./out 中。

[!IMPORTANT] 此命令将跳过类型检查以加快构建速度,因此我们建议在打包之前运行 lint 以确保没有错误。

release:{platform-arch}

打包应用程序,然后将其捆绑成相应平台和架构的安装程序。要创建这样的捆绑包(可能需要在相应的平台上运行),{platform-arch} 需要是以下值之一:

  • release:mac-x64(基于 Intel 的 Mac)
  • release:mac-arm(基于 Apple Silicon 的 Mac)
  • release:win-x64(基于 Intel 的 Windows)
  • release:linux-x64(基于 Intel 的 Linux)
  • release:linux-arm(基于 ARM 的 Linux)

生成的安装包存储在 ./release 中。

[!NOTE] 虽然您可以直接使用 package 命令为您的平台打包而不需要任何后缀,但在创建发布捆绑包时,您需要指定平台和架构,因为 electron-builder 否则会在 app.asar 中包含开发依赖项,导致应用程序变得臃肿。

csl:refresh

这会下载应用程序附带的引文样式语言(CSL)文件,并将它们分别放置在 static/csl-localesstatic/csl-styles 目录中。

[!NOTE] 该命令用于仓库中不时运行的自动化工作流,以执行此操作。请勿将更新后的文件提交到仓库。相反,每当你执行 git fetch 时,都会下载更新后的文件。

lint

运行 ESLint。像 Visual Studio Code 这样的应用程序会自动在后台对你打开的文件运行 ESLint。此命令会在整个代码库中运行它们。请确保在提交拉取请求之前运行此命令。

[!NOTE] 该命令将在每个拉取请求上自动运行,以检查你的代码是否存在不一致之处。

shortcut:install

在你的应用程序中创建一个 .desktop 文件,使你能够快速启动从源代码编译的应用程序。这需要 Linux 系统。要使用新的更改,只需同步仓库,再次运行 package,然后就可以使用了。

[!WARNING] 我们提供此命令是为了方便。除非你知道自己在做什么,否则不应直接运行从开发分支的 HEAD 提交编译的代码。然而,在某些情况下,如果你知道可能会出现什么问题并能采取适当的预防措施,此命令可能会有用。

shortcut:uninstall

删除由 shortcut:install 创建的 .desktop 文件。

[!NOTE] 每次重新编译二进制文件时,你不必卸载并重新安装快捷方式。只需确保在重新编译之前关闭 Zettlr。只有在模板(在 scripts/assets/zettlr-dev.desktop 中)发生变化时,你才需要重新安装快捷方式。

test

这会运行 ./test 目录中的单元测试。请确保在提交拉取请求之前运行此命令,因为每次你向拉取请求提交内容时都会运行此命令,这样你就可以确保你的更改不会破坏任何测试,从而使整个拉取请求过程更加顺利。

test-gui

参见 start

[!IMPORTANT] 此命令已被弃用,只是 start 的别名。请使用 start 代替。

目录结构

Zettlr 是一个成熟的应用程序,在其开发过程中积累了数百个目录。由于没有任何指导就很难为应用程序做出贡献,我们编写了一个简短的目录描述,说明它们之间的相互关系。

<!-- 文件树由在根目录中运行 `tree -d -L 4 -I node_modules .` 生成 -->
.
├── out                         # 运行任何 `package` 命令后包含未打包的二进制文件
├── release                     # 运行任何 `release` 命令后包含可分发文件
├── resources                   # 通用资源文件
│   ├── NSIS                    # Windows 安装程序位图
│   ├── icons                   # 各种图标格式
│   ├── screenshots             # 包含主要截图
├── scripts                     # 构建过程和 CI 管道中使用的脚本
│   ├── assets                  # 脚本文件的资源
│   └── test-gui                # 用于 `test-gui` 命令的完整文件树
├── source                      # 这是实际的源文件树
│   ├── app                     # 主进程组件
│   │   ├── service-providers   # 处理大部分业务逻辑的服务提供者
│   │   └── util                # 主进程的实用函数
│   ├── common                  # 各种渲染进程之间共享的文件
│   │   ├── img                 # 在各处使用的图像
│   │   ├── modules             # 共享模块
│   │   │   ├── markdown-editor # 主 Markdown 编辑器
│   │   │   ├── markdown-utils  # MD 实用工具,如 md2html 转换器
│   │   │   ├── preload         # Electron 预加载文件
│   │   │   └── window-register # 每个渲染器在设置期间运行
│   │   ├── util                # 通用实用函数
│   │   └── vue                 # 共享 Vue 组件
│   ├── pinia                   # 渲染器状态管理
│   ├── types                   # 仅类型目录;已弃用
│   ├── win-about               # 关于对话框窗口
│   ├── win-assets              # 资源管理器
│   ├── win-error               # 错误窗口
│   ├── win-log-viewer          # 日志查看器
│   ├── win-main                # 主窗口
│   ├── win-paste-image         # 粘贴图像对话框
│   ├── win-preferences         # 首选项窗口
│   ├── win-print               # 打印预览
│   ├── win-project-properties  # 项目属性
│   ├── win-splash-screen       # 启动画面
│   ├── win-stats               # 统计窗口
│   ├── win-tag-manager         # 标签管理器
│   └── win-update              # 更新程序
├── static                      # 包含静态资源
│   ├── csl-locales             # CSL 语言环境文件
│   ├── csl-styles              # CSL 样式
│   ├── defaults                # 默认的默认值/Pandoc 配置文件
│   ├── dict                    # 随应用程序一起提供的字典
│   ├── fonts                   # 随应用程序一起提供的字体
│   ├── lang                    # 语言和 i18n 相关文件
│   ├── lua-filter              # 默认 Lua 过滤器
│   └── tutorial                # 各种语言的教程文件
└── test                        # 单元测试

模块和服务提供者的区别

你会注意到 Zettlr 同时包含"模块"和"服务提供者"。两者的区别很简单:服务提供者在主进程中运行,完全自主,同时为整个应用程序提供功能。另一方面,模块提供必须由用户操作触发的功能(例如导出器和导入器)。

应用程序生命周期

每当你运行 Zettlr 时,将执行以下步骤:

  1. 执行 source/main.ts
  2. 环境检查(source/app/lifecycle.ts::bootApplication
  3. 启动服务提供者(source/app/lifecycle.ts::bootApplication
  4. 启动主应用程序(source/main/zettlr.ts
  5. 加载文件树和文档
  6. 显示主窗口

当你关闭应用程序时,将运行以下步骤:

  1. 关闭除主窗口之外的所有窗口
  2. 尝试关闭主窗口
  3. 关闭主应用程序(source/main/zettlr.ts::shutdown
  4. 关闭服务提供者(source/app/lifecycle.ts::shutdownApplication
  5. 退出应用程序

在应用程序开发期间(yarn startyarn test-gui),将运行以下步骤:

  1. Electron forge 将分别为主进程和每个渲染进程编译代码(因为这些是独立的进程),使用 TypeScript 和 webpack 进行编译和转译。
  2. Electron forge 将该代码放入 .webpack 目录,用适当的入口点替换你可以在窗口管理器的"create"方法中找到的常量。
  3. Electron forge 将启动几个开发服务器以提供热模块重载(HMR),然后实际启动应用程序。

每当构建应用程序时,将运行以下步骤:

  1. Electron forge 将执行上述步骤 1 和 2,但不是运行应用程序,而是将生成的代码打包成一个功能性的应用程序包。
  2. Electron builder 然后将这些预构建的包装入特定平台的安装程序(DMG 文件、Windows 安装程序或 Linux 包)。

Electron forge 将把打包的应用程序放入 ./out 目录,而 Electron builder 将把安装程序放入 ./release 目录。

命令行开关

Zettlr 二进制文件具有一些命令行开关,你可以将其用于不同目的。

--launch-minimized

此 CLI 标志将指示 Zettlr 在启动时不显示主窗口。这对创建自动启动项很有用。在这种情况下,在系统启动时使用此标志启动 Zettlr 将确保你只能在托盘中看到其图标。 由于这意味着需要在以这种方式启动应用程序时将其运行在托盘栏或通知区域中,它会自动将相应的设置 system.leaveAppRunning 设为 true。

[!注意] 此标志对不支持在托盘栏或通知区域显示图标的 Linux 系统无效。

--clear-cache

这将指示文件系统抽象层在启动时完全清除其缓存。这可用于缓解与代码库变更相关的问题。为确保与缓存中存储的信息的任何更改兼容,当 config.json 中的版本字段与 package.json 中的不匹配时,缓存也会自动清除。这意味着,只要你没有在 test-config.yml 中显式设置 version 字段,每次运行 yarn test-gui 时缓存都会被清除。

[!提示] 如果你只是想随意清除缓存以进行故障排除,你也可以通过选择"帮助"菜单中的相应菜单项来清除缓存,这样可以避免你处理任何技术性问题。

--data-dir=路径

使用此开关指定自定义数据目录,该目录存放你的配置文件。如果不使用此开关,数据目录默认为 %AppData%/Zettlr(在 Windows 10 及更高版本上),~/.config/Zettlr(在 Linux 上),或 ~/Library/Application Support/Zettlr(在 macOS 上)。路径可以是绝对路径或相对路径。相对路径的基准将是二进制文件的目录(运行打包应用程序时)或仓库根目录(运行未打包的应用程序时)。如有必要,记得转义空格或用引号括起路径。在这种情况下,~ 字符不会被展开为表示主目录,所以如果需要,请确保传递完整的主目录路径。由于 Electron 的一个小 bug,会在默认数据目录中创建一个空的 Dictionaries 子目录,但这不会影响功能。

--disable-hardware-acceleration

此开关会导致 Zettlr 禁用硬件加速,这在某些设置中可能是必要的。有关为什么添加此标志的更多信息,请参见问题 #2127

VSCode 扩展推荐

本仓库利用了 Visual Studio Code 的推荐扩展功能。这意味着:如果你使用 VS Code 并首次打开仓库,VS Code 会告诉你仓库推荐安装一些扩展。如果你使用 Zettlr,这些扩展是推荐的,它们将使贡献变得更加容易。推荐在 .vscode/extensions.json 文件中指定。

由于安装扩展有时是个人喜好的问题,我们在该文件中为每个推荐的扩展添加了简短描述,解释为什么我们推荐它。这样你可以自行决定是否要安装这些扩展(例如,如果你不处理仓库中提供的 SVG 文件,SVG 扩展就不是必要的)。

如果你选择不一次性安装所有推荐的扩展(我们建议这样做),VS Code 会在扩展侧边栏中显示推荐,这样你就可以先决定安装哪些扩展,然后手动安装你想要的扩展。

[!提示] 使用与核心开发团队相同的扩展将使代码整体更加一致,因为你将得到相同的视觉反馈。

许可证

本软件通过 GNU GPL v3 许可证 授权。

品牌(包括名称、图标和所有可识别 Zettlr 的元素)被排除在外,保留所有权利。如果你想分叉 Zettlr 开发另一个应用程序,请随意,但请更改名称和图标。阅读有关 logo 使用的信息

编辑推荐精选

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成热门AI工具AI图像AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具使用教程AI营销产品酷表ChatExcelAI智能客服
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

数据安全AI助手热门AI工具AI辅助写作AI论文工具论文写作智能生成大纲
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

热门AI工具AI办公办公工具智能排版AI生成PPT博思AIPPT海量精品模板AI创作
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

下拉加载更多