Folio Writer 路线图
跨 Mac、iOS 和 iPad 的原生协作写作。以 Markdown 为本。专为学者打造。
已推出的功能
Mac——Folio Writer 现已在 Mac App Store 上架。原生 Markdown 编辑器,具备完整的 Scrivener 式项目组织、实时公式,以及一键编译为 PDF、Word、LaTeX 和 Typst。
现已推出
Mac 与 iOS
已上线——Mac 和 iOS 上的原生应用,支持完整的云端同步。在 Mac 上写作,在 iPad 上继续,在 iPhone 上编辑。所有更改都会在设备间即时同步。
实时协作
已上线——多位作者实时编辑,带在线状态提示、批注讨论串和修订追踪。类似 Overleaf 的工作流,但拥有原生应用的性能和离线能力。
即将推出
1.18 版
开发中——尚未发布。写作助手将支持这台 Mac 上的 ChatGPT(Codex)以及本地模型的 API 密钥,活页夹、编辑器、元数据和模板也有多项改进。正式发布前细节可能会有变化。 ↓
iPad Pro
开发中——针对更大的屏幕优化。功能完整的手稿编辑,支持触控板和键盘。分屏多任务,可同时查看参考资料和大纲。
1.18 即将推出的内容
1.18 版仍在开发中,尚未在 App Store 上架。以下说明介绍它将包含的内容;正式发布前细节可能会有变化。
写作助手
- 这台 Mac 上的 ChatGPT。新增服务商这台 Mac 上的 ChatGPT(Codex),像 Claude Code 服务商运行
claude那样运行 OpenAI 的 Codex 命令行(codex exec):用你的 ChatGPT 账户登录(codex login),无需 API 密钥,也不按 token 计费,回答会直接作为可审阅的建议回到 Folio Writer 中。codex命令会被自动找到(npm、Homebrew、Volta、你的 shell 的 PATH),你也可以在设置 ▸ 助手中指定它的路径。在 App Store 版中,它通过 Folio Helper 运行——需要 Folio Helper 1.7 或更高版本。 - 本地模型可以使用 API 密钥。Unsloth 为每个应用签发一个密钥,LM Studio 也可以设置为必须提供密钥;把它粘贴到设置 ▸ 助手 ▸ 本地模型中,它会保存在你的钥匙串里,并且只作为 bearer 令牌发送给该服务器。Ollama 不需要密钥,照常工作。服务器返回 401 或 403 时,现在会告诉你去哪里找它的密钥。
活页夹与编辑器
- 未命名文稿显示开头的文字。打开设置 ▸ 通用 ▸ 显示概要或开头文字,而不是“未命名”后,没有概要的未命名文稿会在活页夹中显示其正文的第一行——一小段围栏 div 或一个零散的段落,无需概要也能再次找到。对于未命名文稿,编辑器上方的标题行以及 Scrivenings 各节之间的分隔线会留空,而不再显示“未命名”。
- 文稿会连同其子文稿一起打开。选中一篇下面嵌套了项目的文稿时,会像文件夹那样把它们显示为一段连续的文本——相当于 Scrivener 中对一组文稿使用 Scrivenings。若想单独编辑这样的文稿,可在设置 ▸ 编辑器 ▸ 子文稿中关闭此功能。
- 方括号 span 直接显示为文字。插入点不在其中时,
[1sg]{.smallcaps}显示为 1sg——[、]以及{.class #id key=val}尾部会像其他 Markdown 分隔符一样隐藏,编辑该 span 时再显示出来。设置 ▸ 编辑器 ▸ Span 样式可以把某个 class 映射为编辑器中的一种外观——小型大写字母、粗体、斜体、下划线、等宽、着色或高亮文字——就像 Scrivener 的字符样式那样:.smallcaps和.sc默认显示为小型大写字母,.underline显示下划线;你还可以添加.name→ 某种色调、.gloss→ 斜体,以及你的过滤器所需的任何映射。预览和编译不受影响。 - 属性胶囊更低调了。
{#fig:x}、{.unnumbered}和 span 属性现在以柔和的暖灰色胶囊、淡色文字显示,而不再使用青绿色底纹——那种底纹让每个 span 和 div 看起来都像被高亮了。 - 模板文稿保留所有字段。模板文件夹中的文稿现在会在检查器和大纲中显示“元数据与编译”窗格——关键词、日期、章节类型、编译标志、章节前缀和后缀、写作目标——它携带的值会写入由它创建的每一篇文稿。
元数据与模板
- 输入时即检查 YAML。一旦前置元数据中出现 pandoc 或 Quarto 会拒绝的疏漏,元数据文稿就会显示一条不显眼的提示条——缩进中用了制表符、引号没有闭合、同一个键设置了两次、别处缩进两个空格而这里缩进三个、
|下面没有内容,或者(以 Quarto 为渲染器时)journal:写成了普通字符串。每个问题都会标明所在行;“显示”会列出它们,“隐藏”则将其收起。 - 插入 ▸ 作者条目(YAML)。格式 ▸ 插入模板 ▸ 作者条目(YAML)会在插入点处放入一个结构化的作者——姓名、电子邮件、ORCID、通讯作者标志、单位——采用模板和内置作者过滤器读取的结构,因此添加第二、第三位作者只需填空,无需记住格式。
- 文件 ▸ 新建 Lua 过滤器…。在模板 ▸ Lua 过滤器下创建一篇
.lua文稿,它基于一个示例骨架,其中已演示如何把 span 或 div 转换为 LaTeX 和 Typst,并一步完成在项目设置中的注册。那里的“内置”菜单在鼠标悬停时会解释每个过滤器,脚注也会明确说明:项目自带的过滤器会为每一位打开该项目的人运行。 - Lua 过滤器按 Lua 显示。模板 ▸ Lua 过滤器下的
.lua文稿以等宽字体打开,并带有 Lua 语法高亮——关键字、pandoc.*API 与元素名称、字符串、注释——Markdown 的各种便利功能(智能列表、#标签补全、行内表格)都不会干扰代码。它在活页夹中的图标是 ƒ。 - 新建项目会记住你上次的位置。选择器会打开你上次停留的分类,每个模板也会标明它附带的内容:注明过滤器名称的 Lua 过滤器胶囊(悬停可查看其作用)、带研究资料文件夹的模板包会显示含插图、替代内置模板的用户模板会显示你的内置模板副本。
修复
- 在活页夹中把 Lua 过滤器文稿移到另一个文件夹后,项目设置仍会指向它。
- 本身也被纳入连续文本、又带有子文稿的文稿不会再出现两次;开启 Elsevier 或 IEEE 作者过滤器进行 Typst 编译时,结构化作者信息仍可被 Typst 自己的模板读取。
为什么做原生应用?
学术写作值得比纯网页工具更好的东西。原生应用带给你:
- 离线工作——在飞机上、会议现场、咖啡馆里写作。重新联网后再同步。
- 性能——网页应用无法企及的手稿处理能力和响应速度。
- 平台集成——无缝拷贝/粘贴、访达同步、系统快捷键、触控板手势。
- 纯文本的 Markdown——你的源文件始终可读、可纳入版本控制(对 Git 友好),并且经得起时间考验。
为什么选择 Markdown?
不同于 LaTeX(Overleaf)或新语言(Typst),Markdown 早已是学术计算领域的标准:Jupyter 笔记本、R Markdown、数据科学工作流。你的手稿源文件始终是人类可读的,并能与你已在使用的工具集成。