liangjingkanji / DrakeTyporaTheme

十二种主题风格 - Material Google JetBrains Vue Juejin Purple Ayu Dark
https://theme.typora.io/theme/Drake/
MIT License
2.88k stars 270 forks source link

能否设置Latex公式的字体? #105

Closed sleepingraven closed 1 year ago

sleepingraven commented 1 year ago

描述问题

可以设置Latex公式预览中文字体

期望结果

2022-09-10_153724

截图

2022-09-10_153756

系统

思路

Typora 在公式的text标签设置了行内属性font-family="serif",所以可以设置标签的字体:

.MathJax text {
    font-family: var(--text-font);
}

其他

是否可以单独设置中文字体,比如:

:root {
    --monospace: "Fira Code", var(--zhff);
    --zhff: HYZhengYuan;
    --textff: Times, var(--zhff), serif;
    --text-font: var(--textff);
    --title-font: var(--textff);
    …
}

经过测试,代码的字体依然用了--monospace

liangjingkanji commented 1 year ago
  1. Latex貌似无法修改英文字体, 你的意思是希望在font.class仅提供修改Latex中文字体的变量是吗?

  2. 我使用你提供的思路修改的确可以修改成功, 不明白你为什么会显示为--monospace字体

sleepingraven commented 1 year ago
  1. 我的想法是用已有的--text-font,这样能保持全文的一致性,不过单独变量也是可以的但更复杂。
  2. 希望单独设置等宽字体,使代码以外的英文语句是非等宽的。(不过不知道--monospace的原理是什么)。此外我也把中文字体的变量分离了,因为有两处需要引用。
sleepingraven commented 1 year ago

也许是Typora做的处理,在“[Typora dir]\resources\style\base.css”里定义并使用了--monospace

liangjingkanji commented 1 year ago
  1. latex的英文字体无法修改, 那为什么就一定要求修改中文字体

  2. 单独设置等宽字体很容易, 字体会根据顺序依次应用, 比如第一个是仅英文字体, 那么就会应用第二个中文字体. 如果第一个字体支持中英文那么就不会应用第二个字体

sleepingraven commented 1 year ago

好吧,这些是用户的具体需求,交给他们修改font.css去实现吧。

liangjingkanji commented 1 year ago

那就新增Latex字体变量吧, 但是无法影响数学符号和英文(如果有更好的解决办法欢迎pr)

sleepingraven commented 1 year ago

还有一种情况就是如果用户想实现代码外的英文是非等宽的效果,比如:

2022-09-13_125454

一种方法是类似--text-font: Times, var(--monospace);。但是他们可能不知道对--monospace的隐式引用,这就会造成困惑:--text-font和代码字体有关系吗,还需要重新指定代码的字体吗?所以是否可以在README.md或代码注释添加对此的说明?

liangjingkanji commented 1 year ago

行尾一直就有注释

sleepingraven commented 1 year ago

是的,但是用户仍会疑惑:为什么--monospace能生效呢?特别是本身就了解css的人。这可能使他们不停地调整font.css,关闭再打开Typora,最后还要导出html文件去追根溯源。所以我觉得如果能补充注释比如:/*代码字体,由Typora原生支持*/,就清晰了。

liangjingkanji commented 1 year ago

不明白为什么注释了代码字体还会疑惑为什么生效(一个变量名称而已), 至于由Typora原生支持这种话我觉得更难理解

我已经新增--latex-font变量