我按照这里提到的几个答案来突出显示我的乳胶中的 XML 内容,并尝试将不同答案中的最佳内容组合在一起,但由于某种原因,我的 XML 中没有突出显示任何内容?有人能帮我如何使我的乳胶中的 XML 内容看起来有吸引力吗?我尝试了以下答案:https://tex.stackexchange.com/a/11134/226278
我的 XML 相当大,跨越 2-3 页,但现在它显示在带有行号的框架中,因此看起来不错,但除了 XML 标头中的某些字符串外,没有任何标签或字符串被突出显示。我想突出显示其中的标签和字符串,这样看起来会更好。
\usepackage{listings}
\usepackage{color}
\definecolor{gray}{rgb}{0.4,0.4,0.4}
\definecolor{darkblue}{rgb}{0.0,0.0,0.6}
\definecolor{cyan}{rgb}{0.0,0.6,0.6}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\geometry{a4paper}
\lstset{
language=xml,
tabsize=3,
%frame=lines,
caption=Bulk test data events for rail sector
label=code:rail1,
frame=shadowbox,
xleftmargin=20pt,
framexleftmargin=15pt,
numbers=left,
numberstyle=\tiny,
numbersep=5pt,
breaklines=true,
showstringspaces=false,
basicstyle=\footnotesize,
basicstyle=\ttfamily,
columns=fullflexible,
showstringspaces=false,
basicstyle=\ttfamily\footnotesize,
morestring=[b]",
moredelim=[s][\bfseries\color{Maroon}]{<}{\ },
moredelim=[s][\bfseries\color{Maroon}]{</}{>},
moredelim=[l][\bfseries\color{Maroon}]{/>},
moredelim=[l][\bfseries\color{Maroon}]{>},
morecomment=[s]{<?}{?>},
morecomment=[s]{<!--}{-->},
commentstyle=\color{DarkOliveGreen},
stringstyle=\color{blue},
identifierstyle=\color{red},
}
\lstinputlisting{pics/RailSector.xml}
例如这是我的示例 XML 文件,我想在 pics 文件夹中突出显示并显示它:
<?xml version="1.0"?>
<hello:mydocument>
<manufacturing>court</manufacturing>
<bend>grabbed</bend>
<quick>613049078</quick>
<am>
<brief>-2019050644</brief>
<judge>955087623.417459</judge>
<birds>green</birds>
<join>among</join>
<slight>
<box>loose</box>
<butter>table</butter>
<afternoon>good</afternoon>
<suddenly>rear</suddenly>
<kitchen>copper</kitchen>
<locate>802538930</locate>
</slight>
<wagon>1157100273.040341</wagon>
</am>
<this>1903268890</this>
<rule>-1380139207</rule>
</hello:mydocument>
答案1
在纠正了 MWE 中的两件事(添加\documentclass{article}
、\begin{document}
和\end{document}
)之后,似乎除了文本的第一行之外没有任何内容被突出显示。
这是因为所有内容都用一种颜色(栗色)定义,而注释(由 定义<? ?>
)则不同。
改变栗色并没有使一切*
突出显示。为此,您需要通过添加来告诉列表查看文本lstset
。
梅威瑟:
\documentclass{article}
\usepackage{listings}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\lstset{
language=xml,
tabsize=3,
%frame=lines,
caption=Bulk test data events for rail sector
label=code:rail1,
frame=shadowbox,
xleftmargin=20pt,
framexleftmargin=15pt,
numbers=left,
numberstyle=\tiny,
numbersep=5pt,
breaklines=true,
showstringspaces=false,
basicstyle=\footnotesize,
basicstyle=\ttfamily,
columns=fullflexible,
showstringspaces=false,
basicstyle=\ttfamily\footnotesize,
morestring=[b]",
moredelim=*[s][\bfseries\color{Maroon}]{<}{\ },
moredelim=*[s][\bfseries\color{blue}]{</}{>},
moredelim=*[l][\bfseries\color{red}]{/>},
moredelim=*[l][\bfseries\color{Maroon}]{>},
morecomment=[s]{<?}{?>},
morecomment=[s]{<!--}{-->},
commentstyle=\color{DarkOliveGreen},
stringstyle=\color{blue},
identifierstyle=\color{red},
}
\begin{document}
\lstinputlisting{RailSector.xml}
\end{document}
至于评论中的问题。\lstset
是设置定义。你告诉包你使用的是什么语言以及关键字突出显示是什么。
然后,您可以使用环境输入代码lstlisting
,或者使用以下方法从文件中输入代码(如您所做的那样)\lstinputlisting
使用lstlisting
被认为是更好的做法在这里提问时因为它允许我们查看整个代码,而无需在文件之间跳转。以下是 MWE 的示例,其中的代码为lstlisting
\documentclass{article}
\usepackage{listings}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\lstset{
language=xml,
tabsize=3,
morestring=[b]",
moredelim=*[s][\bfseries\color{Maroon}]{<}{\ },
moredelim=*[s][\bfseries\color{blue}]{</}{>},
moredelim=*[l][\bfseries\color{red}]{/>},
moredelim=*[l][\bfseries\color{Maroon}]{>},
morecomment=[s]{<?}{?>},
morecomment=[s]{<!--}{-->},
commentstyle=\color{DarkOliveGreen},
stringstyle=\color{blue},
identifierstyle=\color{red},
}
\begin{document}
\begin{lstlisting}
<?xml version="1.0"?>
<hello:mydocument>
<manufacturing>court</manufacturing>
<bend>grabbed</bend>
<quick>613049078</quick>
<this>1903268890</this>
<rule>-1380139207</rule>
</hello:mydocument>
\end{lstlisting}
\end{document}