ubuntu16.04配置Latex+中文字体

Ubuntu16.04配置Latex+中文字体

Latex安装

先前曾通过apt-get的方式装过texlive包(sudo apt-get install texlive-full)。此次通过查阅texlive的官网,重新选择了官方建议的安装方式,具体是下载并使用官方提供的一个安装器 install-tl,内含安装的主脚本和相关配置文件。在安装之前我要先卸载此前安装的texlive包,那这里先记录一下卸载。

先前安装版本的卸载

apt-get安装包的深度卸载

在卸载之前用”tex –version”查看了当前安装的texlive版本是2015年的版本;用“which tex”查看了安装的路径,路径是“/usr/bin”,进一步查看发现与“tex”一同安装在这个路径的工具包很多,足足有几十个,处理bib、dvi、postscript、pdf的都安装在这个路径中,个人不是很喜欢在这样一个主目录下安装很多很杂的工具包。那么现在开始卸载。

sudo apt --purge remove texlive-full

这个命令执行完后发现“tex”竟然还在,然后通过“Tab”对“tex”名称的补全查到很多相关的包,然后执行:

sudo apt --purge remove textlive*

这样删除所有“texlive”的包,再继续执行:

sudo apt autoremove

这样删除因依赖而安装的包,此时“tex”已经被完全删除,接下来可以参照博客对软件包进行清理:

# apt的底层包是dpkg,此时dpkg的列表中有“rc”状态的软件包,可以执行如下命令做最后清理:
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

辅助链接:awk是一种数据和文本处理的命令语言, xargs是给命令传递参数的过滤器。

通过安装器“install-tl”安装的texlive卸载

执行删除命令:

sudo rm -rf /usr/local/texlive/2018
sudo rm -rf ~/.texlive2018

通过安装器的安装方法

tar xzvf /path-to-installer/install-tl-unx.tar.gz

第二步,运行安装脚本:

sudo ./install-tl.sh

有一个提示,一般情况输入“i”就可以,等待安装完成。

  • 安装后设置PATH
    linux系统PATH设置有专门的文档说明,这里我用的方法是在用户根目录下的“.bashrc”中添加,然后更新PATH。
    在“.bashrc”中添加以下语句:
export PATH=/usr/local/texlive/2018/bin/x86_64-linux:$PATH

注意x86_64-linux要根据自己的路径名字来改,然后执行“source ~/.bashrc”,更新用户环境变量。更新完成后可以测试能否输出“tex”版本,命令是“tex –version”,如果有版本输出,说明安装成功。

  • 测试(Testing)
    用自己擅长的编辑器建立一个“test.tex”文件,输入以下内容:
\documentclass{article}
\begin{document}
Hello \LaTeX!
\end{document}

保存。
在“test.tex”路径中输入tex的编译命令:

xelatex test.tex

将输出包含以下内容的pdf。
《ubuntu16.04配置Latex+中文字体》
至此,texlive套装安装完成并测试成功。还有一种先下载源文件再安装的方法,参照博客

Latex中使用中文的两种方法: ctex类或CJKutf8包

既试用Linux也试用Windows
参考博客1
参考博客2

Ctex类

配置Ctex

ctex 宏包提供了三个字体选项:nofonts、adobefonts 和 winfonts,默认使用的是 winfonts。如果在 tex 源文件中没有使用其他选项修改字体配置,则需要操作系统中安装有中文 Windows 操作系统自带的四种 TrueType 字体:宋体(simsun)、黑体(simhei)、仿宋体(simfang)、楷体(simkai);如果使用adobefonts选项,则需要操作系统中安装有 Adobe 公司的四款 OpenType 字体:Adobe 宋体、Adobe 黑体、Adobe 仿宋、Adobe 楷体。
此处我们打算使用 nofonts 选项(也可以将nofonts设置为默认选项),然后通过CJK中文方案将ubuntu自带的中文字体设置成中文的默认字体。

字体配置:源文件中配置

我们先通过命令 fc-list :lang-zh 查看 ubuntu 系统自带的中文字体,为下一步通过CJK中文方案将ubuntu自带的中文字体设置成中文的默认字体做准备:

fc-list :lang=zh

在得到的字体中选择一种或几种字体用作latex中中文的字体,我的选择如下:

\setCJKmainfont[ItalicFont={AR PL UKai CN}]{AR PL UMing CN}  %设置中文默认字体,宋体
\setCJKsansfont{AR PL UKai CN} %设置中文无衬线字体,楷体
\setCJKmonofont{Noto Sans Mono CJK SC} %设置中文打字机(等宽)字体,这个字体不好看。。

如果不喜欢自己系统中自带的中文字体可以参考下面手动安装自己喜欢的字体。
那么建立一个简单的tex文件“test.tex”如下:

\documentclass[nofonts]{ctexart}
\setCJKmainfont[ItalicFont={AR PL UKai CN}]{AR PL UMing CN}  %设置中文默认字体,宋体
\setCJKsansfont{AR PL UKai CN} %设置中文无衬线字体,楷体
\setCJKmonofont{Noto Sans Mono CJK SC} %设置中文打字机(等宽)字体,这个字体不好看。。
\begin{document}
你好!\Latex
\end{document}

字体配置:建立字体配置文件,源文件调用

建立“myubuntufonts.sty”文件(文件名自己定),内容如下:

