怎么就想起来研究一下这个?
我使用大名鼎鼎的3Blue1Brown数学动画引擎Manim,制作了一个特别小的动画视频克里金插值。在视频中,绘制文字时,Manim使用到了texlive texlive-latex-extra
这些库。专业的关系,当年的毕设没有使用过LaTex,不过它的大名还是听过的。于是视频做完后,好好研究了一下,发现这玩意书写文档,从美观度和数学公式录入的简易程度来说,简直是神器。
背景知识
LaTeX是什么不赘述了,他相当于是一个内核,往上有篇文章说的挺好,LaTeX之于Linux来说,他相当于Linux的内核,然后真正跟用户打交道的是Linux内核的各种发行版,比如Debian,Ubuntu红帽等等。LaTeX发型版也有很多,比如Tex Live,MacTex等等。但是这些发行版,一般都是命令行工具,而常见的具有语法高亮、自动补全、PDF预览等功能的应用软件,叫做LaTeX IED(软件开发中,叫做集成开发工具),是负责跟LaTeX发行版打交道的,常见的有TeXstudio,TeXworks等等。
我在我的工作电脑上,为了让Manim正常工作,是从深度软件仓库APT安装的texlive texlive-latex-extra
,然后安装的TeXstudio,体验了LaTeX排版的强大和美观。但是我发现他是不支持渲染中文的,然后找了一圈,也不知道如何解决这个问题。最终,定位到要通过引入ctex包的形式,选择XeLaTex编译器或者LuaLaTex编译器才能正确处理中文。而ctex这个包,是要通过发行版的包管理器来实现的,从这里,我就开始犯难了。
如何安装CTEX
我从CTAN下载了ctex的包,仔细研读它的文档,文档上说最常见的 TEX 发行版(TEX Live 和 MiKTEX)已收录 CTEX 宏集及其依赖的宏包和宏集。如果本地安装 TEX Live 或 MiKTEX 不是完整版本,则可能需要通过这两个发行版提供的包管理器来安装宏包。
实际上我当时还没理解TeXstudio和texlive的关系,总觉得从TeXstudio能安装ctex,或者,把我下载的ctex复制到某个目录,就能解决我的问题。然后文档上的那个tlmgr gui
长这个样子:
点哪里哪里没反应,然后我运行tlmgr install ctex
,它的提示是这样的:
(running on Debian, switching to user mode!)
tlmgr: Remote repository is newer than local (2018 < 2024)
Cross release updates are only supported with
update-tlmgr-latest(.sh/.exe) --update
Please see https://tug.org/texlive/upgrade.html for details.
我想这玩意不对啊,版本不对啥都不让我安装吗?遂作罢。
不过,我弄清了texlive的包管理工具是tlmgr
在Ubuntu上折腾了一番
我的Ubuntu是个干净的系统,我重新看了下TeXstudio的安装文档和texlive的安装文档。我用在线安装的方式,安装了texlive2024,这个过程比较长,大概7个G的东西,成功后,他提示我将texlive执行目录,设置到PATH中。我没有照做,而是从TeXstudio的官网,按照添加PPA的方式,进行了安装。按照我的预期,TeXstudio编译时,由于找不到没有texlive,一定会报错。
然而,当一切就绪后,TeXstudio能正常编译,只是依然显示不了中文。而且当我运行tlmgr install ctex
时,它提示我texlive没有进行初始化云云,那一堆提示,我忘记截图了
我自行安装的texlive都没有加进PATH中,它还能工作,这是怎么回事?我心里一阵嘀咕。然后默默的运行了apt depends texstudio
,突然就悟了,我通过PPA安装的TeXstudio,它自己处理的依赖,把必须的一些依赖,例如 texlive-base
,texlive-latex-base
,texlive-latex-recommended
等自己安装了,所以跟他打交道的不是我安装的那个,是通过apt自己安装的。
知道了问题根源,那就先卸载了通过添加PPA安装的TeXstudio,然后通过apt auto remove
的方式,卸载了texlive相关的依赖。检查了一下我自己安装的texlive,确认了tlmgr等程序都在,然后将其目录加入PATH中,通过tlmgr命令,检查ctex是不是想网上资料描述的那样,已经集成:
OK,确认完毕,万事具备。然后从TeXstudio下载其APPImage格式的执行文件,运行程序,在Help > Check LaTeX Installation中检查编译器,看看所在目录,确实是我自行安装的目录。然后在编辑区引入包名,输入中文,编译,搞定:
想想这一套东西还是挺不人性化的,按理说,安装了新包,TeXstudio应该能在快速向导里体现才好,然而并没有。然后我验证我办公电脑上textlive是否带有ctex(想想也不会,因为apt安装的,应该属于前述那种不是完整版本的情况),它竟然也是因为版本的问题二不告诉我。
软件的行为真是千差万别,叹。