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