我想在我的文档中包含外部文件列表。这些列表应该具有纯色背景和圆角。问题是,如果我使用 和 定义样式frameround
,backgroundcolor
背景会与圆角重叠。
\lstdefinestyle{cftemplate}{
frameround=tttt,
rulecolor=\color[rgb]{0.7, 0.7, 0.7},
frame=single,
backgroundcolor=\color[rgb]{0.95, 0.95, 0.95}
}
已经存在一个问题如何防止这种行为lstlisting
. 尤其是这个答案中提出的解决方案对我来说效果很好。所以我尝试扩展此解决方案,以便它也能与 一起使用\lstinputlisting
。但是,在代码片段中用“lstinputlisting”替换“lstlisting”的明显尝试没有奏效。
我的问题是:如何创建具有背景和圆角的 \lstinputlisting,其中背景不与圆角重叠?
答案1
如果你愿意使用tcolorbox
包及其listings
库,这很容易;使用您可以定义一个可定制的宏,其行为与定义可定制版本\newtcbinputlisting
非常相似:\lstinputlisting
\newtcblisting
lstlisting
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{beramono}% just for the example
\usepackage[many]{tcolorbox}
\tcbuselibrary{listings}
\newtcbinputlisting{\myinputlisting}[2][]{%
listing engine=listings,
listing file={#2},
colback=red!15,
colframe=red!75!black,
arc=12pt,
listing only,
listing options={
language={[LaTeX]TeX},
basicstyle=\ttfamily\small
},
breakable,
#1
}
\newtcblisting{mylisting}[1][]{%
listing engine=listings,
colback=red!15,
colframe=red!75!black,
arc=12pt,
listing only,
listing options={
language={[LaTeX]TeX},
basicstyle=\ttfamily\small
},
breakable,
#1
}
\usepackage{filecontents}
\begin{filecontents*}{Gtest1.tex}
\newlength\mylena
\newlength\mylenb
\setlength\mylena{2cm}
\setlength\mylenb{4cm}
\addtolength\mylena{\mylenb}
\end{filecontents*}
\begin{document}
\myinputlisting{Gtest1.tex}
\begin{mylisting}[]
\documentclass{article}
\begin{document}
test
\end{document}
\end{mylisting}
\end{document}