Ошибка компиляции при использовании цвета в fontspec

Jan 03 2020

В другом потоке [здесь] [1] я не смог скомпилировать код, и мы выяснили, что это из-за «цвета».

Когда я использую этот код ...

\documentclass{standalone} 
\newcommand\fsname{Shobhika} 
\usepackage{fontspec} 
\newfontfamily\fsnsk[Script=Devanagari]{\fsname}[Colour=0000ff]\begin{document} 
test 
\end{document}

... возникает следующая ошибка:

! Ошибка LaTeX: отсутствует \ begin {document}. l.4 ... ntfamily \ fsnsk [Script = Devanagari] {\ fsname} [Color = 0000ff] \ begin {docum ...

Когда я уйду [Colour=0000ff]...

\documentclass{standalone} 
\newcommand\fsname{Shobhika} 
\usepackage{fontspec} 
\newfontfamily\fsnsk[Script=Devanagari]{\fsname}
\begin{document} 
test 
\end{document}

... тогда компиляция в порядке. У других такой проблемы нет, и они могут скомпилировать этот код с помощью цвета. Шрифты мы протестировали и работают хорошо. В чем проблема?

Ответы

1 DavidPurton Jan 04 2020 at 17:38

Ваш MWE может быть хорошо скомпилирован с последним дистрибутивом TeX.

Но ваша ошибка указывает на то, что [Colour=0000ff]она не рассматривается как аргумент \newfontfamily. В последних необязательных аргументах для \newfontfamilyпошли перед тем именем шрифта, но оно было изменено некоторое время назад , чтобы поставить дополнительный аргумент после имени шрифта.

Я подозреваю, что вы используете старую версию fontspec, которая не поддерживает размещение необязательного аргумента после имени шрифта.

Вы можете подтвердить это, добавив \listfilesв начало вашего документа TeX. Это заставит TeX вывести вашу fontspecверсию.

Моя (рабочая) версия fontspec 2019/10/19 v2.7d.

Если это так, то решение - обновить ваш TeX-дистрибутив.

А пока можно использовать:

\newfontfamily\fsnsk[Script=Devanagari, Colour=0000ff]{\fsname}

После обновления вам, вероятно, следует использовать:

\newfontfamily\fsnsk{\fsname}[Script=Devanagari, Colour=0000ff]

вместо того, чтобы помещать один параметр перед именем шрифта и один после него.