我想突出显示某个程序的输入代码中出现的所有数字,例如,通过着色来突出显示它们。我所说的数字是指整数、有理数和浮点数。我正在尝试列表页面,但没有成功。我注意到,可以使用定义语言的morekeywords
和alsoletter
选项来格式化特定数字,但我想为任何数字完成此任务。
例如,我想要代码
vector([3/5,4,0.4566])
显示三个绿色(或其他颜色)的数字。是否可以自动完成此操作?
答案1
类似于以下的解决方案汉明距离在 LaTeX 中的可视化, 和字符对齐问题,您可以使用literate
命令定义要应用于每个数字的样式。下面我为 添加了颜色,.
但注释掉了 的颜色,
。
由于在数字上下文之外可能会使用句点,因此我根据数字中使用的任何句点后面都会有一个数字的假设定义了不同的样式。
\documentclass[border=2pt]{standalone}
\usepackage{listings}
\usepackage{xcolor}
\newcommand*{\FormatDigit}[1]{\textcolor{blue}{#1}}
\lstdefinestyle{FormattedNumber}{%
literate={0}{{\FormatDigit{0}}}{1}%
{1}{{\FormatDigit{1}}}{1}%
{2}{{\FormatDigit{2}}}{1}%
{3}{{\FormatDigit{3}}}{1}%
{4}{{\FormatDigit{4}}}{1}%
{5}{{\FormatDigit{5}}}{1}%
{6}{{\FormatDigit{6}}}{1}%
{7}{{\FormatDigit{7}}}{1}%
{8}{{\FormatDigit{8}}}{1}%
{9}{{\FormatDigit{9}}}{1}%
{.0}{{\FormatDigit{.0}}}{2}% Following is to ensure that only periods
{.1}{{\FormatDigit{.1}}}{2}% followed by a digit are changed.
{.2}{{\FormatDigit{.2}}}{2}%
{.3}{{\FormatDigit{.3}}}{2}%
{.4}{{\FormatDigit{.4}}}{2}%
{.5}{{\FormatDigit{.5}}}{2}%
{.6}{{\FormatDigit{.6}}}{2}%
{.7}{{\FormatDigit{.7}}}{2}%
{.8}{{\FormatDigit{.8}}}{2}%
{.9}{{\FormatDigit{.9}}}{2}%
%{,}{{\FormatDigit{,}}{1}% depends if you want the "," in color
{\ }{{ }}{1}% handle the space
,
basicstyle=\ttfamily,% Optional to use this
}
\newcommand{\FormattedNumber}[1]{%
\lstinline[style=FormattedNumber]{#1}%
}
\begin{document}
\FormattedNumber{a.vector([3/5,4,0.4566])}
\end{document}