我如何强调字符串技術清單就像在环境中使用“moredelim”选项一样lstlisting
?目标是能够在特定情况下在特定环境中对任意字符串进行排序技術清單。
使用该listings
软件包我可以执行以下操作:
\documentclass[]{scrbook}
\usepackage{xcolor}
\usepackage{listings}
\lstdefinestyle{somebox}{
frame=single,
moredelim=**[is][\color{green}]{@}{@},
}
\begin{document}
\begin{lstlisting}[style=somebox]
black @green@ black
\end{lstlisting}
\end{document}
现在,我想像这样使用该listings
库tcolorbox
:
\documentclass[]{scrbook}
\usepackage[most]{tcolorbox}
\newtcblisting{somebox}{
listing only,
listing options={style=tcblatex}
}
\begin{document}
\begin{somebox}
black green black
\end{somebox}
\end{document}
但tcolorbox
不知道“moredelim”:
\documentclass[]{scrbook}
\usepackage[most]{tcolorbox}
\newtcblisting{somebox}{
listing only,
listing options={style=tcblatex},
moredelim=**[is][\color{green}]{@}{@}
}
\begin{document}
\begin{somebox}
black @green@ black
\end{somebox}
\end{document}
错误是:
软件包 pgfkeys 错误:我不知道密钥“/tcb/moredelim”,你将其拼写错误。\begin{somebox}
答案1
您必须在键的参数内传递列表选项listings options
。如果您想在本地更改列表选项,您可以通过可选参数传递它(在 moredelim 的参数周围加上括号以保护 []):
\documentclass[]{scrbook}
\usepackage[most]{tcolorbox}
\newtcblisting{somebox}[1][]{
listing only,
listing options={style=tcblatex,moredelim={**[is][\color{green}]{@}{@}},#1},
}
\begin{document}
\begin{somebox}
black @green@ black
\end{somebox}
\begin{somebox}[moredelim={**[is][\color{red}]{@}{@}}]
black @green@ black
\end{somebox}
\end{document}
答案2
您可以定义新的列表语言
\lstdefinelanguage{mylang}
{
moredelim=**[is][\color{green}]{@}{@}
}
并在listing options
你的\newtcblisting
\newtcblisting{somebox}{
listing only,
listing options={style=tcblatex,language=mylang}
}
平均能量损失
\documentclass[]{scrbook}
\usepackage[most]{tcolorbox}
\lstdefinelanguage{mylang}
{
moredelim=**[is][\color{green}]{@}{@}
}
\newtcblisting{somebox}{
listing only,
listing options={style=tcblatex,language=mylang}
}
\begin{document}
\begin{somebox}
black @green@ black
\end{somebox}
\end{document}
输出