
При компиляции документа возникает ошибка.
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
Не используйте пакеты textcomp
or gensymb
для устаревших кодировок tex с fontspec для шрифтов Unicode. –
Кодировка T1 содержит только 256 символов, поэтому была добавлена кодировка TS1, чтобы разрешить дополнительный шрифт, позволяющий использовать еще 256 символов, но вы используете шрифты TeX Gyre в кодировке TU (Unicode), которые могут содержать несколько тысяч символов в шрифте, так что нет, они не только не нужны, но, как вы видите, вредны и нарушают настройку Unicode.
В последних выпусках Latex textcomp
он даже бесполезен в классических 8-битных Latex или pdflatex, поскольку по сути он предварительно загружен, а шрифты в кодировке TS1 доступны по умолчанию.