我正在使用该lstlisting
包,但我不想让它通过符号显示希腊字母。
例如:
\begin{lstlisting}
Parameter.delta_x = 0.002e-6;
\end{lstlisting}
我希望那条线Parameter.delta_x = 0.002e-6;
以那种方式出现,显示文本“delta”,而不是希腊符号\delta
。
我怎样才能做我想做的事?
编辑:我已经找到原因了。由于此代码是 MATLAB 代码,因此我在序言中输入了:
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
最后一个选项,useliterate
显然不符合我的需要。
答案1
总结
抛弃mcode
并使用matlab-prettifier
而不是包装:p
详细解答
您正在mcode
使用其useliterate
选项加载包,该选项定义了以下内容的文字替换delta
:
literate=%
%...
{delta}{{\tiny$\Delta$}}1 % \Delta
%...
该mcode
包实际上定义了许多其他文字替换(例如<=
by ≤
);其中一些被用作以end
不同方式突出显示 MATLAB 关键字的基本方法,具体取决于它是否表示“数组的最后一个元素”,例如
x(2:end)
或者是否关闭一个块(循环、if 语句等),例如
for i=1:10
%...
end
您可能会发现其中一些文字替换是不受欢迎的(就像我一样),但mcode
没有提供一种简单的方法来禁用它们,而不会破坏突出显示关键字的机制end
。
这里你有两个选择:
1 - 保留mcode
但去掉不受欢迎的文字替代词
这种方法很麻烦,但如果你坚持使用,这就是你必须做的mcode
。在你的序言中,在mcode
用选项加载包之后,
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
添加以下行:
\makeatletter
\ifmcode@useliterate
\lstset{%
literate=%
{~}{{$\neg$}}1 %
{<=}{{\tiny$\leq$}}1 %
{>=}{{\tiny$\geq$}}1 %
{~=}{{\tiny$\neq$}}1 %
%{delta}{{\tiny$\Delta$}}1 % comment this one out
{µ}{{$\mu$}}1 %
{(end)}{\lstbasicfont (end)}{5}
{({ }end)}{\lstbasicfont ({ }end)}{6}
{(end{ })}{\lstbasicfont (end{ })}{6}
{({ }end{ })}{\lstbasicfont ({ }end{ })}{7}
{:end}{\lstbasicfont :end}{4}
{:{ }end}{\lstbasicfont :{ }end}{5}
{end:}{\lstbasicfont end:}{4}
{end{ }:}{\lstbasicfont end{ }:}{5}
{,end}{\lstbasicfont ,end}{4}
{,{ }end}{\lstbasicfont ,{ }end}{5}
}
\else
\lstset{%
literate=%
{(end)}{\lstbasicfont (end)}{5} %
{({ }end)}{\lstbasicfont ({ }end)}{6}
{(end{ })}{\lstbasicfont (end{ })}{6}
{({ }end{ })}{\lstbasicfont ({ }end{ })}{7}
{:end}{\lstbasicfont :end}{4}
{:{ }end}{\lstbasicfont :{ }end}{5}
{end:}{\lstbasicfont end:}{4}
{end{ }:}{\lstbasicfont end{ }:}{5}
{,end}{\lstbasicfont ,end}{4}
{,{ }end}{\lstbasicfont ,{ }end}{5}
{µ}{$\mu$}1
{~}{{\fontfamily{ptm}\selectfont\texttildelow}}1 %
}
\fi
\makeatother
2 - 抛弃mcode
并使用matlab-prettifier
而不是包装
mcode
根本不要加载;只需将以下内容添加到您的序言中。
\usepackage[framed,numbered]{matlab-prettifier}
\lstset{
style = Matlab-editor,
basicstyle = \fontfamily{pcr}\selectfont\footnotesize, % if you want to use Courier
}
matlab-prettifier
不会强迫用户进行任何此类文字替换,尽管我有偏见,但它在突出显示 MATLAB 代码方面做得更好mcode
;参见这个答案, 例如。