我想为 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
选项,但这是一个品味问题。