在 XeLaTeX 中设置列​​表中的字体

在 XeLaTeX 中设置列​​表中的字体

我想为 XeLaTeX 中的列表设置特定字体。

\newfontfamily\consolas{Consolas}

\lstdefinelanguage{MyLanguage}{
    basicstyle=\ttfamily,
    .... % my language definition
}
\lstnewenvironment{MyLanguage}[1][]{
    \lstset{language=MyLanguage,#1}
    \consolas  % do not work
}
{}

\begin{document}
\begin{MyLanguage}[caption={....}]
...
\end{MyLanguage}
\end{document}

我知道可以使用以下命令为整个文档设置默认等宽字体

\setmonofont{Consolas}

并且它可以工作,但我不希望其他等宽字体的东西(例如 URL)。

也许可以将等宽字体设置为默认字体并使用它

\lstnewenvironment{MyLanguage}[1][]{
    \lstset{language=MyLanguage,#1}
    \setmonofont{Consolas}
}
{\setmonofont{??default??}}

答案1

“正确”的方法是使用\setmonofont

\usepackage{fontspec}
\setmonofont{Consolas}

\usepackage{listings}

\lstdefinelanguage{MyLanguage}{ .... } % my language definition
\lstnewenvironment{MyLanguage}[1][]
  {\lstset{language=MyLanguage,basicstyle=\ttfamily,#1}}
  {}

MyLanguage如果你想要只为你的列表使用特定的等宽字体,你可以这样做

\newfontfamily{\consolas}{Consolas}

\lstnewenvironment{MyLanguage}[1][]
  {\lstset{language=MyLanguage,basicstyle=\consolas,#1}}
  {}

我也会添加这个columns=fullflexible选项,但这是一个品味问题。

相关内容