當我在Ubuntu系統下使用Latex時,在編譯渲染時報出了Font "xxx" does not contain requested
這種錯誤,其中xxx
就是你可能想使用的字體格式。linux
然而個人Ubuntu系統已經正確安裝了一些經常使用中文字體,然而在LaTeX編譯渲染時還會報出錯誤。字體
因爲筆者爲了解決這個問題翻遍了國內外的網站、去查看了Texlive官方文檔,耗費了許多時間與精力,都沒能找到解決個人問題的信息,人們的時間每每都很珍貴,通常找不到解決方案事後,每每都不了了之,本着互聯網極客精神(開源精神),在這裏將筆者的解決過程記錄並分享,但願人們能夠將這種精神繼承並傳承下去。網站
我甚至在Texlive的官方安裝文檔中看到這麼一段話:code
能夠看到關乎於LaTeX排版中讓人很是頭疼的問題就是漢字的一些處理了,好在今天有很是多好用的宏包能夠解決處理這個問題。blog
首先看一下筆者出現的問題:繼承
能夠看到終端給出的錯誤提示是未能找到已安裝的字體(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
。
因此筆者的猜測是正確的,因此在咱們不一樣的系統、不一樣的字體文件中,每一個人發生沒法正確找到咱們想要使用的字體的錯誤可能都不同,由於咱們使用的字體文件不一樣可能致使咱們的在應用中使用字體中須要引用的名稱的不一樣而不一樣,因此出現這種問題咱們要具體問題具體分析,對症下藥。