如何使用 listling 为代码中的线条着色?

如何使用 listling 为代码中的线条着色?

我有一个包含代码的文件,我想将其直接从以某种方式定义的列表中插入。我需要为以 # 开头的线条着色。请问该怎么做?

文本文件

# Code
This is code
# This is code
k
l

LaTeX 代码:

\documentclass[12pt,a4paper]{article}
\usepackage{xcolor,colortbl}
\usepackage[most]{tcolorbox}
\newtcbinputlisting[auto counter,list inside=lol,list type={lstlisting}]{\mylisting}[3][]{%
  listing file={#3},
  title=Listing,
  colback=white,
  colframe=gray!75!black,
  fonttitle=\bfseries,
  listing only,
  breakable,
  listing options={basicstyle=\scriptsize\ttfamily},
  title={Soubor \thetcbcounter: #2},
  #1
}
\newcommand{\listingsfont}{basicstyle=\ttfamily}

\begin{document}
\mylisting[label=input]{Name}{in.txt}
\end{document}

例如我读过这个问题,但我不明白。

这是现在的输出:

在此处输入图片描述

例如,所需的输出是第一行和第三行红色。

答案1

使用 listings 包,可以使用选项 指定表示注释的字符morecomment。可以使用选项 设置注释的颜色commentstyle。仅使用时,listings您通常会将这些选项放在\lstset命令中,而使用tcolorbox选项时,请进入listing options选项\newtcblisting。但是,对于morecomments使用的方法listing options不起作用,因此需要通过 进行设置lstset。此外,#必须对字符进行转义,因为它还用于表示 LaTeX 命令中的参数。

梅威瑟:

\documentclass[12pt,a4paper]{article}
\usepackage{xcolor,colortbl}
\usepackage[most]{tcolorbox}
\newtcbinputlisting[auto counter,list inside=lol,list type={lstlisting}]{\mylisting}[3][]{%
  listing file={#3},
  title=Listing,
  colback=white,
  colframe=gray!75!black,
  fonttitle=\bfseries,
  listing only,
  breakable,
  listing options={basicstyle=\scriptsize\ttfamily,
  commentstyle=\color{orange},
  %morecomment=[l]{\#}, % does not work
  },
  title={Soubor \thetcbcounter: #2},
  #1
}
\newcommand{\listingsfont}{basicstyle=\ttfamily}

\begin{document}
% set comment character here instead
\lstset{morecomment=[l]{\#}}
\mylisting[label=input]{Name}{in.txt}
\end{document}

结果:

在此处输入图片描述

答案2

与 Marin 的答案非常相似,但没有\lstsset。(我花了一段时间才明白必须添加额外的括号才能使其工作。也就是说,您需要morecomment={[l]{\#}}而不是morecomment=[l]{\#}隐藏[...]解析器的。现在看起来很明显。)然后您可以将所有内容放在定义中tcolorbox

\documentclass[12pt,a4paper]{article}
\usepackage[most]{tcolorbox}
\newtcbinputlisting[auto counter,list inside=lol,list type={lstlisting}]{\mylisting}[3][]{%
  listing file={#3},
  title=Listing,
  colback=white,
  colframe=gray!75!black,
  fonttitle=\bfseries,
  listing only,
  breakable,
  listing options={basicstyle=\scriptsize\ttfamily,
    morecomment={[l]{\#}},
    commentstyle={\color{red}}},
  title={Soubor \thetcbcounter: #2},
  #1
}
\newcommand{\listingsfont}{basicstyle=\ttfamily}

\begin{document}
\mylisting[label=input]{Name}{in.txt}
\end{document}

在此处输入图片描述

相关内容