
編譯我的文檔時發生錯誤。
Font shape `TS1/TeXGyreTermes(0)/m/n' undefined
(Font) using `TS1/cmr/m/n' instead.
它並沒有阻止我的文件被正確編譯,但收到這個警告真的很煩人。
我已經發現我可以使用以下命令修復它:透過查看過時\DeclareFontFamilySubstitution{TS1}{\rmdefault}{udidot}
包的文檔substitutefont
這裡。
使用此 MWE,您可以重現該錯誤:
\documentclass{scrreprt}
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}
\usepackage{gensymb}
\usepackage{textcomp}
\usepackage{scrlayer-scrpage}
\begin{document}
asdf
\end{document}
正如您所看到的,它來自樹包的組合\usepackage{gensymb} \usepackage{textcomp}
,\usepackage{scrlayer-scrpage}
如果我只使用gensymb
我會收到警告:
Not defining \perthousand.
Not defining \micro.
這可以透過使用套件來修復textcomp
,但這會產生初始錯誤。
有人可以向我解釋為什麼會發生這種情況以及該命令\DeclareFontFamilySubstitution{TS1}{\rmdefault}{udidot}
實際上在做什麼嗎?
答案1
不要將舊版 tex 編碼與 unicode 字型的 fontspec 一起使用textcomp
或包裝。 gensymb
–
T1 編碼只有256 個字符,因此添加TS1 編碼是為了允許額外的字體,因此允許另外256 個字符,但您使用的是TU (Unicode) 編碼的TeX Gyre 字體,該字體可以在字體中包含數千個字符,所以不,它們不僅是不必要,如您所見,它們是有害的並且會破壞 unicode 設定。
在最近的 Latex 版本中,textcomp
甚至在經典的 8 位元 Latex 或 pdflatex 中都沒有什麼用處,因為它本質上是預先載入的,並且預設可以使用 TS1 編碼字體。