您能为列表中的变量指定单词分隔符吗?

您能为列表中的变量指定单词分隔符吗?

根据指定的语言,列表包可能会或可能不会将变量名内的关键字加粗。

Python 很好

\documentclass{article}
\usepackage{listings} 
\begin{document}
\begin{lstlisting}[language=Python]
    sum_of_the_values = sum(vals)
\end{lstlisting}
\end{document}

Python latex 输出

但 R 并不好

\documentclass{article}
\usepackage{listings} 
\begin{document}
\begin{lstlisting}[language=R]
    sum.of.the.values = sum(vals)
    sum_of_the_values = sum(vals)
\end{lstlisting}
\end{document}

R乳胶输出

您能指定单词分隔符吗?我可以使用 R 的点分隔变量 ( sum.of.the.values) 吗?

答案1

listings包按三种方式对字符进行分类:数字, 和其他.R的语言listings,其定义可以在lstdvrs.dtx,其定义是将周期视为其他

\lst@definelanguage{R}%
   %...
   alsoother={._$},%
   %...
  }%

然而,据我所知,在 R 中,句点 ( .)可用于标识符其使用方式类似于许多其他语言中的下划线:作为名称分隔符。

在这种情况下,listings应该被告知要将句点字符视为其他,但作为. 诸如这样的字符串sum.of.letter.values将被视为单个标识符,并且sum该特定字符串中的子字符串将不再(错误地)突出显示为 R 关键字。

在此处输入图片描述

\documentclass{article}
\usepackage{listings} 
\begin{document}
\begin{lstlisting}[language=R,alsoletter=.]
    sum.of.the.values = sum(vals)
    sum_of_the_values = sum(vals)
\end{lstlisting}
\end{document}

相关内容