发音条
在聊天回复中添加一个紧凑的单行词按钮条。每个按钮点击后通过浏览器语音合成朗读单词,不会打开、下载或离开当前对话。将发音条与内联词汇注释配对使用。
工作流程
-
选择2-4个值得教授的单词:高于用户当前水平、容易混淆或对回复内容至关重要的单词。避免重复注释已解释过的单词。
-
在正常句子中注释每个单词,切勿作为单独列表。使用KaTeX配合彩色加粗文本、美式IPA音标、词性以及用户语言的简短释义。从一个小型无障碍色板(
#2563eb,#7c3aed,#059669,#b45309,#db2777,#0e7490)中为每个单词随机选取一种颜色;保持每个单词一种实色,并在同一回复中避免重复颜色。此客户端仅渲染$$...$$,因此请编写:保持紧凑($$\textcolor{#7c3aed}{\textbf{compact}}$$ /kəmˈpækt/,adj. 紧凑的) -
生成发音条:
python scripts/make_compact_strip.py --out <绝对路径>.html word1 word2 ...保持文件持久且易于客户端读取。优先使用会话的可视化目录,文件名使用ASCII字符,例如
~/.codex/visualizations/<日期>/<线程ID>/pron-<缩写>.html。 -
脚本将输出路径和可视化引用。将引用逐字放在最终回复的末尾,独占一行。
渲染规则
引用的两端包裹着私有Unicode字符:开头U+E200,分隔符U+E202,结尾U+E201。从脚本输出中复制。如果您重新输入,必须使用完全相同的码点。错误的结束字符(例如U+E041)会导致整个引用静默地变为纯文本,因此不会出现发音条。
约束条件
- 仅输出HTML片段。不要添加
<!doctype>、<html>、<head>或<body>;确保CSS和JavaScript作用域限定在生成的根ID内。 - 保持发音条有2-4个按钮,仅一行,仅在空间紧张时换行。
- 不要链接到外部词典或TTS页面,不要嵌入大型音频播放器。按钮必须在原地播放。
- 使用宿主主题变量(
--foreground,--border,--primary,--accent,--ring,--primary-foreground)而非硬编码色板。 - 如果客户端完全无法渲染内联可视化,则回退为在句子中使用紧凑的扬声器链接:
[🔊](https://dict.youdao.com/dictvoice?audio=<单词>&type=2)。
文件
scripts/make_compact_strip.py— 验证2-4个单词,写入片段,并输出可视化引用。assets/strip-template.html— 带__ROOT_ID__和__WORDS_JSON__占位符的片段模板。
需要Python 3.8或更高版本;无第三方包依赖。