百科问答小站 logo
百科问答小站 font logo



知乎上的公式是怎么打出来的? 第1页

  

user avatar   GalAster 网友的相关建议: 
      

知乎上个月换了新的渲染引擎, 尘埃落定最终还是扔了原来自己瞎写的后端LaTeX方案换了MathJax.

我很早以前就在博客上部署了MathJax, 积累了一些经验分享给大家.

噫, 有没有可能知乎用了自研的 呢...

很简单, 搞个递归宏 deffoo{ar}defar{foo}ar

MathJax: 哇, Zhihu你丫给我的什么破玩意儿, 老娘要溢出了...

事实上 ,他们使用相同的语法但是已经是不同的东西了.

下面开始我们的学习. 注意, 严格来讲, 下文偷懒写法 = 错误写法.

点击编辑栏上方的 或者按下Ctrl+Shift+E启动...手机就算了.


基础篇

MathJax与LaTeX最大的不同就是支持Unicode字符...废话当年还没UTF呢, 不过能输入和能正常显示还是有点距离的...

简单地说,有些符号比如乘法在LaTeX中必须写成 a imes b但是现在可以直接打 a×b

我的输入法是能直接打中文出符号的, 这样的话可读性高, 但是在有些键盘上只能打英文.

       运算符号: +-×(	imes)÷(div)±(pm) 负正(mp) 点乘 dot 不等号: ≠(
e
eq
ot=) 大于>大于等于≥(ge)小于等于≤(le)恒等equiv. 否定加
ot. 约等于: 约等于≈ (approx波浪dot=等号加点) 近似不能用~,必须用sim     

点击编辑器的选项亦可, 但是能记命令就不用很麻烦的去点了...

反斜杠 称为命令,括号 被称为界定符, 用作消除歧义.

分数使用frac{a}{b}, ,不引起歧义可以省略括号比如frac12, ,不过不推荐这么写.


函数在前面加一个 符号即可, 比如sin(x),

使用^上标如 a^x , 使用 _ 下标如 log_a(x), .

开根号sqrt{a}, 开高次根sqrt[n]{a}, ,其他写法 oot n of a, .

绝对值|x|, 回车上面那个符号.

大括号{ },因为大括号现在是界定符,要输入就要用命令,同理反斜杠是\.

按照标准,自然底数需要写成 mathrm{e}^x, ,但一般偷懒写 e^x即可, .

你有函数就加个试一试能不能正体,不行的话用下面的方法.

比如光学里有个函数叫菲涅尔S函数, 没法自动正体, 那么可以这样写operatorname{FresnelS} , ,可以偷懒写成 ext{FresnelS}.


微积分使用比较特殊的符号规则,看上去差不多但是已经重载过了,或者叫宏.

极限:lim_{x o 0}f(x), ,可以看到下标_现在变成了正下方.

如果出于某些原因要下标那就要括起来屏蔽其影响{lim}_{x o0}f(x), .

求和sum_{n=1}^infty a_n, ,虽然sum和Sigma一模一样,但是行为完全不同,这就是重载.

求积一样的sum改prod即可 ,prod和Pi长得一样.

有时候可以看到这种:

呀,这个作者搞错了吧,他写的Sigma_{n=1}^infty a_n 吗?
,唉,好像不大一样?

不不,他写的没错,还是sum_{n=1}^infty a_n,但是style不同.

style有四种,大多数网站区分前两种, 除了知乎所有公式前都加displaystyle.

求导标准写法f^prime(x), ,但是我都是偷懒写f'(x)的...

微分标准写法frac{mathrm{d}^n}{mathrm{d},x^n}f(x), ,但我偷懒省略mathrm.

偏微分标准写法,frac{partial^n}{partial x^n}f(x), ,这个没法偷懒了...

积分标准写法int_a^b f(x),mathrm{d}x, ,当然偷懒省略,mathrm了咯...

二重积分iint f(x,y),mathrm{d}x,mathrm{d}y, ,偷懒同上...

三重积分,iiint,四重积分iiiint,五重积分反正不是iiiiint,五重以上就用idotsint, .

曲线曲面积分,oint_{C}f(x), mathrm{d}x + g(y), mathrm{d}y, ,偷懒同上.

交集igcap_{i=1}^infty p_i, 并集igcup_{i=1}^infty p_i, .


       egin{matrix}   1&2\  3&4\  end{matrix}     

,要括号的话怎么办呢? 一种方法是使用自适应括号.

       left[egin{array}{cc|c}   1&2&3\ hline   4&5&6\ end{array}
ight]     

array可以用来画表

当然这种常用的肯定封装好了.

向量用vec,vec可以作用在一个或两个字母上

       	exttt{vec}&vec{x} mathrm{or} vec{AB}\     

       egin{cases}  a_1x+b_1y+c_1z=frac{p_1}{q_1} \[2ex]   a_2x+b_2y+c_2z=frac{p_2}{q_2} \[2ex]   a_3x+b_3y+c_3z=frac{p_3}{q_3} \[2ex]  end{cases}     

大括号可以用case, 后面[2ex] 用于调整间距.

