如何在 latex overleaf 中突出显示 XML 代码

如何在 latex overleaf 中突出显示 XML 代码

我按照这里提到的几个答案来突出显示我的乳胶中的 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}
    

相关内容