TeXLive本身提供了超过30000个包,这里面每个包都是独立升级的,而且几乎每天都会有一些包升级。而绝大多数Linux发行版即使安装了桌面最多也就是几千个包而已。所以,让Linux发行版为TeXLive的每个包单独打包,然后随系统升级,这是不可能的。
实际上绝大多数Linux发行版都是简简单单的把TeXLive打包成几个甚至一个大包,然后直接安装,只有少数几个发行版如Fedora、openSUSE才会把TeXLive详细打包,但是也仅仅是打包了几千个而已,不可能把TeXLive的每个包都单独打一个包。
这样的话,如果TeXLive的包升级了,Linux发行版的包就很难跟着升级,而很多时候这是必须的。
所以经过多方对比,我最后决定不再使用Linux发行版的TeXLive包,而是单独安装。
从CTAN的镜像站下载安装程序
在CTAN的镜像站,找到以下路径
CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz
下载install-tl-unx.tar.gz
安装TeXLive
下载完成后将其解压缩
然后通过命令行运行
install-tl -gui -select-repository
会弹出图形界面,让用户选择CTAN镜像站,用户选好CTAN镜像站以后,进入下一个环节。
如果没有弹出图形界面,要安装perl-tk包,不同的发行版按照自己的方法安装即可。
用户可以进行一些简单的设置,最主要的就是安装目录。
如果用户有root权限,可以安装在系统的/opt目录或者/usr/local目录,甚至还可以创建快捷方式。如果没有root权限,可以安装在~/opt目录,这时候就别创建快捷方式了。
安装程序会从CTAN镜像站自动下载TeXLive的各个宏包,并安装。
安装完成后为了能让用户自动识别,要修改~/.profile文件,加入以下内容
export PATH=~/opt/texlive/2024/bin/x86_64-linux:$PATH
这样,每次用户登录的时候,都会自动设置环境变量,就能找到TeXLive的可执行程序。
TeXLive更新
单独安装好TeXLive后,将来更新TeXLive宏包时,可以这样
tlmgr --gui
就会有图形界面,然后简单操作即可。
安装编辑器
TeXLive类似编译器,可以把LaTeX代码编译为pdf,但是TeXLive并不提供前端编辑器,编辑器要用户自己安装。
VSCode是时下流行的编辑器,也可以用来编辑LaTeX,不过说起来还是不如专门的LaTeX编辑器专业。所以最后我还是选择了TeXstudio
很多Linux发行版都带了TeXstudio,但是它们都设置了依赖关系,就是如果安装发行版自带的TeXstudio就必须要安装发行版自带的TeXLive。为了避免这种情况,我避免使用Linux发行版自带的TeXstudio
一种方法是使用TeXstudio自带的AppImage,下载下来后直接双击即可使用。但是这个AppImage在运行时和输入法有点不兼容,无法在里面输入中文,这让我最后不得不放弃了。
于是我最后选择使用Flatpak
flatpak install flathub org.texstudio.TeXstudio # 安装TeXstudio
flatpak run org.texstudio.TeXstudio # 运行TeXstudio
实际上在安装好以后,在系统的开始菜单会生成一个快捷方式,不需要命令行就可以启动。
前面因为已经把TeXLive的可执行文件都加入了PATH,此时就会自动识别
通过flatpak安装的TeXstudio可以和系统的输入法兼容,输入中文没有问题
Linux下TeXLive中文支持
TeXLive对中文的支持和操作系统无关,LaTeX对中文的支持本质在与对中文字体、中文编码、中文板式的使用。
对比Linux和Windows,中文编码和中文版式其实时一样的,其实只有中文字体有差异。因为windows下的中文字体一般是宋体simsun或者微软雅黑msyh;而在Linux系统下的中文字体,一般是文泉驿wqy或者思源source han sans,也有google noto的
所以在Linux下使用TeXLive的时候,只要调整好中文字体就可以了。
目前使用最广泛的LaTeX中文处理方案是ctex
在引入ctex宏包的时候,要指定编码为UTF8,而且还要指定fontset=none
ctex确实预设了几套字体方案,其中还有一套是ubuntu的,但是如果Linux发行版使用的字体配置和ubuntu并不一样,那就会产生问题
所以要用
fc-list > fonts.txt
看一下系统内到底有什么中文字体。对于现代Linux发行版来说,一般系统内会自带很多字体,直接在命令行看是很麻烦的,所以我把它输出到了fonts.txt,然后慢慢看。
比如说我在openSUSE用的中文字体是思源宋体Source Han Serif CN和思源黑体Source Han Sans CN,思源并没有楷体,所以我系统内而楷体是名流Arphic。而ubuntu使用的中文字体是文泉驿,所以我这里就用不了fontset=ubuntu
在openSUSE配置字体的时候就如下所示
% Linux系统下的字体配置
\usepackage[UTF8, scheme=chinese, heading, zihao=5, fontset=none]{ctex}
\ctexset{fontset=none,space=auto,today=small,% secnumdepth=3,% tocdepth=3
}
% openSUSE使用系统字体,主体使用Adobe思源字体,包括思源宋体和思源黑体,楷体使用arphic
\setCJKmainfont[BoldFont={Source Han Sans CN},ItalicFont={AR PL UKai CN}]{Source Han Serif CN}
\setCJKsansfont[BoldFont={Source Han Sans CN}]{Source Han Sans CN}
\setCJKmonofont[BoldFont={Source Han Sans CN}]{Source Han Sans CN}
如果是其他系统,可以根据fc-list的结果设定不同的字体。
当然如果不喜欢系统自带的字体,而非要采用一些其他字体的话,也是可以的。可以把额外的字体加入系统,但是一般来讲是加入到用户字体,而不是系统字体,加入系统字体比较麻烦,而且可能会破坏fontconfig字族的设定,并导致系统其他地方的字体问题。
推荐的办法就是外挂字体,直接把ttf或者otf文件放在tex文件的同一个目录。
这样的话,处理起来类似。首先把ctex宏包的编码设定为UTF8,再把fontset设置为none。后面设置字体的时候,直接指定字体的otf或者ttf文件即可。
% 不使用系统字体,而是在主目录下使用外挂字体
\usepackage[UTF8, scheme=chinese, heading, zihao=5, fontset=none]{ctex}\ctexset{fontset=none,space=auto,today=small,% secnumdepth=3,% tocdepth=3
}
\setCJKmainfont[BoldFont={FZHTK.OTF},ItalicFont={FZKTK.OTF}]{FZSSK.OTF}
\setCJKsansfont[BoldFont={FZHTK.OTF}]{FZKTK.OTF}
\setCJKmonofont[BoldFont={FZHTK.OTF}]{FZFSK.OTF}