编辑器事项
 
 
 
 
 
 
 
 
 
 
 
贡献者: addis; Siegfried; 常晓旭; Siegfried2
目录:
1. Editor Bug
按优先级排序
- 【完成】内部和外部引用按钮又失灵了(提示 scan 没有相应)。
- 重新编译按钮运行时如果碰到 stderr,不应该显示在顶部而是显示在出现的地方(stdout 的最后)。
- 【完成】到了自动备份的时间,如果编辑器中有修改但没保存的内容,则应该自动保存并自动备份,并将 tab 左上角的小红点去掉。
- 有时候打开文章列表中显示 “没有记录”,需要刷新页面才可以。估计是因为连接异常
- 有时候笔记页面登录后会弹出百科的文章列表,甚至可以打开文章,这比较严重
- 编辑器可以读取网站用户的编辑权限(等健叔更新 api)
- 【进行中】在编辑器中 Ctrl+点击
\autoref{ex_AMLaw_2}
中的 ex_AMLaw_2
,提示 打开文件失败:文章"ex_AMLaw_2"不存在
。
- main.tex 按发布按钮不会自动
git add
。
- 如果文章带有脚注(例如 crypto.tex),导出 md 文件到知乎并发布后,脚注编号会错误,且返回链接会直接以文本的形式显示。注意为了鼓励用户查看原文,所有的链接仍然应该跳转到 wuli.wiki 的相关页面。
- 网络不稳定的时候保存以后预览左下角会一直转圈,无法进行其他操作。其实再试一次就没问题了。所以转圈的时候再按保存是否不要提示 “请等待操作完成后再进行保存。” 而是直接中断并再试一次?或者规定 2 秒钟内还在转圈就自动放弃(毕竟还会影响其他操作例如打开新文件等)?或者以上两者都实现。
- 在 Ubuntu 20.04 和 22.04 的 chrome 浏览器中(通过官方 deb 安装),任意找一个网页复制一些代码,粘贴到编辑器中会变为复杂的 html 而不是复制的内容。例如
<pre id="script-box" class="code" style="box-sizing: border-box; ...
。用右键菜单粘贴则没有这个问题。
- 【进行中】把文章保存,撤销(Ctrl+Z)然后重做(Ctrl+Z),会出现错误:
请使用重命名按钮修改标题。
- 【完成】每次关掉最后一个 tab 就会没有响应。
- 【完成】编辑器预览中,凡是其他页面的连接点击以后都需要在浏览器上新开一个 tab,如果直接在预览窗口里面跳到其他页面就会出问题。
- 【完成】如果当前文章有未保存的内容,切换文章 tab 或者打开新文章的时候,预览会跳回之前文章的预览。这应该是因为离开一个 tab 的时候的自动保存引起的,所以离开 tab 只保存就好不要刷新预览(还能节约流量提高速度)。
- 【完成】Ctrl+点击 autoref 跳转到其他文章(已经打开)的公式时,光标不会自动跳转
- 【完成】如果甲在编辑文章 A,乙在文章 B 里面用外部引用按钮,需要给文章 A 添加一个 label,会发生冲突吗?甲的编辑器会实时更新吗?要不这样,当乙外部引用 A 时,检查 A 是否被其他人编辑过还未发布,如果是则提示 “A 正在被 xxx 编辑,请与管理员协商”。当然这仅限于需要插入 label 的情况,如果 label 已经存在就不需要管了。scan 中添加了选项
--autoref-dry
- 【完成】版本对比无法对比
HsSeFu - 版本对比 (2021年09月21日 00:59 → 2022年01月21日 17:00)
,是否是中文用户名导致的?
- 【完成】预览窗口中无法跳转到脚注。
- 【完成】
MWRel.tex
中没有显示用户 _Eden_
的编辑历史。在 PhysWiki-backup
中却有。
- 【完成】百科编辑器要求只有管理员可以导出 md,用户笔记人人都可以导出
- 【完成】有时候笔记页面登录后编辑器窗口不显示任何内容
- 【完成】引用其他文章内容后,点击预览中的链接有误。应该使用 scan 输出的链接。例如
https://wuli.wiki/editor/Resist.html#sub1
中 editor
应该是 online
。
- 【完成】引用文献的按钮图标改成
[1]
- 【完成】个人笔记无法下载文件。错误
{"status":"error","message":"The header content contains invalid characters"}
。
- 【完成】新用户的个人笔记若开启实时预览,打开任意文章后会不停 html 分段和取回 html 文件。已经把实时预览默认关闭。解决方法:编辑器不应该依赖服务器上原有的 html,打开以前可以先在服务器上编译一次 html 再取回。
- 【完成】转出 md 文件后,公式链接等全部错误,应该用
http://wuli.wiki/online/xxx.html
绝对链接。
- 【完成】实时预览模式下,重命名后预览中标题不会更新。
- 【完成】实时预览关闭时,打开文章图片显示不出
- 【完成】section label 的 autoref 显示不出来
- 【完成】html 分段后公式序号显示错误
- 【完成】隐藏 “保存后自动刷新预览” 开关
- 【完成】自动补全括号
()[]{}
的算法需要和 vscode 的行为一样,以 {
为例:1. 插入 {
时,只有右边是空格、换行符、end of file 或者 )]}
之一时才补全右括号。2. 在插入 }
时,如果右边是自动配对的 }
,则不插入并将光标向右移动一个(或者理解为覆盖)。3. 选中几个字符并插入 {
时,自动在选中字符的左边插入 {
,右边插入 }
。
- 【完成】
$$
的补全算法和 ()[]{}
不一样:1. 只有插入 $
时左边是空格、回车或 start of file,且右边是空格、回车或者 end of file 时补全另一个 $
。2. 例外:当在被补全的 $
左边插入 $
,则覆盖。3. 选中几个字符并插入 $
时,自动在选中字符的两边分别插入 $
。
- 【完成】用论坛账号登录后应该自动处理 “登录异常,请重新登录” 而无需提示
- 【完成】本文件中还是有一些 verb 和 lstinline 高亮错误
- 【完成】同一个用户名无法同时登录百科和笔记(提示 “没有编辑权限”)
- 【完成】用户笔记预览里面的 title.png 的 url 更新到用户文件夹,例如 https://wuli.wiki/user/admin/title.png
- 【完成】在一对大括号
{}
中打左大括号,不会自动补全右大括号
- 【完成】切换或者重连网络后,显示 “由于登录状态异常,操作终止,请重新登录后操作”。能否直接提示重新输入账号密码登录?
- 【完成】有时候网速慢时保存以后代码中的光标会卡住,直到预览刷新了以后还要过几秒种才能恢复
- 【完成】有时候切换 tab 时左边的预览不会切换,需要 save 才会更新
- 【完成】初始页面下,帮助按钮按不动
- 【完成】重新打开编辑器的时候,
是否打开上次的 xxx.tex?
即使选了 cancel 仍然会打开
- 【完成】如果
main.tex
中文章标题含有反斜杠,则高亮不正常
- 【完成】两个 “重新编译” 按钮,如果程序出现 segmentation fault 等致命错误,不会显示在输出窗口,而且仍然显示 “编译成功”。
- 【完成】“导出 md 文件” 按钮中,要给公式编号的话,直接在后面添加例如
\qquad (1)
就可以了,不要套一个 align
环境
- 【完成】“导出 md 文件” 按钮中,每一个
<h2>
和 <h3>
上方加一个空行
- 【完成】“导出 md 文件” 按钮中,支持对行间公式
$$...$$
、\[...\]
和行内公式 \(...\)
的导出
- 【完成】
verb
命令和 lstinline
命令中的内容不可以影响高亮。例如 %
后面的内容就都成了绿色。delimiter 可以是两个任意的相同符号,例如 123
或者 |||
也是合法的。
- 【完成】wuli.wiki/note 中创建新文章显示
读取文章文件 /user/xxx/changed/xxx.html 失败,服务器找不到该文件
。
- 【完成】wuli.wiki/note 中保存或删除 test 用户的文章显示
j is not defined
。
- 【完成】“重新编译并发布” 按钮没有成功调用 scan 程序,也没有显示命令行的结果(应该指定 online 路径重新运行
./PhysWikiScan .
)
- 【完成】上传图片等待的时候提示 “PhysWikiScan 没有响应,请稍后再试”,过一段时间后,图片上传成功。
- 【完成】在使用替换图片功能时,输入的编号是图片的显示编号(也就是按照代码中 figure 环境出现的顺序编号)而不是图片文件名中的编号,二者可能会不同。
- 【完成】上传图片时如果进行其他操作会出问题(移动光标或者再次上传图片)。点击上传图片按钮后,应该先在当前光标处插入代码然后再开始上传(现在是传完再插入)。上传图片时在左下角显示转圈或进度条,可以点 X 终止。上传过程中禁止再次上传图片,如果终止或其他原因上传失败,则提示
上传图片失败, 请手动删除图片环境
。
- 【完成】普通用户(如 test5)使用 “下载变更文件” 按钮时出错:
下载已更改文件失败:Error in api "/editor/api/download-files": findLines is not defined
- 【完成】预览窗口有时候会把文章显示两次,关闭后再打开可解决
- 【完成】自动备份对
FnalNt.tex
停止了。
- 【完成】在 “打开文件” 窗口输入
t.tex
,不会出现在第一个,是不是排序算法有问题?其他文章也有类似的情况。
- 【完成】自动引用一条没有 label 的公式时候只会添加 label 不会添加
\autoref
命令(是否表格,图片等也有类似问题?)(在关闭符号替换模式发现的,不确定是否和这个有关)
- 【完成】打开文章有一定概率提示 “PhysWikiScan” 无响应
- 【完成】已经注册的用户(如 admin)使用编辑器时不应该出现 “修改密码” 按钮
- 【完成】自动补全设置里面的顺序不能决定候选的顺序
- 【完成】符号替换的目标不能为 "*"(还有什么符号不能作为目标?)
- 【完成】自动引用会弹出 “插入内部引用出错:xxxxxx”(不确定是谁的问题)
- 【完成】自动引用(例如引用本文公式)时会出现 “PhysWikiScan 正在处理,请稍后……” 会一直转圈。
- 【完成】打第一个美元符号不会出现一对美元符号
- 【完成】手动打第二个美元符号时会出现两个
- 【完成】“原子单位制” 的表格中和表格结束以后所有字体都变成了橙色
符号替换模式下的 Bug
“符号替换” 功能是指,把一些 latex 命令(如 \alpha
)显示成符号以增加可读性,并用一个紫色框表明。以下按优先级排序
- 自动引用同页面公式插入 label 的时候,有可能会插入到
\begin{equation}
的中间(有待复现)。
- 【完成】复制一个公式以后,被替换的符号不会变为代码
- 【完成】为什么这个 Julia 文档页面中的
\varphi
和 \phi
粘贴到浏览器(包括符号替换规则窗口)中之后显示出来是调换的?
- 【完成】搜索框中的
\phi
和 \varphi
的符号替换调换了,但搜索的内容是正确的。应该也按照 config.json
中的规则替换(这应该和上一个 bug 有关)
- 【完成】搜索框中不能搜索
\subseteq
,因为打了 \subset
以后就会直接替换成符号。任何两个前面部分相同的命令都有这个问题
- 【完成】自动引用公式后再连续撤销,符号替换的紫色下划线会全部消失,如果这时保存,tex 文件中的代码也会替换成符号
- 【完成】有点担心符号替换会出现循环 bug,就是修好了 A 出现 B 修好了 B 出现 C,修好了 C 出现 A。是否要考虑一下系统的解决方法(但愿是我多虑了)。
- 【完成】选中一段公式代码,按【对齐】按钮,公式中带紫色框的符号消失
- 【完成】删除一个带紫色框的符号再撤销,紫色框消失
- 【完成】代码中空心句号被替换为实心句号后,预览中仍然是空心句号(如 “。”)
- 【完成】使用替换功能时,若替换的内容中的命令被替换成符号,替换后不会出现紫色框
实时预览 Bug
- 公式调换位置后,
\autoref
显示的序号不会自动更新
2. Editor TODO
按优先级排序
- 编辑器光标停留在一个括号上,另一半括号需要高亮
- 【进行中】如果上传时发现图片文件的 hash 已存在于
images.hash
,则检查该文件的 images.figure和figures_aka
中 figures.deleted==0
的图片环境,有就提示图片已存在,列出所有标签(fig_
加 figures.id
)和图片标题和它们所在的文章 id 和 caption 让用户选择引用(\autoref{}
)或者选择重复使用图片。如果 images.figure和figures_aka
中没有 figures.deleted==0
的图片环境(也就不用选了)或者用户选择重复使用图片,就检查 images.figure和figures_aka
中 figures.deleted==1
的环境中有没有属于当前文章的(若有多个就选第一个),如果有就更新 figures.deleted=0
然后根据该记录中的信息插入图片环境代码,否则新建标签和环境并在 figures
表中插入新的记录,aka
指向 images.figure
。
- 【完成】按下 “上传图片并创建新标签” 按钮弹出一个窗口。窗口中有 “上传图片” 按钮,按下后弹出文件浏览器仅限选择一张 png 或者 pdf 图片(若该图的 hash 已经存在则见下文)。另设一个 “上传其他格式” 按钮,按下后可以选择一张或多张常见格式图片,可以按多次,若第一个按钮上传的是 pdf,上传的其他格式图片中必须要有 svg 格式否则无法确定。设一个 “上传附件(源码或项目文件等)” 按钮,用于上传附件,功能和 “上传其他格式” 一样,上传到
PhysWiki/files/
。另外可以在窗口提供输入 figures.caption
(必填)和 width
(默认 6)和 source
(选填)和 images.license
(必填,默认和 entries.license
一样)。
- 【完成】上传新的图片时,
PhysWiki/figures/
中的文件使用 images.hash
+ 拓展名命名。\label{}
格式为 fig_文章名_序号
。这里的 序号
可以由小到大逐个查看数据库中存不存在 figures.id=文章名_序号
,使用第一个不存在的。
- 【完成】首先插入
images
表的 hash, ext, figure, author, time
(此时如果有 foreign key 报错,需要 PRAGMA foreign_keys = OFF;
,完了再 ON
),再插入 figures
表的 id, caption, authors, entry, image
,再修改 entries
表格的 figures
。注意的格式,不要把已有的数据覆盖。一个示例:
PRAGMA foreign_keys = OFF;
INSERT INTO "images"
("hash", "ext", "figures", "author", "time")
VALUES ('3173003649033a60', 'png', 'test_10', 0, '202307121114');
PRAGMA foreign_keys = ON;
INSERT INTO "figures"
("id", "caption", "authors", "entry", "image")
VALUES ('test_10', '请输入图片描述', '0', 'test', '3173003649033a60');
-- 这个最好还是 parse 一下,保证没有重复,排个序,不要直接 append,这里只是图方便
UPDATE "entries" SET "figures" = "figures" || ' test_10' WHERE "id"='test';
- 【完成】上传的
svg
做 hash 以前要把 CRLF 替换为 LF(保存到服务器的文件也使用 LF)。
- 若上传 pdf + svg 图片,更新
figures.image_alt
。同时支持上传其他文件(如果后缀名是 gif, eps 等
,同样更新到 figures.image_alt
。
- 【先不做】上传或替换图片时弹出窗口让用户填写版权信息。
- 【先不做】上传或替换图片时允许上传附件
- 【先不做】在图片的下拉菜单中做一个图片浏览器按钮,打开一个面板可以浏览所有图片。选中图片后可以查看在哪篇文章被使用。
- 【先不做】若替换图片,则把替换前的
figures.image
和 .image_alt
都移动到 figures.image_old
。
- “当地时间” 替换为 “本地时间”,冬令时和夏令时的说明删除
- 用 salary.value 代替 authors.salary, discount 表整合到了 salary.scale
- 给文章加一个上锁功能,在修改文章信息里面管理员可以上锁和解锁,不能修改任何信息包括内容。如果 occupied 的文章被上锁,就从 occupied 表中删除。
- 根据数据库里面对审稿的设计,做一个审稿按钮和面板。
- stat.html 页面加一列 “时薪” 显示所有 salary 规则下该文章该作者该时段最高的那个时薪,加一列 “调整” 显示 salary_change 里面的调整,最后 时薪*折扣*时间+调整=补贴,如果 stat.html 所选时段内有规则生效或者失效,就分割成多行,每行显示不同的 “时薪”
- salary.html 给管理员添加删除规则用。如果是作者但非管理员,可以查看但不能修改关于自己的规则,或者关于所有人的规则(salary.author 为空)
salary 表的规则大概一共就这么三种,
-- rule: 作者 + 协议 -> 时薪
-- rule: 作者 + 文章 -> 缩放
-- rule: 文章 -> 缩放
其中第二个比第三个有更高的优先级
- right 表,应用编辑器相关权限
- 网站首页的全文搜索需要记录到数据库(记录每次的搜索内容、用户和时间,如果未登录则不用记录用户),不要记录编辑器中的全文搜索。
- 百科符号替换功能还是有意义的,应该有空修复一下
- 中文模式:把不能替换成符号的英文命令使用中文命令如
\subsection
命令显示为 \子标题
,\textbf
命令显示为 \粗体
,\bvec
显示为 \粗向量
等。为了输入方便,中文模式下输入 \
后支持拼音输入弹出对应的中文命令。
- 新文章选择付费创作协议或者把已有文章改成付费创作协议,需要管理员权限。如果不是管理员,就提示 “该协议需要管理员权限,请先选择志愿创作协议,并向管理员申请”
- 给文章加一个上锁功能,在修改文章信息里面管理员可以上锁和解锁
- 在编辑器的 “修改文章信息” 中,如果协议是付费协议,那么再显示一个 “补贴折扣”,如果没有折扣就显示无,管理员可以输入一个 0-99 的整数
- 根据数据库里面对审稿的设计,搞一个审稿按钮和面板
- 需要做一个 api 提供数据库的
entries.id
,只提供 entries.deleted=0
的那些。wuli.wiki/book
那边需要爬取。另外 book 还需要获取 entries.type entries.draft
- 【完成】创建文章时增加一个 “协议” 栏(末尾加一个 🛈 图标,链接到
wuli.wiki/online/licens.html
),点击可以有下拉菜单,每一行显示 licenses.id
(空字符串不显示)和 .caption
和 .intro
(每列对齐),以及一个链接按钮,链接到 .url
。若作者的 authors.salary
大于零,则默认选择 Xiao
,否则默认选 Usr
。创建后,在 tex 文件第三行注释 license: 协议id
。若没有输入关键词,则第二行插入 %
和一个空格即可。
- 【完成】创建文章时加一个 “文章类型” 栏, 点击可以有下拉菜单,每一行显示
types.id
(空字符串不显示)和 .caption
和 .intro
(每列对齐)。
- 【完成】注意由于历史原因,关键词必须在第二行,剩下的
license
,type
顺序可以随意。
- 【完成】tex 文件开头的连续若干行若都有行首注释,那么都不允许手动修改。
- 【完成】重命名按钮改为 🛈 图标,名字改为 “修改文章信息”。
- 【完成】笔记功能为了保持数据库兼容性使用
PhysWikiScan
仓库中的 NoteScan
可执行文件。
- 为了防止同昵称用户的笔记文件夹冲突,使用数据库的
authors.id
作为用户笔记文件夹的名称,如果不存在就在数据库新建一个作者。
- 【完成】editor 对
PhysWikiScan
的所有调用都要检查是有 cerr
输出,以及 exit code 是否为零。如果有错误应该在编辑器前端提示。
- 【完成】更新数据库时,需要尽量开启
PRAGMA foreign_keys = ON;
检查 foreign key 是否存在。
- 【完成】使用
occupied
表格标记文章占用状态(包括被谁占用),不要记录到其他任何地方。“查看文章占用状态” 按钮使用该数据,发布或者使用解除占用按钮都重置该数据。
- 【完成】打开文章后如果有一次备份(见下文新备份算法)则在数据库
occupied
表标记占用。如果不产生新的备份(即新的文件 hash)则不要占用。
- 【完成】标记占用(也就是产生新的备份)后更新
authors.recent_entries
。“打开文件” 按钮中的 “我的编辑” 使用这里的数据。
- 【完成】引用文献按钮使用数据库
bibliography
中的信息。不要包括 id 为 ''
的条目。
- 百科创建文章以后,自动按下 “标记文章:草稿”(用户笔记不需要),并更新
entries.draft = 1
,用户笔记不需要。
- 【完成】创建文章或者重命名时需要更新
entries.caption
- 【完成】创建文章时需要可以选择协议,选项见数据库的
entries.license
(不要包含方括号),选择后更新数据库。打开文章后也要允许在菜单中修改。
- 【完成】创建文章时需要可以选择文章类型,选项见数据库的
entries.type
(不要包含方括号),默认选 Tutor
。选择后更新数据库。打开文章后也要允许在菜单中修改。
- 【完成】编辑器不应该使用任何
data/*.txt
,将删除。data/autoref.txt
中的信息会直接输出到 stdout。
- 【完成】删除文章以前运行
./PhysWikiScan --delete 文章id
。运行成功后再修改 main.tex
(scan 会删除文章 tex 文件),否则提示 cerr
中的错误,不删除文章。
- 【先不做】发布按钮改成 “审稿”,弹出窗口,给用户选择
review.action
和 review.comment
。插入数据库(补全其他列),确保审稿的 hash 存在于 history
表。如果选择发布,则行为和现在的发布按钮相同。若选择撤回,则撤回到上次发布的内容。
- 【完成】editor 备份步骤:更新
contents/文件名.tex
,然后运行 PhysWikiScan --backup 文件名
,不需要修改数据库(具体行为见 README.md
)。注意输出中 exist
不应该出现,因为编辑器前端应该检测到内容改变才进行备份。
- 【完成】编辑器出现任何内容改动(即使不手动保存)都必须做一次自动备份(不使用 scan 更新 html,只有手动按保存才更新)。两次备份之间不少于 20s(这个参数需要以后可以调整)。
- 【完成】手动保存或关闭文章时,如果内容有改变,也备份一次。
- 【不做】这些步骤由 scan 的
--backup
完成:文章备份文件确保使用 utf8 编码,换行符使用 LF 而不是 CRLF。保存前先计算文件内容 SHA1 的前 16 位,确保数据库中 history.hash
不存在(否则不备份)。然后保存到 PhysWiki-backup/YYYYMMDDHHMM_authorID_entry.tex
,其中 authorID
是数据库的 authors.id
(非负整数),如果此时发现作者是新作者,则将其先插入到 authors
表格。
- 【不做】由 scan 的
--backup
完成:上一条中的 YYYYMMDDHHMM
如果距离同一文章同一作者的上一个 YYYYMMDDHHMM
少于 30 分钟(这个参数需要以后可以调整)但不是五分钟的整数倍,则补全到五分钟的整数倍(到未来)。补全后若文件文件名已存在则覆盖。
- 【完成】前端历史版本按钮中的字符数加减使用
history.add/del
中的数据。注意要显示用户名而不是 authors.id
。
- 【完成】Mac 上编辑器的快捷键应该符合 Mac 用户的习惯,例如保存用
Cmd+S
,其他请自行搜索。
- 【完成】选中若干行代码按
Tab
应该用 tab 缩进,按 Shift + Tab
应该删除一个缩进。
-
\href{}{}
命令的第一个花括号中有 %
,替换为 \%
,因为前者在 latex 中是注释。第一个花括号中首尾的空格自动删除,并把任何中间的空格或非 ascii 字符(编码 0-127)视为 utf-8 编码,并将该字符的每个字节自动替换为 \%两位hex
。
- 让 editor 在 littleshi.cn, PhysWiki, PhysWiki-backup,user-notes 等仓库中创建的文件的 mode 都默认为 664。文件的 user 和 group 需要分别为 editor 和 wiki(也就是说编辑器后台以 editor 的身份运行)。
- 【完成】知乎导入 md 的格式升级了,导出 md 的功能也要相应更改,现在的格式例如
# 大标题
## 小标题
正文, $$a^2 + b^2 = c^2$$ 正文公式也用两个美元符号, 后面必须要有空格。
$$a^2 + b^2 = c^2$$
行间公式也用两个美元符号, 而且前后都要有额外的空行, 否则视为行内公式。 注意 latex 代码还是要使用 html 中的而不是 tex 中的。
- 凡是显示所有文章的列表,每次只加载 50 个,翻到最后再继续加载。
- 【进行中】当粘贴 url 到
\href{}
命令中(就是插入链接按钮的那个命令)时,自动把 url 中的百分号字符转换为 utf-8。例如这个网站做的那样。
- 编辑器的预览中,如果有
wuli.wiki/changed/xxxx.html
的链接,点击以后在编辑器中打开 xxxx.tex
(相当于在 tex 代码中 Shift+Click 橙色下划线的链接)。如果有 wuli.wiki/changed/xxxx.html#eq_xxxx
,点击以后自动在编辑器中跳转到对应公式。其他的链接也类推。
- 【先不做】在笔记功能中添加一个重置按钮,按了之后提示两次
你确定要重置笔记吗? 所有文章将被删除且原则上无法恢复(仍然可联系管理员恢复,但管理员一般很忙)! 请确保你已经通过下载按钮下载最新源码! 该功能主要用于解决历史用户的某些严重的 bug, 恢复后可以手动把备份的文章重新逐一手动复制上来
。
- 插入代码块时,如果不指定,声明
begin{lstlisting}[language=none]
- “插入代码” 按钮中添加 Mathematica 语言,声明
[language=mma]
。按下 JavaScript 语言,声明 [language=js]
- 在 Mac 上,提示以及使用 Mac 习惯的快捷方式(如保存用
Cmd+S
)
- 【不做】每五分钟的备份也要包括图片和源文件(即 figures 文件夹中所有格式为
文章名_数字.任意拓展名
的文件),命名规则和 tex 文档一样。只有图片文件内容被改变时才备份(可以通过 hash 判断或者逐字节对比)。
- (先完成新要求文档中的图片备份功能再做这个)每次保存时检查该文章对应的图片文件
figures/文章名_编号.拓展名
中的 文章名_编号
是否在代码中出现(包括注释掉的代码),如果没有,就把该图片(可能不止一个)删除。
- 【完成】编辑器的浏览器 tab 上应该有百科的 logo(详见任意 wuli.wiki/online/ 文章页面的 html 代码)
- 按下插入代码按钮时,弹出提示框输入标题(可选),并插入到
begin{lstlisting}[language=语言, caption=标题]
中
- 【完成】创建文章时,标题中的中文字符和英文/数字之间需要有空格,没有就自动插入。
- 【完成】
wuli.wiki/editor
页面的 html title 应该改为 小时百科编辑器 x.x.x\n 用户: xxx
,不需要显示正在编辑的文章名。
- 【完成】
wuli.wiki/note
页面的 html title 应该改为 小时云笔记 x.x.x\n 用户: xxx
- 粘贴时若存在
\label{...}
命令,提示 “粘贴时是否自动删除 label?”,并可以勾选 “不再提示”。
- 【进行中】如果保存正在进行时(“正在提交,请稍后…”)再次按保存或者
Ctrl+S
,那么取消当前保存再重新保存一次,而不是提示 “请等待操作完成后再进行保存。”。原因,当网络不好时,取消并重新保存比一直等效果更好。
- 【完成】菜单栏增加一个红色的按钮,图标类似于 font-awesome 的 crosshairs,tip 是 “窗口定位”。如果在代码窗口选中一段文字并按下该按钮,那么在预览窗口中搜索并高亮该文字,并滚动到窗口正中,如果有多于一个 match,那么再次按下按钮跳到下一个 match。反之如果在预览窗口中选中一段文字并按下该按钮,定位到代码窗口中。如果按下时没有选中文字,则提示 “请在代码或预览中选择一段文字用于定位(不能包括 LaTex 命令)”
- 【进行中】编辑百科按保存时,
PhysWikiScan
命令使用 PhysWikiScan --entry xxx --path 1
,发布时使用 PhysWikiScan --entry xxx
- 【暂无法实现】中文双引号不需要自动补全,但如果选中一段文字键入中文双引号中的一个,则在文字两边插入中文双引号。
- 【进行中】用户笔记按保存时,
PhysWikiScan
命令中的 url 设为空,发布时 url 不变
- 作为一个内容冲突的检查机制,每次以任何形式保存文章(包括自动备份)后,前端记录下后台文章文件的 hash,下次保存前检查该文件的 hash。如果和记录的不同,那么提示
服务器上该文章文件发生了改变, 和这里的内容冲突, 这是一个 bug, 请立即停止编辑, 手动保存这里的内容到您的电脑, 并联系管理员
。
- 上传图片的时候允许额外上传一个其他格式的文件(例如源码文件),重命名为和图片文件相同。允许
.m
,.py
,.agx
。
- 考虑接入一个语法检查的 api,并在编辑器里面实时标记出来。
- 编辑器应该有一个内部的通知系统,制定一定的规则,例如自己编写过的文章被别人修改了会得到通知。又例如某人负责的部分中文章被修改了也收到通知。
- 【完成】在代码按钮旁边添加一个按钮,插入
\verb|...|
命令。如果选中一段文字再按,就把文字放在它里面。如果选中的文字中含有 |
,就改为 \verb`...`
,如果也有 `
,就改为 \verb+...+
。
- 【完成】Ctrl + 单击外部引用 autoref,可以直接打开链接到的文章并跳转到对应的 label。预览窗口也跳转到相应的 id(和 label 同名)。
- 【完成】
wuli.wiki/history
和 wuli.wiki/diff
页面不应该要求登录就可以使用
- 【完成】全局搜索功能:弹出一个窗口,输入一行文字(安全起见命令中不允许有分号或者
&
),在 PhysWiki/contents 目录运行 git grep --no-index 输入的文字
然后在下面返回命令行的输出结果
- 【完成】发布文章的同时,在
PhysWiki/
中 git add
该文章的 tex 文件和图片。
- 【完成】编辑器的 “打开文章” 窗口需要添加 “最近编辑” 按钮支持浏览当前用户编辑过的所有文件,时间从新到老排序。
- 【完成】备份 tex 时,若与上一个备份文件相同(无论是否同一作者),则不备份(或者说把新文件删除)。
- 当正文插入的
$
被自动补全后,立即用退格键删除 $
时补全的 $
也需要自动删除
- 【完成】若剪贴板中有 png 图片,则可以直接在编辑器中粘贴以插入图片环境并上传图片。
- 【完成】把 “修改文章标题” 按钮的 tip 改成 “重命名”;“插入文章引用” 改成 “引用其他文章”;“插入外部引用” 改成 “引用其他文章内容”;“插入内部引用” 改成 “引用本文章内容”;
- 【完成】按钮放到 “引用其他文章” 后面的按钮依次应该是:“引用文献”、“插入链接”。
- 【完成】编辑器预览的初始页面插入小时百科 logo 以及文字,设计图见聊天记录。
- 【完成】“插入脚注” 按钮放到 “注释” 后面;“插入代码” 放到 “插入多个公式” 后面;“插入预备知识” 放到 “插入小标题” 后面; “插入推论” 后面加一条竖线。
- 【完成】把 “文章已被他人修改” 的提示改为 “文章已被 xxx 修改”,xxx 为用户名。
- 【完成】具有管理员权限的人在打开他人编辑过的文章后,弹出提示 “文章已被 xxx 修改,是否以只读模式打开?” 可以选择 “只读模式” 或者 “强制修改”。
- 【完成】鼠标右键菜单需要添加 “粘贴”。剪切复制粘贴需要放到右键菜单顶部
- 【完成】右键菜单的复制粘贴后面需要提示快捷方式
- 【完成】右键菜单中提示 “查找” 和 “替换” 的快捷键(
Ctrl+F
, Ctrl+H
)。
- 【先不做】编辑器中的数字的高亮目前是红色,应该和字母一样是绿色,可以参考 HeAnal.tex
- 【完成】在百科或笔记中打开
bibliography.tex
时会提示 备份失败: 源文件 "contents/bibliography.tex" 不存在。
- 【完成】删除一个文件时,图片和源文件也要一并删除(包括 figures 中所有格式为
文章名_数字.任意拓展名
的文件,online, changed 中对应的 svg 和 png 文件。
- 【完成】删除文章时同时删除
changed/
和 online/
目录中对应的 html 和图片文件(图片名格式为 文章名_编号.拓展名
)
- 【先不处理】保存时,检查所有
\label{文章名_类型序号}
(如 \label{eq_Sample_1}
)是否正确,如果不正确,提示 检查到 xx 个 label 与文章名不匹配, 是否批量替换?:xxx, xxx, xxx
如果选是,则将 contents 目录中的所有文章中 \label{}
和 \autoref{}
中出现的该标签都替换成符合要求的。注意每个 label 在文章中都必须是独一无二的。
- 【先不处理】上一条中批量替换时会产生一个和空心引号按钮类似的问题,就是如果有其他人正在编辑需要添加或修改 label 的文章怎么办?是否考虑采用新提出的 “介入” 机制?还是可以做到实时刷新这些人打开的文章?
- 【完成】如果没有文章打开,预览区显示百科图标的扁平化 logo(注意大小合适美观)。
- 【完成】在 main.tex 中,“插入文章引用” 按钮改为插入
\entry{文章名}{文件名(不含拓展名)}
- 【完成】引用 subsection 按钮的 tip 改成 “子节”
- 【完成】即使光标选中预览窗口,
Ctrl+S
也要和在代码窗口功能一样。
- 【完成】如果某个 tab 中有未保存到服务器的内容,tab 的左上角加一个小红点。
- 【完成】“改进意见” 按钮的 tip 改为 “标记文章:xxx”
- 【完成】百分号图标有点太大了跟周围的图标不协调,适当调小一点。
- 【完成】红色和蓝色按钮的尺寸适当调小(保持里面的图标尺寸不变)
- 【完成】“查看备份列表” 按钮改为 “查看历史版本”,包括弹出窗口的标题。
- 【完成】增加一个 “引用文献” 按钮,图标为
[1]
,点击以后弹出文献列表(从 data/bib_label.txt
和 bib_detail.txt
中每行分别读取 标签
和 内容
),每一行的格式为 [行号 标签] 内容
支持搜索,点击以后在光标处插入 \cite{标签}
- 【完成】设置每篇文章第一行为只读(除了
main.tex
以及 bibliography.tex
),如果试图直接修改,就提示 “请使用重命名按钮修改标题”。
- 【先不做】当编辑器提示 PhysWikiScan 输出的 cerr 时,文字需要可以复制,如果 chrome 本身的弹窗不支持,就用自己的弹窗。
- “切换布局” 按钮增加一种模式,即编辑窗口在左边预览在右边。分隔栏的位置同样需要保留记忆。
- 【完成】要求:如果在论坛上面已经登录了,编辑器页面应该也可以自动登录(应该是用 cookie 实现的吧?)
- 【完成】每个
\subsection
需要可以折叠,像环境一样
【完成】MathJax3 在 iOS 的 Safari 上显示有时候公式上半部分消失。注意当前的 MathJax3 文件夹复制一个备份
- 【完成】而是直接进行命令替换,从而增加公式代码在其他网站的兼容性
- 【完成】参考维基百科和知乎。或者是否可以做成点了以后直接弹出一个子窗口而不是跳到底部?如何实现?
md 模式
- 仅在前端实现,读取 latex 时转成 md,保存时转成 latex。完全不影响后端。
- 菜单栏中的按钮和高亮算法也要做相应的修改
-
\subsection{标题}\label{标签}
变为 ## 标题 {#标签}
其中标签的定义是可选的。
-
\subsubsection
也同理,用 ###
。注意转换成 latex 时,标题
两边的空格不要包含进去,{#标签}
里面不能有空格。
- 不仅是标题,所有地方的
\label{标签}
都转换为 {#标签}
- 所有
\autoref{标签}
变为 @标签
,后面加一个空格(无论 \autoref{标签}
后面是否已经有空格)。转换回去的时候后面的空格删掉。如果 md 的 标签
中出现了非字母数字和下划线的字符,就报错并提示是否忘了加空格。
- 所有
\upref{标签}
变为 @^标签
,后面加一个空格。
- 所有
\aref{文字}{标签}
变为 [文字](#标签)
- 所有
\cite{标签}
变为 [@标签]
- 所有
\footnote{文字}
变为 [^数字]
,代码最后用 [^数字] 文字
(每个占一行或多行)。每个数字唯一即可,且只能被定义和引用一次。latex 转 md 时从 1 开始按顺序生成。
- 粗体
\textbf{文字}
变为 **文字**
-
\verb`代码`
(注意 delimiter 也可能是其他任意单个符号如 \verb+代码+
变为 `代码`
,如果 代码
中已经有 `
符号,就使用多个作为 delimiter 如 ``代码``
。如果 代码
的第一个或最后一个字符是 `
,就用一个空格和 delimiter 隔开,但转换回 latex 时删掉。
- 【先不做】
itemize
环境转换时直接把 \begin{itemize}
和 \end{itemize}
去掉,并把中间的 \item
替换为 -
即可。中间如果有空行不要管。
- 【先不做】
enumerate
环境转换时也类似,但是把 \item
替换为数字。如果能做到的话,如果两个数字之间按下了回车,那就自动插入适当的数字并把后面的连续数字都加一。
-
lstlisting
环境(见 Sample.tex)转换后开头为:```语言 标题
(占一行),结尾 ```
(占一行)。其中 标题
可选。
-
\begin{equation}\begin{aligned} ... \end{aligned}\end{equation}
环境变为 :::a ... :::
注意两个相邻命令之间可能有空格或回车。
-
equation
环境(如果内部不直接嵌套 aligned
环境)变为 ::: ... :::
。
-
figure
环境变为 ![标题](文件名){#标签}{width=8cm}
,其中 文件名
不要包含路径,但包含拓展名。
- 其他环境如
example
,exercise
,lemma
,开头用 :::环境名 标题 {#标签}
,结尾用 :::
。标签可选。
编辑冲突方案
以下任何这些方案,都等现在的方案足够稳定了再说吧。
方案 1:只占用子节
- 这是现有方案的一个小改进,开发成本非常低。
- 每个作者都可以看到当前未通过审核的所有改变(无论哪种方案这都是应该的),鼓励同时编辑同一篇文章的人进行沟通。
- 编辑器通过作者修改的内容决定占用哪些子节,可以允许不同作者修改同一篇文章的不同子节。
方案 2:使用 Git 的方式协同编辑
- 这个方案是最理想的,但需要较大开发成本。当然也可以不严格实现取个折中。也可以完全用 github 管理,0 成本。还可以在自己服务器上搭建 GitLab。
- 使用 git 的方式管理协作。从概念上每个人的每次新编辑(可以修改多篇文章)都创建整个百科的一个新分支(以账号 ID 命名)。完成后提交 pull request(PR)。审稿人同意后 merge 到 master。每个新分支都有自己的数据库(概念上)。
- 每个作者都可以看到当前未通过审核的所有改变。
- 为避免冲突每篇文章一次只能有一个 PR,这样抢锁就成了抢 PR。与其让审稿人解决冲突,需要作者自己解决冲突(把自己的更改 rebase 到 master 的最新 commit,并确保可以编译成功)。
- 鼓励尽量把非 trivial 的公式用公式按钮创建,按钮自动生成 label。其他环境一律强制要求有 label。
- 用户可以直接申请在 master 分支中添 label,自动通过(为了防止捣乱可以限制数量)然后 pull 到自己的分支。
- 数据库的实现上,给每个分支新建一个临时数据库,但每个表格只保存变化、删除和新添加的记录(但为了偷懒也可以先复制整个数据库)。PR 通过以后删除数据库。文件也是只有改变的才进行复制(为了偷懒也可以先复制所有文章文件)。
- 作者可以向管理员申请重命名 label(某些自动生成的 label 可能希望改成有意义的缩写),可以自动把所有分支的某个 label 都重命名(要确保都没有冲突)。
性能优化
- 【完成】当以上两点做完以后,如果性能允许,可以将手动保存改为自动保存(在设置里面放一个实验开关,先默认关):当编辑器有任何修改时触发自动保存。如果连续快速打字,那么每次保存完后应该马上开始下一次保存。
- 【完成】把 Scan 程序放到前端,以减小网络需求,速度更快。当然后端也仍然需要 Scan,例如 autoref 添加 label 的任务。
- 【先不做】支持 tikz 环境,用 TikzJax。
历史版本
- 【完成】做一个历史版本页面(考虑支持移动端),网址使用
wuli.wiki/history/
。直接打开网页显示搜索框,里面提示搜索文章标题或文件名,搜索规则和编辑器的 “打开文章” 相同。搜索点击以后,网址变为 wuli.wiki/history/?文章文件名
,也可以不搜索直接用 wuli.wiki/history/?文章文件名
查看该文章的历史。
- 【完成】
wuli.wiki/history/
打开某文章后,提供历史版本的列表,功能和编辑器中的 “历史版本” 窗口类似(该窗口的新要求见下文)。列表上方显示 请点击要查看的历史版本, 或选中两个历史版本进行对比
。点击一个历史版本可以浏览网页(即时用 PhysWikiScan 编译),勾选两个历史版本可以点击列表上方 “对比” 按钮查看二者区别。列表上方同样需要 “只显示每次编辑的最后版本” 按钮(见下文),默认选中。
- 【完成】
wuli.wiki/history/
使用 diff2html
对比两个版本。注意页面上需要可以选择 diff2html
程序的 diffStyle
(char, word, line 等,其中 char 非常重要,否则连续的中文字符都会被看成一个 word)。
- 【完成】把编辑器的 “查看历史版本” 按钮重命名为 “历史版本”。
- 【完成】在编辑器 “历史版本” 界面上方添加说明:
请点击要恢复的历史版本, 或选中两个历史版本进行对比
。
- 点击后,在确认对话框中提供两个按钮,“预览” 跳到
wuli.wiki/history/
浏览该版本的 html,“确认恢复” 恢复该版本。
- 【完成】编辑器 “历史版本” 界面上方加入一个选项(默认不选)“只显示每次编辑的最后版本”。一次编辑的定义:一串连续备份中,相邻间隔小于 30 分钟。
- 【完成】在编辑器 “历史版本” 界面的每个版本右边显示(和上一个版本对比的)字符增减数,如
+80 -50
。如果勾选 “只显示每次编辑的最后版本”,就把隐藏的增减数合并显示到最后版本右边。
- 【完成】在编辑器 “历史版本” 界面每个版本左边显示勾选框,当勾选两个时,可以通过上方的 “版本对比” 跳转到对比页面
wuli.wiki/history/
。
先不做
- 做一个 Windows 的离线版的编辑器,使用 localhost,相当于把服务器端在用户电脑中运行。
- 考虑用 Electron 做一个离线版的 wuli.wiki/note。不需要网络连接(但 mathtype 应该需要网络才能用),功能完全一样,除了:添加一个按钮可以设置用户名,如果没有用户名,则弹出提示框输入用户名 “请输入任意用户名,以后可以在菜单栏修改”。不需要任何密码。另外增加一个按钮设置输入输出路径,相当于
littleshi.cn/root/user/
。默认路径为 Desktop/wuli.wiki-note/
已完成
- 【完成】在粗体按钮右边增加一个斜体按钮,图标是斜体的
I
,插入命令 \textsl{}
,功能和粗体按钮一模一样(包括选中文字以后再按下的效果)
- 【完成】增加一个 “改进意见” 按钮,图标用一个包含感叹号的三角形,放到 “对齐” 图标的右边。图标可以下拉选择 “草稿”(
\issueDraft
),“缺引用”(\issueNeedCite
),“未完成”(\issueTODO
),“缺说明”(\issueAbstract
),“缺预备知识”(\issueMissDepend
)。如果文章没有 \begin{issues}...\end{issues}
环境,那么点击任何一项时,在文章开始(例子见 Sample.tex)插入该环境,以及在该环境中插入选中的命令。如果已经存在 issues 环境,那么点击某项时在该环境内最底部插入选中的命令。
- 【完成】编辑器预览窗口中 MathJax 的渲染方式用 CHTML 而不是 SVG 会更漂亮(既然大家都用 Chrome,不存在兼容问题)
- 【完成】弃用
\begin{...}
内部自动补全功能,全部使用普通的自动补全,也就是把 config.json
里面的 "LaTeX 环境"
对应的功能弃用
- 【完成】“切换布局” 按钮移动到 “重命名” 的左边,上面可以有更多空间显示 tab
- 【完成】增加一个注释按钮,图标为
%
,下拉菜单有两个按钮,一个是 “注释选中内容”(默认),另一个 “取消注释选中内容”。分别相当于按下快捷键 ctrl + k, c
和 ctrl + k, u
。
- 【完成】“导出 md 文件” 按钮中,不需要包括标题图和标题
- 【完成】创建文章的窗口在文件名下方添加一个选填栏 “关键词”,在上方的说明改为
请输入标题(如“角动量守恒”),文件名(如"AngMom")和关键词。文件名不能超过 6 个字符,只能含有字母或数字,不能以数字开头; 关键词格式如 “关键词1|关键词2|关键词3”, 建议填写以方便检索。
- 【完成】创建文章后,在文件第二行注释关键词,如
% 关键词1|关键词2|关键词3
,光标停留在第四行。如果创建时没有填写关键词,则第二行为空,光标停在第三行
- 【完成】菜单上的 “上传图片并创建新标签” 按钮应该始终保持为默认,而不是保持上次的选择。
- 【完成】在编辑百科时,禁止关闭 “自动替换空心句号为实心” 功能(把开关锁定)
- 【完成】在 “打开文章” 列表的第二行插入
bibliography.tex
,编译该文章时,使用 PhysWikiScan --bib
而不是 PhysWikiScan --entry bibliography
,后面的 --path-in-out-data-url
选项不变
- 【完成】插入美元符号时,如果后面有字符(非空格,tab,或回车等),那么只插入一个,小中大括号同理。
- 【完成】紫色符号如
{} ()
等的颜色还要再浅一点以增加对比度
- 【完成】保存按钮的 tip 改为
保存并编译(Ctrl+S)
- 【完成】定义,定理,itemize 等环境中(不包括 equation)高亮效果应该和正文一样(现在全都是绿的)。
- 【完成】插入
\autoref{}
的时候在后面多加一个空格(前面不需要)。
- 【完成】code 按钮支持新语言:python, pythonC(python 命令行), julia, markdown, bash, makefile, json, git, cmake, regex, latex
- 【完成】符号替换设置打开时,json 编辑窗自动排版格式太慢,是否考虑关闭时自动排版并保存排版后的文件?
- 【完成】在编辑器加载页面(有转圈动画的那个)用小字显示 “建议使用 Chrome 或 Chromium 内核的浏览器”
- 【完成】替换模式下上传图片后不需要再提示 “该图片已存在,是否替换?”
- 【完成】历史版本列表中应该显示所有用户的备份以及用户名,目前好像仅显示当前用户的,在 i 图标后面的文字改为
请选择要恢复的版本(使用北京时间)
,“search backup name” 改为 “搜索”
- 【完成】预览窗口中的 css 使用 PhysWikiScan 输出文件夹中的 css(不同用户可能不一样)
- 【完成】“重新编译所有内容及目录树” 按钮的输出框不能全选复制,增加一个 “复制” 按钮。
- 【完成】“重新编译所有内容及目录树” 按钮右边加一个类似公式的下拉选项,可以选择 “编译并发布” 或者 “编译但不发布”。前者输出到 online 文件夹,后者输出到 changed 文件夹
- 【完成】在管理员和用户笔记的界面中添加 “重新编译所有内容及目录树” 按钮,按下后调用
PhysWikiScan . --path...
命令。
- 【完成】删除
main.tex
时提示 “该文件不能被删除”
- 【完成】禁止创建文件名为
index.tex
的文件
- 【完成】打开文章页面的 “i” 图标和后面的提示可以删掉,然后把搜索框里面的英文改成 “搜索标题或文件名……”
- 【完成】设置菜单中 “恢复默认设置” 时,恢复到 note-template 中的设置
- 【完成】增加一个脚注按钮,插入
\footnote{脚注}
,并自动选中 “脚注”
- 【完成】增加一个代码按钮,图标为
</>
,按下以后弹出输入框 “请指定语言(不指定则没有高亮)” "\\begin{lstlisting}[language=输入的语言]\n${1}\n\\end{lstlisting}"
- 【完成】“插入文章引用按钮” 同时也插入文章的中文名,且自动选中中文名以便修改。例如 “文章示例”
- 【完成】保存缓慢时区分是因为网络缓慢还是 PhysWikiScan 无响应。如果是前者,就一直尝试连接直到手动关闭提示框。
- 【完成】上传的图片保存文件名的格式为
文章名_序号.后缀名
- 【完成】选中一段文字后点击链接按钮,插入
\href{http://www.example.com}{被选中的文字}
,自动选中网址
- 【不要做】iOS 的 Safari 中拖动文字导致拖动整个屏幕(只有从论坛登录才会,不是编辑器本身的问题)
- 【不要做】iOS 的 Safari 中选中文字光标位置错误
- 【不要做】iOS 的 Safari 中键盘有时候无法弹出(即使外接键盘)
公式编辑器相关
- 已使用 MathType Web 作为公式编辑器插件(比上面那个 codecogs 颜值高多了)。初次使用该功能时将动态加载插件,国内测试加载时间约为 10-12s,此后使用可直接打开无需再加载。
目前公式编辑器仅在 Chrome 上测试正常,其他平台未知。已知的 bug 如下:
- 由于站点问题,编辑器加载有时会失败(提示 Connection Reset),需要支持自动重新加载
- 因为是基于 CSS 排版且用的不是数学专用字体(Times New Roman),编辑中的公式显示会和 MathJax 显示的存在样式和位置上的出入(TODO:字体看看有没有办法引用 MathJax 的字体)
- Edge 下点击 “确定” 按钮不能正常插入公式
- 移动端下不能显示 “确定” 和 “取消” 按钮
- TODO:对公式编辑器支持插入的符号进行完善,已经按照百科文章加了一些常用符号,看还有什么需求(是否需要一个复制 LaTeX 而不关闭编辑器的按钮?)
- 【暂时不需要】TODO:因该插件不支持 physics 宏包,选中大多数文章中现有公式的 LaTeX 打开编辑器,是无法正确显示的(如 $I = \int \boldsymbol{\mathbf{j}} \boldsymbol\cdot \,\mathrm{d}{ \boldsymbol{\mathbf{S}} } $ 选中这段打开编辑器),并且由编辑器生成的 LaTeX 也不符合百科的命令规范(但显示效果基本一致),需编写 processor 对命令进一步转换,如将 $\frac{\partial^{n}{\cdot}}{\partial{\cdot}^{n}}$ 转换成 $ \frac{\partial^{n}{\cdot}}{\partial{\cdot}^{n}} $,$\left\langle{\cdot}\vert{\cdot}\right\rangle$ 转换成 $ \left\langle \cdot \middle| \cdot \right\rangle $ etc.
3. 论坛 Bug
- 【完成】用户信息,修改时,可能没有邮箱,应该去除前端的非空检查
- 【完成】用户信息,修改时,不应该强制填写简介
- 【完成】用户信息,修改时,可以不设置图片。如果不设置图片,意味着清空图片
- *用户列表|用户主页,看不到用户头像
- 消息通知中光标移动会发生上下抖动
- 更改用户名似乎全都提示超过两次(应该允许每个月更改一次)
- book 页面不可以依赖 mathjax 的 cdn,和 online 页面一样使用 wuli.wiki 自己的。
4. 论坛 TODO
- 【完成】首页,在百科下面加一个 “AI 问答”,设置一个合适的图标
- 【完成】百科,右侧搜索,支持多个关键字并高亮,关键词用空格分隔,各关键词是与关系
- 【完成】百科,右侧搜索,正文预览显示缩短,范围=[第一个匹配-14,第一个匹配+200]
- 【完成】百科,右侧搜索,搜索结果要显示章节和标题。
- **论坛,公式不能正常显示。
- *百科,右侧搜索,为什么是两个 API,这就很奇怪。因为从 UI 上来看,只是对内容进行搜索,并没有对标题进行搜索。
- *首页,登陆后,如果用户未绑定手机号,那么弹出窗口要求用户绑定手机号
- *百科,右侧目录,提供标题搜索功能
- *百科,右侧目录,定位到当前文章的位置,尤其是跳转过去的
- *订单,购买和兑换时,如果用户没登录,提示登录
- *后端,提供一个 api 给编辑器,用于文章发布,启用目前的每 20 分钟静态文章同步功能
- *首页,移动端显示不全:置顶公告、精华帖,需要以某种方式显示
- 用户,个人首页,参考知乎个人动态
- 百科页面和编辑器中的历史版本按钮中需要支持浏览历史每个历史版本的网页版,这首先需要 scan 支持,对历史版本中的坏链接和找不到的图片,不进行报错而是显示占位图片和链接。
- 内容付费需要考虑一个问题就是,如果大家都可以用编辑器,那不开会员也可以打开编辑器查看所有内容。所以编辑者必须开通会员,有足够的贡献才能报销会员。
- 把访客统计数据可视化:数据基于
https://wuli.wiki/admin/system/logs/access-logs
- 画出随时间变化的趋势图以及总计,手动限制条件,例如某篇文章,部分,章,统计时间段,登录或未登录
- 网页 AI 助手充值包
- 用户历史捐款兑换积分(支付宝 2024 账单还没下载导入)
- 百科页面需要把文章标题显示在上面的白色栏中,下面的一排按钮也是
- 目录菜单弹出后,需要有一个定位按钮和一个搜索按钮。搜索按钮快速搜索文章标题或部分章节,定位按钮在目录定位当前文章并展开所在部分章节。
5. PhysWikiScan BUG
changed
- 【完成】changed.txt 中只有一篇文章的时候,发布文章会提示错误。为空时也会错误?
表格标签多次定义
【完成】删除某个表格再重新插入一个具有同样标签的表格就会出现 “标签多次定义” 的错误。
表格标题
【完成】第二个表格会具有第一个表格的标题
6. PhysWikiScan TODO
- (大方向)确保只用命令行操作也可以很舒服地维护本地笔记。
- 所有标签的引用,无论标签的类型是什么,应该都支持三种命令:
\upref{标签}
(显示为书签),\aref{链接文字}{标签}
(给指定文字加链接),\autoref{标签}
(自动生成文字加链接)
- 主要目标是最终完全不需要使用
./PhysWikiScan .
命令,每次用 `--entry` 都更新数据库中所有必要的数据。
- 做一个
\file
命令或环境用于展示附件,显示为 附件:文件名
点击可下载。由编辑器在上传附件时自动插入。(暂时用 \link
)
- 检查目录 parts 标题是否重复
- 【完成】取消限制 label 根据文章 id 命名
- 转载的文章要如何显示原作者而不是贡献者?
- pdf 图片环境移动到另一篇文章会出错
- 中文之间有若干空格或者一个空行不应该影响排版。
\upref
后面如果有空格也不应该。
- 粗体和非粗体文字之间的数字和中文也同样需要显示空格。
- 目录类型的文章中包含的文章,在
PhysWikiScan .
一开始不应该警告不包含在目录中。
- 支持编译历史版本,使用最新的数据库,如果 label 找不到就显示找不到。
- 把作者显示和排序的问题交给健叔和欧阳完成,
wuli.wiki/online
页面无需显示作者。
- 编译 pdf 时,正文中的
href
中的 url 完全不需要 escape,但是 footnote
中的 href
需要。所以为了保守起见 scan 还是只要碰到没有 escape 就报错比较好。字符:%, #
- 定义环境的抬头颜色,应与引理、定理、推论作区分。引理、定理、推论之间也建议作区分,但考虑到它们都是 “真命题”,建议区分度不要太大,即色相差不要太明显。
- 点击链接跳转到公式,表格等 tag 以后,短时间高亮目标(方法看聊天记录)。
- 支持选择题
- 支持更复杂的表格(例如斜线)
- 支持在正文中改变文字颜色
- 深度兼容
\(\)
,和 $$
完全一样对待
- 中英文标点符号都不能出现在行首。
- 不要试图追踪错误的行号!太难了,不值得。用内容定位足够了。(浪费了一天)
- 原来的
PhysWikiCheck()
去哪了?
- 代码块应该也像公式一样可以拖动,而且需要可以上下拖动。每行长度不应该有限制(研究一下 pdf 里面的代码块能否自动换行)。
- 想想怎样编译历史版本或已删除文章(或者可以用 git 的历史 html)。
-
\eentry
和 \rentry
没有处理
-
\begin{example}{}
或类似环境下面如果多空一行,html 也会空间过大。如果有 \addTODO
和会有很大空间。
-
findNormalText()
函数不应该包含 subtitle,subsubtitle 等
- 【完成】html 每个 subsection 蓝色标题前面加上序号。
- 【完成】(已在 latex 模板中基本解决)编译 pdf 时,特殊字符(如希腊字母等)会无法显示。如果有无法显示的字符,在编译的
.log
文件里面(或者 console)就会出现 Missing character: There is no ...
的提示。这时最好的办法就是替换成公式环境中的命令。如希腊字母 $\alpha$。参考 overleaf 的这篇文章。另外可以 google 一下 symbols-a4.pdf,上面提供相近的符号命令对照表。另外这个网页可以把 utf 字符转换为 latex 命令。另外,在 pdf 编译和百科编辑器的编译结果中,都实现了行内公式和汉字之间自动插入空格,和英文字母或数字间不插入空格。
- 【完成】在每篇文章底部加上目录树的链接
 
 
 
 
 
 
 
 
 
 
 
© 小时科技 保留一切权利