1. 从 Markdown 到 PDF,为什么总在最后一步卡住
Markdown 写作本身很轻,真正让人头疼的是导出 PDF 那一下。你可能已经习惯了用 Typora 边写边看,或者用 VS Code 配一堆插件,但一到导出环节,中文乱码、公式丢失、代码块高亮消失、字体忽大忽小,各种问题就冒出来了。更麻烦的是,现在很多人写文档时会顺手让 AI 帮忙润色、补全、翻译,结果每个工具都要单独填一次 API Key,配置散落在不同文件里,换台机器就得重新折腾一遍。
这篇内容聚焦的就是这条完整链路:从 Markdown 写作工具的选择,到导出 PDF 的几种可行方案,再到用 TaoToken 统一 Key 接入 AI 辅助写作工具的配置骨架和连通性验证。适合经常写技术文档、课程讲义、项目说明,并且希望把 AI 能力顺手接进写作流程的人。我会把 pandoc、Typora、VS Code 这几条路都走一遍,给出可以直接复制的配置片段,最后用一条 curl 命令确认通道是否真的通了。
先说结论:如果你只是偶尔导出,Typora 内置的 PDF 导出最省事;如果你要批量处理、自动化构建,pandoc 是绕不开的;如果你已经在 VS Code 里写代码和文档,Markdown Preview Enhanced 配合浏览器打印是最稳的。而 AI 辅助写作这一层,用 TaoToken 的统一 Key 可以让你在多个工具之间复用同一套接入配置,不用每个工具都去单独申请和管理密钥。
2. TaoToken 前置:统一 Key 与 API 通道是什么
TaoToken 做的事情可以理解成一个统一的模型调用入口。你不需要在 Typora、VS Code、命令行脚本里分别配置不同厂商的 Key,而是用同一个 API Key 和同一个 Base URL,让这些工具都指向同一个通道。对于写文档时想调用模型做润色、摘要、翻译的场景来说,这意味着你只需要维护一份配置。
它的 API 地址是https://taotoken.net/api,官网是https://taotoken.net/?utm_source=taotoken_aicg_blog_end。注意 API 地址后面不加 UTM 参数,直接用于程序调用;官网链接带 UTM 是方便你从这篇内容跳转过去注册和查看文档。
你需要提前准备的东西不多:一个 TaoToken 账号,一个在控制台生成的 API Key,以及你想接入的工具。Key 的生成入口在控制台的 API Keys 页面,模型对话入口可以用来快速测试模型是否可用,Coding Plan 适合长期编码和 Agent 场景,接入文档则给出了不同语言和工具的调用示例。
这里要强调一点:TaoToken 是合规的 API 通道,不是那种来路不明的中转。你拿到的 Key 应该妥善保管,不要直接提交到公开仓库。下面所有配置里的sk-xxxxxx都请替换成你自己的真实 Key。
3. 可复制配置:settings.json 与 config.toml 骨架
这一节给出两个最常见的配置文件骨架。一个是 VS Code 的settings.json,用于把 AI 辅助写作插件指向 TaoToken;另一个是config.toml,适合命令行工具或某些支持 TOML 配置的编辑器。
先看 VS Code 的settings.json。假设你用的是某个支持自定义 OpenAI 兼容接口的 Markdown 辅助插件,配置大致如下:
{ "aiWriter.apiBase": "https://taotoken.net/api", "aiWriter.apiKey": "sk-xxxxxx", "aiWriter.model": "gpt-4o-mini", "aiWriter.temperature": 0.7, "aiWriter.maxTokens": 2048, "markdown-pdf.type": ["pdf"], "markdown-pdf.outputDirectory": "./output" }这里的关键是apiBase指向https://taotoken.net/api,apiKey填你在控制台生成的 Key。不同插件的字段名可能不一样,有的叫baseUrl,有的叫endpoint,你按插件文档对应替换即可。model字段填你实际要用的模型名,建议先用一个便宜的小模型做连通性测试。
再看config.toml,适合一些命令行 AI 工具或者支持 TOML 的编辑器:
[api] base_url = "https://taotoken.net/api" api_key = "sk-xxxxxx" model = "gpt-4o-mini" timeout = 60 [export] format = "pdf" output_dir = "./dist" pandoc_path = "/usr/local/bin/pandoc"这个骨架里,[api]段负责模型调用,[export]段负责导出配置。如果你用 pandoc 做 PDF 导出,可以把pandoc_path指向你的实际安装路径。Windows 上可能是C:\\Program Files\\Pandoc\\pandoc.exe,macOS 上用which pandoc查一下。
配置写完后,不要急着在编辑器里点按钮。先用命令行验证通道是否通,这样能把配置问题和网络问题分开排查。
4. 验证请求:一条 curl 确认通道可用
在把 Key 填进各种工具之前,我建议先用 curl 做一次最小请求。这样如果后面编辑器里报错,你能确定是工具配置问题,而不是 Key 或通道本身的问题。
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-xxxxxx" \ -d '{ "model": "gpt-4o-mini", "messages": [ {"role": "user", "content": "用一句话说明 Markdown 转 PDF 的核心步骤"} ], "max_tokens": 100 }'如果通道正常,你会收到一个 JSON 响应,里面choices[0].message.content就是模型返回的内容。如果返回 401,说明 Key 不对;返回 404,检查一下 URL 是不是写成了https://taotoken.net/api后面多加了/v1之外的东西;返回超时,先确认本机网络能正常访问这个域名。
验证通过后,再回到编辑器里配置。这样你心里有底:通道是通的,剩下的就是工具侧的字段对应问题。
接下来验证 PDF 导出链路。以 pandoc 为例,先写一个最简单的 Markdown 文件:
# 测试文档 这是一段中文测试。 ```python print("hello")然后执行: ```bash pandoc test.md -o test.pdf --pdf-engine=xelatex -V CJKmainfont="Noto Sans CJK SC"这里--pdf-engine=xelatex和CJKmainfont是解决中文问题的关键。如果你用默认的 pdflatex,中文大概率会报错或显示为空白。Noto Sans CJK SC需要你本机已经安装了这个字体,macOS 上可以用PingFang SC,Windows 上可以用Microsoft YaHei。
如果这条命令成功生成了test.pdf,说明你的 pandoc 链路是通的。接下来就可以把 AI 辅助写作和导出串起来了:用编辑器里的 AI 插件润色 Markdown,保存后用 pandoc 批量导出。
5. 本篇常见错排查
第一个高频问题:pandoc 导出中文 PDF 时报! Package inputenc Error或者中文变成方框。原因是默认引擎不支持中文。解决办法是显式指定xelatex或lualatex,并且用-V CJKmainfont指定一个已安装的中文字体。你可以先用fc-list :lang=zh看看系统里有哪些中文字体。
第二个问题:VS Code 的 Markdown-PDF 插件导出后数学公式丢失。这个插件对 LaTeX 公式的支持有限,尤其是行内公式。如果你文档里公式多,建议改用 Markdown Preview Enhanced,在预览界面右键选择在浏览器中打开,然后用浏览器的打印功能另存为 PDF。这样公式渲染是完整的。
第三个问题:Typora 导出 PDF 时代码块没有高亮。检查一下主题设置,有些主题在导出时会丢失代码高亮样式。可以在导出前切换到默认主题试一下,或者用File -> Export -> PDF时勾选“保留样式”。
第四个问题:AI 插件配置了 TaoToken 的 Base URL 后仍然报连接失败。先确认你填的是https://taotoken.net/api,不要漏掉https,也不要在末尾多加/。然后确认 Key 没有多余空格。最后用第 4 节的 curl 命令再测一次,如果 curl 通而插件不通,那就是插件字段名或版本兼容问题。
第五个问题:pandoc 批量导出时路径包含空格导致失败。在脚本里给文件路径加引号,或者用数组传参。比如:
for f in *.md; do pandoc "$f" -o "${f%.md}.pdf" --pdf-engine=xelatex -V CJKmainfont="Noto Sans CJK SC" done这样即使文件名里有空格也能正常处理。
6. 把编辑、导出、调用串成一条稳定链路
走到这里,你已经有了三样东西:一个能写 Markdown 的编辑器,一条能导出 PDF 的命令或按钮,以及一个用 TaoToken 统一 Key 接入的 AI 辅助通道。剩下的就是按自己的习惯把它们固定下来。
如果你主要用 Typora,那就把 AI 润色放在写作过程中,导出时直接用内置 PDF 功能,适合单篇文档。如果你要维护一个文档仓库,建议用 VS Code 加 Markdown Preview Enhanced 做预览,用 pandoc 做 CI 里的批量导出,AI 调用则通过settings.json里的统一配置走 TaoToken。如果你在写代码相关的长文档,Coding Plan 那条线会更合适,因为它对长期编码和 Agent 场景有更好的支持。
最后留一个实用习惯:每次换机器或者重装环境后,先跑一遍第 4 节的 curl 验证,再跑一遍 pandoc 的中文导出测试。这两个动作加起来不到两分钟,但能帮你省掉后面半小时的排查时间。配置文件和 Key 建议用环境变量或者本地密钥管理工具保存,不要硬编码在会提交到 Git 的文件里。