XeTeX \颜色失控参数

XeTeX \颜色失控参数
\documentclass[11pt,a4paper] {article}
%\usepackage{fontspec}
\usepackage{listings}
\usepackage{xcolor}
%\setmainfont[BoldFont=黑体]{宋体}
%\XeTeXlinebreaklocale "zh"
%\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
%\linespread{1.5}
\lstset{
numbers = left,
framexleftmargin=10mm,
frame=none,
backgroundcolor=\color[rgb]{245,245,244},
keywordstyle=\bf\color{blue},
identifierstyle=\bf,
numberstyle=\color[RGB]{0,192,192},
commentstyle=\it\color[RGB]{0,96,96},
stringstyle=\rmfamily\s1shape\color[RGB]{128,0,0},

showstringspaces=true
}
\begin {document}
\title{实验课}
\author{ coolwind}
\maketitle
\paragraph{}
你好,世界!

\begin{lstlisting}[language=C]

#include <stdio.h>

int main()
{
printf("Hello world!\n");

for (int i = 0; i < 100; i ++)
{
for (int j = 0; j < 100; j ++)
{
int tmp = i + j;
}
}
return 0;
}

\end{lstlisting}
\end {document}

答案1

您的代码有三个问题。

  1. 的参数中有一个空行\lstset,这是不允许的。
  2. 传递给键的值中有一个拼写错误(\s1shape而不是) 。\slshapestringstyle
  3. 您误用了\color。无论可选参数是rgb还是RGB,强制参数都应该是逗号分隔或空格分隔的三个值列表,分别对应红色、蓝色和绿色。但是,当可选参数是 时rgb,每个值必须介于 0 和 1 之间,而当可选参数是 时RGB,每个值都必须是 8 位整数(0 到 255)。

在此处输入图片描述

\documentclass[11pt,a4paper] {article}
%\usepackage{fontspec}
\usepackage{listings}
\usepackage{xcolor}
%\setmainfont[BoldFont=黑体]{宋体}
%\XeTeXlinebreaklocale "zh"
%\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
%\linespread{1.5}
\lstset{
numbers = left,
framexleftmargin=10mm,
frame=none,
backgroundcolor=\color[RGB]{245,245,244}, % <--- use RGB (not rgb) if you use 8-bit color specifications
keywordstyle=\bf\color{blue},
identifierstyle=\bf,
numberstyle=\color[RGB]{0,192,192},
commentstyle=\it\color[RGB]{0,96,96},
stringstyle=\rmfamily\slshape\color[RGB]{128,0,0}, % <---- you had a `1' instead of an `l' in \slshape
% <--- do not leave blank lines in the argument of \lstset
showstringspaces=true
}
\begin {document}
\title{实验课}
\author{ coolwind}
\maketitle
\paragraph{}
你好,世界!

\begin{lstlisting}[language=C]

#include <stdio.h>

int main()
{
printf("Hello world!\n");

for (int i = 0; i < 100; i ++)
{
for (int j = 0; j < 100; j ++)
{
int tmp = i + j;
}
}
return 0;
}

\end{lstlisting}
\end {document}

答案2

删除第 19 个空白行就可以帮我编译了!

相关内容