使用{listings}宏包以及依賴於{listings}的宏包,如{matlab-prettifier}和{mcode}等,在{beamer}中都有兼容性問題.
解決的辦法是給{frame}環境添加選項[fragile]:
\begin{frame}[fragile]
\frametitle{XeLatex中自定義matlab代碼語法高亮-標題}
下面是Matlab代碼,顯示效果如下:
\begin{lstlisting}
s=0;
for n=1:0.5:10
s=s+n;
end
disp(s)
\end{lstlisting}
顯示效果如上.
\end{frame}
上面的代碼可以正確顯示matlab語法高亮.
下面給出完整代碼,編譯環境MikTex2.9+Win7+Xelatex,在windows中強烈推薦MikTex,而不是TexLive.看看發行說明再使用過後你就會感受很深!
\documentclass[mathserif]{beamer}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ctex}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{color}
\usepackage{textcomp} % 應該加上,否則容易報錯
%===========================================================
\definecolor{myred}{rgb}{0.9,0,0}
\definecolor{mygreen}{rgb}{0,0.9,0}
\definecolor{myblue}{rgb}{0,0,0.9}
\definecolor{DarkGreen}{rgb}{0.0,0.4,0.0}
\definecolor{myPurple}{rgb}{0.5,0.0,0.5}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%注意begin{frame}[fragile]
%==========================================================
\lstloadlanguages{Matlab}
\lstset{language=Matlab,
frame=single, % single framed
basicstyle=\small\ttfamily,
keywordstyle=\color{myblue}\bfseries, % primitive funs in bold blue
stringstyle=\color{myPurple}, % strings in purple
showstringspaces=false,
commentstyle=\usefont{T1}{pcr}{m}{sl}\color{DarkGreen}\small,
tabsize=4,
% more standard MATLAB funcs
morekeywords={for,end,if,elseif,break,switch,case,while,do,on, off, disp,plot,subplot,grid,hold,clc,clear,figure,handles,get,set,imwrite,aviread, strcat,aviinfo},
morecomment=[l][\color{myblue}]{...}, % line continuation (...) like blue comment
numbers=left,
numberstyle=\tiny\color{myblue},
firstnumber=1,
stepnumber=1
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
%----------------------------------------------
\begin{frame}[fragile]
\frametitle{自定義matlab代碼-標題}
下面是matlab代碼,顯示效果如下:
\begin{lstlisting}
s=0;
for n=1:0.5:10
s=s+n;
end
disp(s)
\end{lstlisting}
顯示效果如上.
\end{frame}
%-------------------------------------------
\end{document}
使用{listings}宏包在{article}中等問題會少一點.