or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
为数学家设计的知识管理系统
个人使用
常见的数学家自用的知识管理系统
数学人在计算机上做笔记要弄一整个\(\LaTeX\)文件。用自己的文本编辑器修改。编译成PDF。出现一堆看不懂的编译ERROR,手动修改。编译时间也要几秒。这个系统原本是为了生成可以打印出来的论文的,因为\(\TeX\)本质是一个排版软件。对于论文来说,输出的目的就是一个完美的排版好的论文。
但如果目的只是为了记录点笔记,或者管理自己研究中发现的东西,实际上根本用不到排版的功能。甚至就算是发论文,真的排版的使用也极少。
以下是写数学笔记的人常要用到的功能。
$x^2$
\cref{section:introduction}提到的\cref{theorem:algebra}显示
可以看Bakh的论文\cite{bakh98, bakh99}
这个系统用来记录笔记或者写论文,都有很大的缺陷。
所以想要一个新的记录笔记的系统。这个系统应该是在浏览器里,输出HTML,便于分享,也便于交互。
一个写数学文章的人的一些观察
在写文章中我会觉得人存在于两个模式之中。写作和编辑。读者会在阅览模式。
这几个模式下,人的行为是不一样的。
写作模式:
几乎所有的时间是在写东西。目标是快速的将自己脑子里的东西变成(接近)自己想要的输出。
这个时候,大多时间需要输入部分无摩擦。可以看任何一个数学人用的\(\LaTeX\)文档。用数学公式的次数远远大于任何其他功能。什么加粗,列表,等等,在能快速插入数学公式之前都没啥意义。\(\LaTeX\)实际上用
\( \)
来控制公式,只有\(\TeX\)才是用$ $
. 但是$
是主流的最大原因就是输入数学公式的时候需要尽量减少摩擦.而写作的时候的确可以不需要live preview。人会输入很多东西,才要知道具体输出是什么。感觉一整段话写的差不多了,才会想看看输出结果是什么。
编辑模式:
文章几乎已经完全写好了,要开始对文章做一些修改。这个时候,人主要是看输出的结果。在输出的结果里看到了问题,希望可以直接修改。
用现有的系统,这是非常痛苦的。我\(\LaTeX\)写好了东西,改文章的时候一般是打印出pdf,仔细的看。找到了所有有问题的地方,再回到代码那里一次性的做改动。很快会发现每一个改动平均可能要花20秒的时间来找到它在源代码的哪个地方(inverse search很重要)。如果有所以60处小改动,20分钟就花在了纯粹的locating上。
如果可以直接在输出上做改动,则好很多。
阅览模式:
人只是想好好的读文章,对修改没有什么要求。这种情况应该有一些让读文章舒服的工具。也就是尽量保证人阅读的flow。
比如读文章的时候常常会有reference一个其他东西。如引用一个定理、citation等东西的时候,我希望很快的知道那个定理究竟是什么,而不是翻页翻到了那里看一下,再回来。有个pdf浏览器有那种quick preview的功能,可以到了某个链接迅速的显示出那东西究竟是什么,甚至包括少许上下文。
一些想法
所以应该有个存在3个不同的部分的系统,并且可以互相对应。也就是以下3个层之间的变换。
研究过Pandoc的人会发现这不就是pandoc: Reader, Pandoc AST, Writer。就是要多加点信息,可以保证从输出层对应到输入层。
这边要提到Typora那样。输入和输出部分几乎是放在一起的。也就是除了光标所在的地方,都是输出的样式。Typora的granularity过细。以前的版本改比较大数学公式的时候各种跳来跳去痛苦极了,不知道现在如何。改为每一行的granularity可能不错。也就是光标所在的行,只显示输入层,光标不在的行都是输出层。或者让用户可以自己选择。
要满足这样的系统,上面三层应该满足某些局部对应和局部转换的功能。好像有个叫Bidirectional Transform的东西可以研究研究。
现在的替代品
Markdown Editors和知识管理系统
市面上有一些可以用做笔记的工具,大多数用markdown。我测试过这些系统: Quiver, Roam Research, Obsidian, Coauthor, Dropbox Paper, Notion, Typora, 我自己博客(Hakyll + Pandoc + 自己的一些脚本), tiki wiki, MediaWiki, Dokuwiki, 飞书,Zettlr, Logseq。但上面这几点全能做到少之又少。数学家喜欢的功能非常小众,他们的需求有时其他人用不上。很多工具决定了一定要支持的是Markdown,整体是为了markdown用户考虑的。
以下功能很少一个软件完全支持。
$$
, 而普通人inline数学副号应该用单个$
。大多系统会有这些对习惯了某种latex方式来说反人类的设计。本人现在使用的系统
本人用自己博客的做笔记。
我现在就是文本编辑器里改改,觉得差不多了保存,手动刷新一下浏览器样子。例子:
单个页面功能上基本完美了。我写东西是在自己的sublime text里写。纯文本编辑体验自然极好。但真实的笔记,不是一切就一个文本。而且,做不到WYSIWYG。
一些WYSIWYG或者WYSIWYM的文档系统
这些系统主要不是为了做知识管理,纯粹是为了创建文档的。
如果用过LyX, TeXmacs或者已经消失的Scientific WorkPlace。会发现这些软件几乎达到了要求。写作和编辑都不怎么费力。其中他们甚至可以直接对做那些公式不改代码的做改动,可怕至极。TeXmacs是里面最成熟的软件,完全可以替代Word。但主要的问题是这个还是单个文档系统,并没有要成为一个真的笔记软件。不过TeXmacs可以很容易的用Scheme写插件,所以理论上来说应该也是可以搞起来。
有些稍微小众一点的软件。Compositor似乎是在DVI输出上面直接做修改。很久以前BaKoMa成功的做到了可以在输出上做LaTeX的修改。
听说SwiftLaTeX是一个能在浏览器里用的\(\LaTeX\) WYSIWYG editor。但是暂时好像用不起来。
这些工具和平台有很大关系。需要下载这些软件,而不适合和其他人协作。
有一个Mathcha的工具,可以说是搬WYSIWYG系统到浏览器里。里面很多设计不错,但整个软件基本功能不够完善。作者后来走的比较偏,花了大量时间去搞画图功能去了。作者也试图做过协作功能,不过迟迟没有出来。
其他
Typst是个试图替代LaTeX的系统。
Fidus Writer似乎是想替代Word,而且主要服务于学术界人士。有点像是一个你写作的所有信息都包括在里面。其中有citation啊之类的东西。
texpad是一个专门写latex的系统。这个系统非常的polished,有很多让生活很舒服的工具。可以从那里面学到不少idea。
数学家的需求
一个notes管理系统
多人协作
现在的数学家的协作方式
数学家有的用Overleaf。等于把LaTeX搬到了网上。每一个Project有个文件夹。自己可以自己写LaTeX并且在网上preview pdf输出。自己写LaTeX,Overleaf服务器去compile出pdf文件,再显示在用户面前。
大家共用一个Dropbox。大家在本机上写文章然后compile。也有团队直接用git替代dropbox。
权限管理
这些系统对于权限的管理都来自于给单个Project/文件夹的权限。
每一个Project可以给一些人权限。在这个Project里,任何文件的权限都是完全一样的。Dropbox的Project就等同于一个文件夹。
沟通
如果是多人修改同一个文件。会有一定的沟通问题。Overleaf就有直接的聊天系统。但是有时需要直接指出文件的某个部分。比如作者A没看懂作者B写的这句话,于是加一个comment,表示没有看懂。这样作者B再来看的时候会想应该如何解释。
一般做法是在LaTeX文档里写出这个comment。
有意思的project
tiptap 用来做浏览器里的editor的程序。
Lexical 也是用来做浏览器里的editor的程序。
Mathquill WYSIWYG修改数学公式,可能会比LaTeX好用也说不定。
mathlive 和上面一样.
Kerodon 应该算是一个网络版本的数学textbook, 用了一些有用的技术。
Penrose 用语言画图
SVG Math 解决katex实在太耗dom资源的问题:用SVG。
vditor 算是开源的Typora了。要研究下能否自己写parser。
vale 英文Linter
A Language for Bi-Directional Tree Transformations
LaTeX 相对于 Word 有什么优势?
An Efficiency Comparison of Document Preparation Systems Used in Academic Research and Development
【构想】Chickenglass 未来的数学家个人知识管理系统 v0.1
自己开发是没能力弄出Typora那样的东西。我前端能力不行。现有的设想是将现有的博客系统更新一下 + 一个text editor的plugin。作为v0.1的心痛。
[[
之后就冒出来一个可以autocomplete的现在可以引用的东西。或者有啥其他快捷键。这边要更加完善自己的markdown variation。叫Chicken Markdown。和Pandoc Markdown非常像。主要是解决pandoc markdown作者还没有放入他们系统里,或者永远不准备放入系统里的一些syntax。
估计我这边的做法。
优点:
缺点:
Chickenglass的多人协作系统
没想到怎么搞。应该也是project based。 Chickenglass大概设计是每个人可以开project,整个project设定permission。等同于个人版上加上个权限系统。但是具体的协作还是有一堆要考虑的。
在个人版Chickenglass上线之前不用考虑。