编辑器
每个编辑器都为其格式量身打造,用法与其他编辑器相同。
-
LaTeX Editor
latex.giit.ch编写 LaTeX,边输入边查看排版后的页面。支持图片、文档设置和 PDF 导出。
● 已上线 -
SVG Editor
svg.giit.ch以代码和画布编辑 SVG:移动图形、调整大小和改色,吸附网格,导出为 PNG、JPG、WebP 或 React。
● 已上线 -
HTML Editor
html.giit.chHTML 与页面实时预览,图片作为文件保存,直接在预览中编辑文字,可导出为单个文件或 ZIP。
● 已上线 -
Markdown Editor
md.giit.chMarkdown,支持表格、任务列表、脚注和公式,预览清晰易读,可导出为 HTML 或 PDF。
● 已上线 -
JSON Editor
json.giit.ch以代码和可折叠的树编辑 JSON 和 JSON Lines:在树中编辑键和值,用 JSON Schema 检查,转换为 YAML、CSV 或 XML。
● 已上线 -
YAML Editor
yaml.giit.chYAML,带同样的数据树,保留注释和锚点,问题标明所在行,可转换为 JSON。
● 已上线 -
XML Editor
xml.giit.chXML,带元素树、XPath 搜索、格式检查,以及转换为 JSON 或 YAML。
● 已上线 -
CSV Editor
csv.giit.ch以文本和类似电子表格的表格编辑 CSV,也适用于大文件;可导出为 XLSX、JSON、Markdown 或 HTML 表格。
● 已上线 -
SHLS Editor
shls.giit.chSHLS,面向 AI、节省 Token 的列表格式:键块和记录以树显示,问题标明所在行,与 JSON 互相转换,与参考编解码器完全一致。
● 已上线 -
Typst Editor
typst.giit.chTypst,浏览器中运行真正的编译器:边输入边看页面,PDF 文字可选,图片与文档一起保存。
● 已上线
每个编辑器都能做的事
学会一个,就会用全部。
从设计上保护隐私
编辑器都是静态页面。你的文档保留在浏览器中(本地存储);除非你自己设置了服务器,否则不会向任何服务器发送内容。
我的文档
在浏览器中保存任意数量的文档:打开、重命名、复制、下载和删除,每个文档都有自己的撤销历史。
任何 AI 都能和你一起写
“AI 助手”→“复制提示词”会为 ChatGPT、Claude、Gemini 或 Copilot 提供所需的一切。AI 会回复一个链接,在你的编辑器中打开其结果,“撤销”可撤回。
浏览器代理(WebMCP)
在支持 WebMCP 的浏览器中,AI 代理可获得直接读取和修改当前文档的工具;每次更改都是一个撤销步骤。
AI 状态一目了然
AI 按钮上的圆点显示是否已连接 AI:通过你的网站、作为浏览器代理,或通过此标签页中的链接。
在预览中编辑
点击预览中的文字即可直接修改,代码随之更新。点击其他地方则跳转到代码。
保存到你自己的服务器
Webhook 会把每个保存的版本连同 Token 发送到你选择的地址,可自动发送,也可在按 Ctrl+S 时发送。
支持 14 种语言
每个编辑器都有英语、德语、法语、意大利语、西班牙语、葡萄牙语、荷兰语、波兰语、土耳其语、俄语、乌克兰语、中文、日语和韩语页面:/de/、/fr/ … 语言菜单可切换,所选语言会被记住。AI 提示词始终保持英文。
浅色、深色或自动
每个编辑器都跟随你的系统或你选择的主题,并可在手机和平板上使用。
在你自己的网站中使用编辑器
所有编辑器都使用相同的协议。把 latex 换成 svg、html、md、json、yaml、xml、csv 或 typst,消息完全相同,只是前缀不同(latexeditor:、svgeditor: …)。
将编辑器放进你的页面
一个 iframe 就够了。?embed=1 显示带“保存”按钮的精简视图,如果你的页面有自己的保存按钮,?save=0 可将其隐藏。地址决定语言:/de/ 为德语,/zh/ 为中文,依此类推。
<iframe id="ed" src="https://latex.giit.ch/de/?embed=1"
allow="clipboard-write" style="width:100%;height:80vh;border:0"></iframe>
加载你的文档,接收更改和保存
编辑器告知已就绪,你的页面发送文档,编辑器报告实际编辑和每次保存。请检查每条消息的来源(origin)。
const ED = 'https://latex.giit.ch', ed = document.getElementById('ed');
addEventListener('message', e => {
if (e.origin !== ED || e.source !== ed.contentWindow) return;
const m = e.data;
if (m.type === 'latexeditor:ready')
ed.contentWindow.postMessage({ type: 'latexeditor:load', name: 'Offer', content: myText }, ED);
if (m.type === 'latexeditor:change') markUnsaved();
if (m.type === 'latexeditor:save') saveOnYourServer(m.content, m.assets);
});
或在单独的窗口中打开
单独窗口中的完整编辑器以完全相同的方式与 window.opener 通信,AI 的链接也能到达那里。
const win = window.open('https://latex.giit.ch/de/?embed=window', 'latexeditor-17');
让 AI 直接把结果交付到你的服务器
向编辑器提供你的规则、你自己网站上的一个 https 地址,以及本次编辑器会话的一个密钥。“复制提示词”随后会让 AI 把结果 POST 到那里;你的页面再在编辑器中打开它。密钥只在编辑器打开期间有效。
ed.contentWindow.postMessage({ type: 'latexeditor:load', name: 'Offer', content: myText,
ai: { label: 'My Admin', prompt: 'Keep the placeholders.',
endpoint: 'https://your-site.com/api/ai-result', key: sessionKey } }, ED);
全部消息
| 方向 | 消息 | 含义 |
|---|---|---|
| 编辑器 → 页面 | ready | 编辑器可以接收文档了。 |
| 页面 → 编辑器 | load {name, content, assets?, context?, hook?, ai?} | 打开你的文档(如果格式支持,可带图片)。 |
| 编辑器 → 页面 | loaded {id, name} | 你的文档已打开;记住它的 id。 |
| 编辑器 → 页面 | change {id, name, content} | 一次实际编辑(不包括加载)。 |
| 编辑器 → 页面 | save {id, name, content, assets, updated} | 保存 / Ctrl+S,或对 get 的回应。 |
| 页面 → 编辑器 | get · save | 请求当前状态 · 相当于点击“保存”。 |
| 编辑器 → 页面 | closing {id, name, content} | 单独的窗口在有未保存更改时关闭。 |
| 编辑器 → 页面 | reload {id, unsaved} | 在你的页面内按 F5 / Ctrl+R,由你决定。 |
| 页面 → 编辑器 | ai {label, prompt, endpoint, key} · ai {clear} | 通过你的服务器使用 AI,每个会话一个密钥。 |
| 编辑器 → 页面 | key-request {reason: "missing"} | 会话还没有密钥。 |
完整说明(包括 Webhook 和每个字段)见各编辑器的 llms.txt 以及 llms-full.txt.
常见问题
这些编辑器真的免费吗?
是的。无需注册,没有广告,文档数量不限。
我的文档会被上传到别处吗?
不会。编辑器在你的浏览器中运行,并把文档保存在浏览器的存储中。只有在你设置了 Webhook(或某个网站嵌入了编辑器)时,保存的版本才会发送到相应的服务器。
可以使用哪种 AI?
任何 AI 都可以:ChatGPT、Claude、Gemini、Copilot 或你编程工具中的 AI。复制提示词,说明你的需求,然后点击 AI 回复的链接。
可以在自己的网站上使用编辑器吗?
可以。用 iframe 嵌入它,或在单独的窗口中打开它,并通过 postMessage 交换文档;也可以让它通过 Webhook 把保存的版本发送到你的服务器。
如何以我的语言使用编辑器?
在顶部的语言菜单中选择,或直接打开对应页面:/zh/ 为中文,/de/ 为德语,/ja/ 为日语,依此类推。编辑器会记住你的选择。给 AI 的提示词保持英文。
编辑器由谁制作?
Grünwald Innovation,位于瑞士莱茵瀑布畔诺伊豪森(Neuhausen am Rheinfall)。