Назначить пользовательское семейство шрифтов для setmonofont

Назначить пользовательское семейство шрифтов для setmonofont

Есть ли более простой способ, чем писать эти команды дважды?

\newfontfamily\codefont[
  Scale=MatchLowercase,
  Path = fonts/]
  {Inconsolata-dz}

\setmonofont[
  Scale=MatchLowercase,
  Path = fonts/]
  {Inconsolata-dz}

Я думаю о чем-то подобном, \setmonofont{\codefont}но, похоже, это не сработает.

решение1

Я не совсем понимаю, почему вы хотите сделать именно так; однако вы можете указать имя семейства NFSS, соответствующее \codefont:

\newfontfamily\codefont[
  NFSSFamily=Inconsolata,
  Scale=MatchLowercase,
  Path = fonts/
]{Inconsolata-dz}

\renewcommand{\ttdefault}{Inconsolata}

Полный тест, где я использовал Inconsolatazi4и прокомментировал Pathстроку.

\documentclass{article}
\usepackage{fontspec}

\newfontfamily\codefont[
  NFSSFamily=Inconsolata,
  Scale=MatchLowercase,
%  Path = fonts/
]{Inconsolatazi4}

\renewcommand{\ttdefault}{Inconsolata}

\begin{document}

This should be Inconsolata: {\codefont Test of mono font}

This should be Inconsolata: \texttt{Test of mono font}

\end{document}

введите описание изображения здесь

решение2

Вы можете использовать \newfontfamily{}[]{}команду в XeLaTeX, ее синтаксис похож на\setmainfont

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Extension=.ttf]{f1}
\newfontfamily{\myone}[Extension=.ttf]{f2}
\newfontfamily{\mytwo}[
    BoldFont = f3_bold.ttf,
    ItalicFont = f3_italic.ttf,
    BoldItalicFont = f3_bold_italic.ttf
    ]{f3.ttf}

\begin{document}

fhsdfhhrth

{\myone gfhjjrjtyjsdjry}

{\mytwo dshthrsht\textbf{rjrtj} rtjjtrjjt \textit{dfhdhsrh} }

gthfrshtr

\end{document}

Связанный контент