列表中的 classoffset 影响 commentstyle

列表中的 classoffset 影响 commentstyle

使用列表包时遇到问题...

\lstset{
otherkeywords={0,1,2,3,4,5,6,7,8,9,(,),[,],:},
morekeywords={0,1,2,3,4,5,6,7,8,9,(,),[,],:},
classoffset=0, keywordstyle=\color{violet}, deletekeywords={0,1,2,3,4,5,6,7,8,9,(,),[,],:,function,endfunction,length,deff,zeros,sqrt,xtitle,cos,sin,intg,abs},
classoffset=1, keywordstyle=\color{brown!75}, morekeywords={0,1,2,3,4,5,6,7,8,9},
classoffset=2, keywordstyle=\color{blue!50}, morekeywords={(,),[,]},
classoffset=3, keywordstyle=\color{orange!50!yellow}, morekeywords={:},
classoffset=4, keywordstyle=\color{red!80!black}, morekeywords={function,endfunction},
classoffset=5, keywordstyle=\color{blue!40!cyan}, morekeywords={length,deff,zeros,sqrt,xtitle,cos,sin,intg,abs},
classoffset=0,
}

但问题出在评论中。当我输入:

commentstyle=\color{green!30!gray},

我的评论不是绿色,但每个数字都变成了紫色。

我如何强制评论忽略 classoffset 样式?

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{fullpage}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{listings}
\lstset{
language=Scilab,
literate=
  {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
  {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
  {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
  {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
  {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
  {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
  {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
  {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
  {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
  {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
  {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
  {€}{{\euro}}1 {£}{{\pounds}}1,
otherkeywords={\%pi,0,1,2,3,4,5,6,7,8,9,(,),[,],:},
morekeywords={\%pi,0,1,2,3,4,5,6,7,8,9,(,),[,],:},
classoffset=0, keywordstyle=\color{violet}, deletekeywords={\%pi,0,1,2,3,4,5,6,7,8,9,(,),[,],:,function,endfunction,length,deff,zeros,sqrt,xtitle,cos,sin,intg,abs,rand},
classoffset=1, keywordstyle=\color{brown!75}, morekeywords={0,1,2,3,4,5,6,7,8,9},
classoffset=2, keywordstyle=\color{blue!50}, morekeywords={(,),[,]},
classoffset=3, keywordstyle=\color{orange!50!yellow}, morekeywords={:},
classoffset=4, keywordstyle=\color{red!80!black}, morekeywords={function,endfunction},
classoffset=5, keywordstyle=\color{blue!40!cyan}, morekeywords={length,deff,zeros,sqrt,xtitle,cos,sin,intg,abs,rand},
classoffset=6, keywordstyle=\color{red!50!white}, morekeywords={\%pi},
classoffset=0,
numbers=left,
breaklines=true,
commentstyle=\color{green!30!gray},
}
\begin{document}
\begin{lstlisting}
clear;
clf();
// Définition de la fonction f (signal) :
function y=signal(t)
    y=cos(t*2*%pi*4/128)+cos(t*2*%pi*13/128)+cos(t*2*%pi*40/128)+(1/2)*rand(1,1);
endfunction
// Valeur moyenne de f(x) pour un x donné :
function y=signalMoy(t)
    y=cos(t*2*%pi*4/128)+cos(t*2*%pi*13/128)+cos(t*2*%pi*40/128)+(1/4);
endfunction
// ------------------------------ Question 2 ------------------------------ //
// ----- Méthode de Newton Cotes ----- //
// Méthode de Simpson composée
// J'utilise le programme fait au Tp1 pour la méthode de Newton Cotes et je
// l'applique aux poids [1/3,4/3,1/3] pour avoir la méthode de Simpson 1/3
// Comme dans le TP nous reprenons le fonctionnement elem et comp.
\end{lstlisting}
\end{document}

图片

要达到这个目的相当困难,但是我完全不知道该如何继续修改颜色......

如果有人能帮助我那就太好了!

答案1

因此读完之后按列表包显示颜色的字符串列表包中的 literate 和 breaklines=true 存在问题我可以以某种方式解决这个问题。

自从被使用,您需要使用 XeLaTeX 和 LuaLaTeX 来运行此代码。原因是literate=*您的重音字符会破坏它;而且,如果您要使用大量重音字符,使用 unicode 编译器将使您的工作更轻松。

\documentclass{article}

\usepackage{fontspec}
\usepackage{fullpage}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{etoolbox}
\lstset{
language=Scilab,
literate=*
  {0}{{{\color{brown!75}0}}}1 {(}{{{\color{blue!50}(}}}1
  {1}{{{\color{brown!75}1}}}1 {)}{{{\color{blue!50})}}}1
  {2}{{{\color{brown!75}2}}}1 {[}{{{\color{blue!50}[}}}1
  {3}{{{\color{brown!75}3}}}1 {]}{{{\color{blue!50}]}}}1
  {4}{{{\color{brown!75}4}}}1 {:}{{{\color{orange!50!yellow}:}}}1
  {5}{{{\color{brown!75}5}}}1
  {6}{{{\color{brown!75}6}}}1
  {7}{{{\color{brown!75}7}}}1
  {8}{{{\color{brown!75}8}}}1
  {9}{{{\color{brown!75}9}}}1,
classoffset=0, keywordstyle=\color{violet}, deletekeywords={function,endfunction,length,deff,zeros,sqrt,xtitle,cos,sin,intg,abs,rand},
classoffset=4, keywordstyle=\color{red!80!black}, morekeywords={function,endfunction},
classoffset=5, keywordstyle=\color{blue!40!cyan}, morekeywords={length,deff,zeros,sqrt,xtitle,cos,sin,intg,abs,rand},
classoffset=6, keywordstyle=\color{red!50!white}, morekeywords={\%pi},
classoffset=0,
numbers=left,
breaklines=true,
commentstyle=\color{green!30!gray},
}
\makeatletter
\patchcmd{\lsthk@SelectCharTable}{)}{`}{}{} 
\makeatother 
\begin{document}
\begin{lstlisting}
clear;
clf();
// Définition de la fonction f (signal) :
function y=signal(t)
    y=cos(t*2*%pi*4/128)+cos(t*2*%pi*13/128)+cos(t*2*%pi*40/128)+(1/2)*rand(1,1);
endfunction
// Valeur moyenne de f(x) pour un x donné :
function y=signalMoy(t)
    y=cos(t*2*%pi*4/128)+cos(t*2*%pi*13/128)+cos(t*2*%pi*40/128)+(1/4);
endfunction
// ------------------------------ Question 2 ------------------------------ //
// ----- Méthode de Newton Cotes ----- //
// Méthode de Simpson composée
// J'utilise le programme fait au Tp1 pour la méthode de Newton Cotes et je
// l'applique aux poids [1/3,4/3,1/3] pour avoir la méthode de Simpson 1/3
// Comme dans le TP nous reprenons le fonctionnement elem et comp.
\end{lstlisting}
\end{document}

相关内容