列出未完全填充背景并带有内部逃逸

列出未完全填充背景并带有内部逃逸

我做了这个最小的例子来展示我遇到的问题:

\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\definecolor{background}{HTML}{EEEEEE}
\definecolor{xmlOrange}{HTML}{cc7a00}
\definecolor{xmlGreen}{HTML}{009900}

\lstset{
    basicstyle=\fontsize{9}{11}\ttfamily,
    escapeinside={\@~}{~},
    showstringspaces=true,
    breaklines=true,
    frame=lines,
    backgroundcolor=\color{background},
    commentstyle=\color{blue},
    morecomment=[s][\color{xmlOrange}]{"}{"},
    morecomment=[s][\color{xmlGreen}]{<!--}{-->},
}

\newcommand{\test}{{\colorbox{background}{\color{xmlOrange}{test Text}}}}

\begin{document}

\begin{lstlisting}
<root>
    <header test="@~\test~">
    </header>
</root>
\end{lstlisting}

\end{document}

最终结果如下:

奇怪的背景

我必须这样做,因为“测试文本”取自不同的命令(这无法更改)。

如果我完全删除颜色框,只要通过 LaTeX 代码输入到列表中的文本不会导致新行,它就会起作用。一旦发生这种情况,整行就会变成白色,看起来更糟:

空行

我尝试了许多包裹,但它们似乎都只是在列表中创建一个盒子,这对我的情况不起作用。

使用外部文件更新:

使用

\newtcbinputlisting{xmlListing}{colframe=background, colback=background, listing options={language=xml,columns=fullflexible},listing only }

然后在名为 test.xml 的文件中,使用前面的示例 xml:

\xmlListing{test.xml}

结果是:

输入问题

答案1

感谢 Ulrike Fischer(以及通过它找到的文档和其他答案),解决方案是通过简单地创建一个新的 cbtinputlisting

\newtcbinputlisting{\xmlListing}[1]{colframe=background, colback=background, listing options={language=xml,columns=fullflexible}, breakable, listing only,listing file={#1} }

然后使用它

\xmlListing{filename}

相关内容