当退出数学模式时,如何告诉 lstlisting 使用无衬线字体?

当退出数学模式时,如何告诉 lstlisting 使用无衬线字体?

标题说明了一切,下面举一个例子:

\lstset{
    mathescape=true,
    basicstyle = \sffamily
}

\begin{lstlisting}
    func($x_0$)
\end{lstlisting}

在哪里以及如何将此处使用的数学字体设置为无衬线斜体?

答案1

\documentclass[a4paper]{article}
\DeclareMathVersion{sans}
\SetSymbolFont{operators}{sans}{OT1}{cmbr}{m}{n}
\SetSymbolFont{letters}  {sans}{OML}{cmbrm}{m}{it}
\SetSymbolFont{symbols}  {sans}{OMS}{cmbrs}{m}{n}

\usepackage{listings}
\lstnewenvironment{sflisting}[1][]
  {\lstset{#1}\mathversion{sans}}{}

\begin{document}

\lstset{
    mathescape=true,
    basicstyle = \sffamily
}

\begin{sflisting}[caption=Function]
    func($x_0$)
\end{sflisting}
\end{document}

这使用了 CMBright 字体,它们与 CM Sans 基本兼容。

答案2

\documentclass[a4paper]{article}
\usepackage{sansmath}
\usepackage{listings}
\lstnewenvironment{sflisting}[1][]
  {\lstset{mathescape,basicstyle=\sffamily,#1}\sansmath}
  {}
\begin{document}

\begin{sflisting}[caption=Function]
    func($\frac1x \mathrm{d}x$)
\end{sflisting}

\end{document}

在此处输入图片描述

相关内容