如何使用列表包将 XML 标签括号渲染为粗体?

如何使用列表包将 XML 标签括号渲染为粗体?

我目前正在使用listings包来呈现我的 XML 片段。默认的 XML 语言设置可以正确识别元​​素、属性和文本,并且我的样式设置为呈现标签名称大胆的但是,我希望看到括号内的标签大胆的字体。

因此默认情况下标签呈现如下:<html> 但我希望<.html>(我不得不添加 . 来欺骗语法高亮)。您知道如何做到这一点吗?

我知道我可以用minted,但我有很长的片段,超过一页,而且我还需要换行,据我所知,不支持minted

答案1

按照Mico 对在列表中使用粗体斜体文本的回答,Computer Modern 字体系列中没有粗体等距字体,因此您需要使用具有粗体等距字体的字体。

借用之前的问题 XML 语法突出显示,下面是一个例子:

在此处输入图片描述

已知的问题:

  • 我不确定为什么<没有突出显示第一个非评论。

    Matthias 建议,可以通过使用escapechar并将第一个替换<!\color{red}{<}!其中!的 来克服此行为escapechar。这已纳入下面的解决方案中。

代码:

\documentclass[border=2pt]{standalone}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{pxfonts}

\lstset{
  basicstyle=\ttfamily,
  columns=fullflexible,
  showstringspaces=false,
  commentstyle=\color{gray}\upshape,
  breaklines=true,
}

\lstdefinelanguage{XML}{
  morestring=[b][\color{brown}]",
  morestring=[s][\color{red}\bfseries]{>}{<},
  morecomment=[s]{<?}{?>},
  stringstyle=\color{black},
  identifierstyle=\color{blue},
  keywordstyle=\color{cyan},
  escapechar=!,
  morekeywords={name,use,xmlns,version,type}% list your attributes here,
}


\begin{document}
\begin{lstlisting}[language=XML]
<?xml version="1.0" encoding="utf-8"?>
!\color{red}\bfseries<!xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="points">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="point">
          <xs:complexType>
            <xs:attribute name="x" type="xs:unsignedShort" use="required" />
            <xs:attribute name="y" type="xs:unsignedShort" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
\end{lstlisting}
\end{document}

替代解决方案:

使用解决方案形式ttfamily 与 bfseries 或如何在固定宽度字体中启用粗体您可以使用 Courier 字体

\renewcommand{\ttdefault}{pcr}

但我个人认为这些结果并不令人满意:

在此处输入图片描述

代码:

与上面相同但删除\usepackage{pxfonts}并添加:

\renewcommand{\ttdefault}{pcr}

相关内容