关于Linux下Texlive无法找到已安装字体的问题与解决

当我在Ubuntu系统下使用Latex时,在编译渲染时报出了Font "xxx" does not contain requested这种错误,其中xxx就是你可能想使用的字体格式。

然而我的Ubuntu系统已经正确安装了一些常用中文字体,然而在LaTeX编译渲染时还会报出错误。

由于笔者为了解决这个问题翻遍了国内外的网站、去查看了Texlive官方文档,耗费了许多时间与精力,都没能找到解决我的问题的信息,人们的时间往往都很珍贵,一般找不到解决方案过后,往往都不了了之,本着互联网极客精神(开源精神),在这里将笔者的解决过程记录并分享,希望人们可以将这种精神继承并传承下去。

我甚至在Texlive的官方安装文档中看到这么一段话:

可以看到关乎于LaTeX排版中让人非常头疼的问题就是汉字的一些处理了,好在今天有非常多好用的宏包可以解决处理这个问题。

首先看一下笔者出现的问题:

可以看到终端给出的错误提示是未能找到已安装的字体(installed font not found),有了这句话的提示,笔者想的可能是,在我的系统上已安装了的字体中,在LaTeX中未能正确地引用,查看代码中可以看到:

在这里设置字体格式的时候我们设置楷体对应的字体文件为simkai,我们可以查看我们的字体库中是否有simkai.ttf楷体的字体文件:

在Ubuntu存放字体的目录/usr/share/fonts/下可以使用find命令查找:

可以看到,笔者的系统中已经存放了simkai.ttf这个字体文件,为什么LaTeX还没有找到这个字体呢。

通过一番排查,原来是在Ubuntu中,对字体的使用并不仅仅是字体文件名,而是另一个别名。

我们可以使用fc-list来查看系统可用的字体列表,然后使用grep匹配simkai.ttf的字体文件,可以进一步查看字体的信息:

原来,图中1号框中的名字只是字体文件名,而在系统应用中想要使用这个字体,我们需要指定2号框中的字体名,例如本图,我们想要使用楷体就需要指定KaiTi楷体这个名字。

回到LaTeX代码中,将之前出现错误原因的simkai替换成KaiTi即可解决问题。

为了进一步验证笔者的猜想,可以看到上图代码中,在KaiTi的下面还使用了SimSun宋体的使用,然而SimSun并不报错,这里笔者想可以继续查看SimSun的字体信息,其后面的别名应该包含SimSun

所以笔者的猜想是正确的,所以在我们不同的系统、不同的字体文件中,每个人发生无法正确找到我们想要使用的字体的错误可能都不一样,因为我们使用的字体文件不同可能导致我们的在应用中使用字体中需要引用的名称的不同而不同,所以出现这种问题我们要具体问题具体分析,对症下药。

关于Linux下Texlive无法找到已安装字体的问题与解决的更多相关文章

  1. PyCharm无法找到已安装的Python类库的解决方法

    一.问题描述 软件系统:Windows10.JetBrains PyCharm Edu 2018.1.1 x64 在命令行cmd中安装python类库包Numpy.Matplotlib.Pandas. ...

  2. linux下各安装包的安装方法

    <转>linux下各安装包的安装方法   一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root ...

  3. linux下搭建lamp环境以及安装swoole扩展

    linux下搭建lamp环境以及安装swoole扩展   一.CentOS 6.5使用yum快速搭建LAMP环境 准备工作:先更新一下yum源  我安装的环境是:apache2.2.15+mysql5 ...

  4. Linux下非root用户如何安装软件

    Linux下非root用户如何安装软件 从windows转移到Linux的用户最开始总会有各种不适,因为这种不适最终放弃linux的不在少数.对于这类人只能说可惜,还没有领略到linux的美好就过早放 ...

  5. LINUX下中文语言包的安装(转)

    在安装盘上已经有各种语言包了,我们只需要找到他们,并安装就可以了.中文的是fonts-chinese-3.02-9.6.el5.noarch.rpmfonts-ISO8859-2-75dpi-1.0- ...

  6. [转载]Linux下非root用户如何安装软件

    [转载]Linux下非root用户如何安装软件 来源:https://tlanyan.me/work-with-linux-without-root-permission/ 这是本人遇到的实际问题,之 ...

  7. (转)linux下weblogic12c集群的安装部署

    本文介绍linux下weblogic12c集群的安装部署,版本12c,其他版本操作会有所不同,但其大体操作基本都是一样的 关于weblogic的集群,在此就不多做介绍了,如果有不了解的朋友可以百度搜索 ...

  8. Linux下通过源码编译安装程序

    本文简单的记录了下,在linux下如何通过源码安装程序,以及相关的知识.(大神勿喷^_^) 一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件: ...

  9. linux下Redis与phpredis扩展安装

    ++++++++++++++++++++++++++++++++++++++++++++++linux下Redis与phpredis扩展安装++++++++++++++++++++++++++++++ ...

随机推荐

  1. 3、oracle表空间及索引操作

    3.1.创建表空间和用户授权: 1.创建表空间: CREATE TABLESPACE <表空间名> LOGGING DATAFILE '<存放路径>' SIZE 50M AUT ...

  2. JS 获取JSON数据的属性

    var tballdata= [{ 'tjqd': '', 'A1': '', 'A2': '', 'A3': '', 'A4': '' };] if (typeof tballdata[0] == ...

  3. 基于uni-app全端弹框组件uaPopup「兼容h5+小程序+app端|nvue」

    uniapp兼容多端自定义模态弹框组件UAPopup ua-popup 一款轻量级的uniapp自定义弹窗组件.汇集了android.ios和微信弹窗效果(msg消息.alert提示框.dialog对 ...

  4. Rsync+Sersync数据实时同步(双向)

    Rsync+Sersync数据实时同步(双向) 服务介绍 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.se ...

  5. [心得体会]Spring容器的初始化

    1. Spring容器的初始化过程 public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) {   ...

  6. php加密压缩文件

    前言 近几日,用爬虫采集的了一些数据,存放到硬盘中,随着数据量越来越多,所以想上传到网盘当中,可是不加下密又觉得不放心, 所以开始用PHP的zip模块进行压缩加密. 开始 $zipArc = new ...

  7. shell下读取文件数据

    参考:https://www.imzcy.cn/1553.html while和for对文件的读取是有区别的: 1. for对文件的读是按字符串的方式进行的,遇到空格什么后,再读取的数据就会换行显示 ...

  8. NTP时间服务器配置

    1.服务器端配置: #允许这些IP向自己同步时间 restrict x.x.x.x mask x.x.x.x nomodiy notrap #当和定义的所有server服务器无法同步后,和自身同步 s ...

  9. C语言:渔夫打鱼晒网问题

    //如果一个渔夫从 2011 年 1 月 1 日开始三天打渔,两天晒网,编程实现当输入 2011 1 月 1 日以后的任意一天,输出该渔夫是在打渔还是在晒网. #include <stdio.h ...

  10. [善用佳软]Chrome插件之彩云小译

    最近公众号新推出个栏目[善用佳软],旨在和大家分享各种小插件和制作开源小软件. 最近在浏览外网时,发现一个贼好用的翻译神器---[彩云小译],在网页端就可以快速的对照翻译出来,经过试用发现无论是速度还 ...