% mylinuxfonts.sty
\ProvidePackage{myubuntufonts}
\setCJKmainfont[ItalicFont={AR PL UKai CN}]{AR PL UMing CN}  %设置中文默认字体,宋体
\setCJKsansfont{AR PL UKai CN} %设置中文无衬线字体,楷体
\setCJKmonofont{Noto Sans Mono CJK SC} %设置中文打字机(等宽)字体,这个字体不好看。。
\endinput

保存这个文件。现在要将myubuntufonts.sty放的位置告知texlive。texlive 提供一个变量 TEXMFHOME(需要给这个环境变量设定值,也就是绝对路径,我是在“~/.bashrc”中添加了“export TEXMFHOME=~/.texmf-var/fonts”,然后执行“source ~/.bashrc”更新环境变量),给用户存放自己独立安装的宏包、字体等。宏包文件需要放置到目录TEXMFHOME/tex/latex或者它的子目录 下。我是将myubuntufonts.sty放到目录“~/.texmf-var/fonts”下,然后重新编译如下“test.tex”文件。

\documentclass[nofonts]{ctexart}
\usepackage{myubuntufonts}
\begin{document}
你好!\Latex
\end{document}

这里创建的“myubuntufonts”宏包只限对当前用户可见,如果要设置全局可见的宏包,请继续参照博客

配置默认字体配置选项

参照博客
在我的ubuntu下也没有安装 windows 系统的字体。而 ctex默认是使用的字体配置选项是winfonts,那么我们每个要使用 ctex宏包的tex文档中都要设置nofonts 选项。
ctex 宏包提供了一个配置文件 ctexopts.cfg,该文件中的代码会在ctex宏包的开头(选项定义后面)执行。我们可以使用此文件设置 ctex 宏包的默认选项。我的ubuntu16.04使用“install-tl”安装器安装的配置文件的地址是“/usr/local/texlive/2018/texmf-dist/tex/latex/ctex/config”,读者可以自行查找。

cd /usr/local/texlive/2018/texmf-dist/tex/latexctex/config
sudo cp ctexopts.cfg.template ctexopts.cfg #备份
sudo vi ctexopts.cfg

在配置文件最后输入以下内容

% ctexopts.cfg: set default options
\ExecuteOptions{nofonts}
\endinput

保存,然后运行“texhash”(teTeX、TeXLive、fpTex用texhash;web2c用mktexlsr,参考博客)命令。此时ctex宏包默认的字体选项便改为nofonts了。

安装中文字体

查看已经安装好的中文字体
fc-list :lang=zh
查看是否存在具体字体的详细信息
fc-match -v “AR PL UKai CN”
安装字体,以安装windows字体为例,参考博客

  • 在/usr/share/fonts/下新建文件夹,如“winFonts”目录,把从windows下拷贝过来的字体都放在这个目录里,这里就是把雅黑字体Yahei.ttf 放进来:
sudo mkdir -p /usr/share/fonts/winFonts
sudo cp Yahei.ttf /usr/share/fonts/winFonts/
  • 改变字体文件权限:
sudo chmod 644 /usr/share/fonts/winFonts/Yahei.ttf 

注:改成755也没问题的,但起码要444;这里修改雅黑字体文件的权限为644,即当前用户读写,当前组用户只读,其他用户只读。

  • 安装字体
cd /usr/share/fonts/winFonts/
sudo mkfontscale #创建雅黑字体的fonts.scale文件,它用来控制字体旋转缩放
sudo mkfontdir #创建雅黑字体的fonts.dir文件,它用来控制字体粗斜体产生
sudo fc-cache -fv #建立字体缓存信息,也就是让系统认识认识雅黑
  • 删除字体,直接删除“yehei”文件夹,然后执行“sudo fc-cache -fv”。
  • 批量安装字体。
    在主目录下建立一个字体Fonts文件夹,将需要安装的字体拷贝过来。
    sudo mkdir -p /usr/share/fonts/Fonts
    sudo cp *.ttf /usr/share/fonts/winFonts/
    然后,修改权限,全部安装:
sudo chmod 644 /usr/share/fonts/winFonts/*
cd /usr/share/fonts/winFonts/
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv

CJKutf8包

如果不能使用ctex类(ctexart),比如要使用beamer,那么此时可以使用CJKutf8包来解决中文输入的问题,方法如下:

\documentclass[10pt, mathserif]{beamer} % font and size
...
\usepackage{CJKutf8}    % encode for Chinese
\begin{document}
...
\begin{CJK}{UTF8}{gbsn} % all Chinese should be enclosed between the commands
...
\end{CJK}
\end{document}

注意“\begin{CJK}{UTF8}{gbsn}”中的“gbsn”不是上文中系统字体,是CJKutf8包中自带的字体,具体包含哪些可以从自己的安装目录中查,我查到的CJKutf8字体的路径是“/usr/local/texlive/2018/texmf-dist/tex/latex/cjk/texinput/UTF8”,如下[我的CJK中文字体]:
《ubuntu16.04配置Latex+中文字体》
那就是可以使用的字体有“bkai bsmi gbsn gkai mj”,我的这里面有一个字体不能用“song”,细心的你会发现这个字体少一个文件,我起初看别人的代码都用的这个字体,一直生成不了PDF文件,搞了我几天,刚刚才发现这个问题,换了字体,可能的原因是在这个最新版本中“c70song.fdx”文件缺失了。至于有没有方法自己做CJKutf8字体,我还没有探究,先用这这些字体,TTM心累了,哈哈哈。

    原文作者:XQ10
    原文地址: https://blog.csdn.net/xiaoqu001/article/details/80981338
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