当然用自适应括号也行, left{ XXX ight. 注意有个点, 加点表示什么也不显示.

组合符号:inom{k}{1}, ,当然你不知道用矩阵打也是可以的...我干过...

连分式:

       x = a_0 + cfrac{1^2}{a_1         + cfrac{2^2}{a_2         + cfrac{3^2}{a_3          + cfrac{4^4}{a_4 + cdots}}}}     

我不怎么喜欢这么写, 有点像Lisp, 在没有自动括号补全的情况下少打一个会很开心.

注意这种情况下要写cfrac,不然会挤在一起

还有很多符号可以dfrac,dbinom, frac, binom,分别表示displaystyle和 extstyle

       x = a_0 + frac{1^2}{a_1+}           frac{2^2}{a_2+}           frac{3^2}{a_3+}            frac{4^4}{a_4+} cdots     

应该推广这种写法...还省空间不是...

       underset{j=1}{overset{infty}{LARGEmathrm K}}frac{a_j}{b_j}     

很有趣的一个事情, sum到底是怎么重载的? 就是这样, .

更多测试参考:知乎公式编辑器测试


你也许会想,这么多命令怎么记得住?

当然记不住, 我又不是最强大脑,但我也不是高中生了, 没人考我记忆力.

忘记说明用不到, 说明不重要, 每天都用的命令是不会忘的.

偶尔遇到现在也不用查手册, 现在不有手写识别嘛

webdemo.myscript.com/vi

哦对了, Mathtype 这种玩意儿少用, 复制出来的代码毫无可读性,严重不符合标准.

何况有个合适的IDE打TeX比Mathtype快多了, 允许你用快捷键还是比你快...


进阶篇

回忆下积分的写法,int_a^b f(x),mathrm{d}x,其中,称为占位符,用来调节间隔使公式更美观. 空格必须使用占位符否则不算...当然 ext{ 空格 } 有效但是这是错误用法...

  1. 占位符以一个大写M为标准, 标为quad
  2. qquad 那就是双空格
  3. , 相当于 3/18个 quad
  4. : 相当于 4/18个 quad
  5. ; 相当于 5/18个 quad
  6. 相当于 6/18个 quad
  7. ! 相当于-3/18个 quad

MathJax支持以下九种字体

正常不填就行, 强制转换的话那就是

这个是AmsLaTeX里的, 其他字体可以试试unicode

       unicode[Garamond]{x41} unicode[Arial]{x41}      

,这不是标准里的, 这个和浏览器有关, 还和知乎开了什么css-family有关...

字号,字号从大到小依次为:

       HugehugeLARGELargelarge
ormalsizesmallfootnotesizescriptsize	iny     

暂时不可以用fontsize

啊,到了大家最关心的颜色环节了.

其实就是 color{色调}表达式 ,比如标题就是color{blue}{颜色},

内置的颜色列表应该是:知乎「插入公式」诀窍 列举的这些

这张表是用MathJax画的哦...

支持16位色代码color{#A00}{ exttt{#A00}},

支持256位色color{#00A000}{ exttt{#00A000}},

不支持带透明通道颜色代码 #0000A000

不支持标准的实值颜色代码{color[rgb]{1, 0, 0} exttt{red}},知乎你开包开少了吧...

本来的话背景色一般该写成pagecolor{色调},但是好像也不接受...

好吧,那就box[颜色]{表达式},一样可以,box[pink,2pt]{f(x)},

box还可以用来加框

       box[#EFF,5px,border:2px solid red] {e^x=lim_{n	oinfty} left( 1+frac{x}{n} 
ight)^nqquad (1)}\     

知乎把宏取消掉了,那这个没啥好讲了

说个万能对齐环境 align

       egin{align} f(x) & = (m+n)^2 \      & = m^2+2mn+n^2 \ end{align}     

不知道用什么对齐那就用align(你知道就用专门的那个)

可以模拟一切对齐case,array,alignat等等的对齐

直接在需要对齐处加&即可

更多环境参考 Share Latex

宏说白了就是替换

可是知乎上礼拜把宏取消掉了

宏也是最精彩最难的部分...

有宏的话我甚至能画出图来

宏有多强一门语言就有多强

强到极值这门语言强到了极点

我们统称这样的语言为Lisp



完成度1.0.0, 最后更新17.12.19(宏)

参考文档:

  1. 巨型TeX备份
  2. 知乎「插入公式」诀窍
  3. 知乎公式编辑器测试
  4. Help:数学公式
  5. Share Latex
  6. 知乎用户:自学 LaTeX 可以读什么书入门?

全面程度递增, 看完第六个 LaTeX 入门那绝对超越我了(其实看完第五个就能超我了)...




  

相关话题

  在知乎长期关注自己不认同的大V是一种怎样的体验? 
  知乎上最牛的程序员有办法知道任意匿名用户是谁吗? 
  知乎是否有继续发展的潜力? 
  自从上知乎以来,你的哪些观点、观念(三观)、知识(常识)发生扭转了? 
  大家对于知乎盐值的体验如何? 
  知乎是否真如大多数人所认为的一样不及 Quora? 
  如果知乎放到修仙世界会被问什么问题? 
  有哪些知乎用户经常被搞错性别? 
  你在知乎遇到最可怕的事情是什么呢? 
  通过众筹建立类似 2015 年知乎的一个网络社区需要哪些步骤? 

前一个讨论
化学式里面1-x的角标是什么意思?
下一个讨论
围棋榧木棋盘一个5000元,蛤碁棋子一副2000元,是不是阻碍了围棋的发展?





© 2024-05-19 - tinynew.org. All Rights Reserved.
© 2024-05-19 - tinynew.org. 保留所有权利