我对 Latex 还很陌生 - 我两天前才开始用。我正在写一本编程手册,所以我用到了 listings 包。但是,我还不知道如何配置 Latex,所以我只是把我从网上找到的东西拼凑起来。
我遇到的一个问题是,引号内的代码在空格中插入了一个奇怪的字符:“Social␣Networking␣Site”。我不知道如何删除这个字符,以便它只显示空格而不是奇怪的小 ␣ 字符。
这是我的配置,有人可以提供一些帮助吗?
\usepackage{listings}
\IfFileExists{xcolor.sty}{
\RequirePackage{xcolor}
}{
\RequirePackage{color}
}
%%%%%%%%%%%%%%%%%%%%%% PHP START %%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\PHPamountofcolor}{75}
\newcommand{\SourceCodeContext}{5}
%Lets define the php language colors:
\definecolor{PHP_comment_old}{HTML}{FF8000}
\colorlet{PHP_comment}{PHP_comment_old!\PHPamountofcolor!black}
\definecolor{PHP_default_old}{HTML}{000000}
\colorlet{PHP_default}{PHP_default_old!\PHPamountofcolor!black}
\definecolor{PHP_keyword_old}{HTML}{6c9c11}
\colorlet{PHP_keyword}{PHP_keyword_old!\PHPamountofcolor!black}
\definecolor{PHP_emph1_old}{HTML}{0F58A2}
\colorlet{PHP_emph1}{PHP_emph1_old!\PHPamountofcolor!black}
\definecolor{PHP_emph2_old}{HTML}{CCAA00}
\colorlet{PHP_emph2}{PHP_emph2_old!\PHPamountofcolor!black}
\definecolor{PHP_emph4_old}{HTML}{C60484}
\colorlet{PHP_emph4}{PHP_emph4_old!\PHPamountofcolor!black}
\definecolor{PHP_string_old}{HTML}{C78F0A}
\colorlet{PHP_string}{PHP_string_old!\PHPamountofcolor!black}
\definecolor{PHP_variable_old}{HTML}{C82210}%C82210
\colorlet{PHP_variable}{PHP_variable_old!\PHPamountofcolor!black}
\definecolor{PHP_number_old}{HTML}{BF1CA6}
\colorlet{PHP_number}{PHP_number_old!\PHPamountofcolor!black}
%Now we want to highlight the variables. This will be done by triggering the function \PHPhighlightvar at the start of any $ run. This function wil only highlight variables and any other identifiers will be ignored. Luckily lstlisting will only give correct identifiers so we only will have to check if the previous call was made with a $
\usepackage{fontspec}
%\usepackage[utf8]{inputenc}
%\usepackage[T1]{fontenc}
%\usepackage{courier, textcomp}
\usepackage{etoolbox}
\newtoggle{InString}{}% Keep track of if we are within a string
\togglefalse{InString}% Assume not initally in string
\newcommand*{\ColorIfNotInString}[1]{\iftoggle{InString}{#1}{\color{PHP_number}#1}}%
%helper
\newcommand{\PHPhighlightvar}[1]{\ifnum\theDollarFlag=1 \color{PHP_variable} \fi#1\setcounter{DollarFlag}{0}}
\newcounter{DollarFlag}
\lstset{
language = php,
basicstyle = \footnotesize\ttfamily,
keywordstyle = \color{PHP_keyword},
stringstyle = \color{PHP_string!90!black}\toggletrue{InString},
%this allows highlighting of variables:
literate = {\$}{{\iftoggle{InString}{\$}{\setcounter{DollarFlag}{1}\color{PHP_variable}\$\color{PHP_default}}}}1
% {"}{{{\ProcessQuote{"}}}}1% Disable coloring within double quotes
% {'}{{{\ProcessQuote{'}}}}1% Disable coloring within single quote
{0}{{{\ColorIfNotInString{0}}}}1
{1}{{{\ColorIfNotInString{1}}}}1
{2}{{{\ColorIfNotInString{2}}}}1
{3}{{{\ColorIfNotInString{3}}}}1
{4}{{{\ColorIfNotInString{4}}}}1
{5}{{{\ColorIfNotInString{5}}}}1
{6}{{{\ColorIfNotInString{6}}}}1
{7}{{{\ColorIfNotInString{7}}}}1
{8}{{{\ColorIfNotInString{8}}}}1
{9}{{{\ColorIfNotInString{9}}}}1,
identifierstyle = \color{PHP_default}\PHPhighlightvar,
commentstyle = \color{PHP_comment}\slshape,
emph =[1]{require_once, require, include_once, include, namespace, use, class, function, new},
emphstyle =[1]\color{PHP_emph1},%\bf,
emph =[2]{echo, empty, isset, array, instanceof},
emphstyle =[2]\color{PHP_emph2},%\bf,
emph =[3]{var, const, abstract,
protected, private, public,
static, final, extends, implements,
global, if, else, foreach ,for,
endforeach, endif, endfor, elseif,
as},
emphstyle =[3]\color{PHP_keyword},%\bf,
emph =[4]{return, throw, exit, __halt_compiler, continue, break},
emphstyle =[4]\color{PHP_emph4},%\bf,
breaklines = true,
captionpos = b,
rulecolor =\color{black},
keywords ={__halt_compiler, abstract, and, array,
as, break, callable, case, catch, class,
clone, const, continue, declare, default,
die, do, echo, else, elseif,
empty, enddeclare, endfor, endforeach, endif,
endswitch, endwhile, eval, exit, extends,
final, finally, for, foreach, function,
global, goto, if, implements, include,
include_once, instanceof, insteadof,
interface, isset, list, namespace,
new, or, print, private, protected, public,
require, require_once, return, static,
switch, throw, trait, try, unset, use, var,
while, xor, yield,
},
% stepnumber=1,
% numberfirstline=true,
% numberstyle=\footnotesize,
xleftmargin=4.0ex,
upquote=true,
showlines=true
}
%%%%%%%%%%%%%%%%%%%%%% PHP End %%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%% YML START %%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand\YAMLcolonstyle{\color{red}\mdseries}
\newcommand\YAMLkeystyle{\color{black}\bfseries}
\newcommand\YAMLvaluestyle{\color{blue}\mdseries}
\makeatletter
% here is a macro expanding to the name of the language
% (handy if you decide to change it further down the road)
\newcommand\language@yaml{yaml}
\expandafter\expandafter\expandafter\lstdefinelanguage
\expandafter{\language@yaml}
{
keywords={true,false,null,y,n},
keywordstyle=\color{darkgray}\bfseries,
basicstyle=\YAMLkeystyle, % assuming a key comes first
sensitive=false,
comment=[l]{\#},
morecomment=[s]{/*}{*/},
commentstyle=\color{purple}\ttfamily,
stringstyle=\YAMLvaluestyle\ttfamily,
moredelim=[l][\color{orange}]{\&},
moredelim=[l][\color{magenta}]{*},
moredelim=**[il][\YAMLcolonstyle{:}\YAMLvaluestyle]{:}, % switch to value style at :
morestring=[b]',
morestring=[b]",
literate = {---}{{\ProcessThreeDashes}}3
{>}{{\textcolor{red}\textgreater}}1
{|}{{\textcolor{red}\textbar}}1
{\ -\ }{{\mdseries\ -\ }}3,
}
% switch to key style at EOL
\lst@AddToHook{EveryLine}{\ifx\lst@language\language@yaml\YAMLkeystyle\fi}
\makeatother
\newcommand\ProcessThreeDashes{\llap{\color{cyan}\mdseries-{-}-}}
%%%%%%%%%%%%%%%%%%% YML END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
答案1
您找到清单文档了吗?可从以下网址获取加拿大运输安全局。如果您有命令行,您也可以输入命令texdoc listings
。它有 60 页长,但绝对有用。
文档的第 1.3 节以一个示例开始,并showstringspaces=false
在语言配置中使用(即,您有xleftmargin=4.0ex,
)以便“没有特殊的字符串空格”。