Quero escrever o código-fonte R em meu arquivo latex, então estou usando o pacote de listagens.
O problema é que quero que as palavras-chave R apareçam em azul, mas, por exemplo, uma variável chamada abc.log.de aparece com log em azul. Não quero que isso aconteça se log fizer parte de um nome de variável maior em R. (Exemplo abaixo)
Como devo proceder?
\documentclass{article}
\usepackage{listings}
\usepackage{color}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\lstset{frame=tb,
language=R,
aboveskip=3mm,
belowskip=3mm,
showstringspaces=false,
columns=flexible,
numbers=none,
keywordstyle=\color{blue},
numberstyle=\tiny\color{gray},
commentstyle=\color{dkgreen},
stringstyle=\color{mauve},
breaklines=true,
breakatwhitespace=true,
tabsize=3
}
\begin{document}
\begin{lstlisting}
L.V2<-log(V2)
dados.log<-dados
\end{lstlisting}
\end{document}
Responder1
Por padrão, oMarcação Rno pacote de listagens considera o período .
como umoutro(ou seja, não-letra) tipo de caractere, junto com _
e $
, que permite reconhecer palavras-chave que os incluem (como data.frame
). Porém, isso também significa que as variáveis definidas no formulário foo.keyword.bar
destacarão a palavra-chave entre os períodos.
Você pode evitar esse comportamento especificando o ponto final .
como um caractere de letra na marcação da listagem, alsoletter={.}
adicionando \lstset
. Infelizmente, isso também impedirá que outras palavras-chave contendo pontos (como data.frame
ou read.csv
) sejam destacadas.
Alternativamente, você poderia nomear suas variáveis de forma diferente em seu código (por exemplo, dados.ln
).
\documentclass{article}
\usepackage{listings}
\usepackage{color}
\lstset{frame=tb,
language=R,
keywordstyle=\color{blue},
alsoletter={.}
}
\begin{document}
\begin{lstlisting}
L.V2<-log(V2)
dados.log<-dados
\end{lstlisting}
\end{document}
Dois pontos menores:
- No seu exemplo mínimo de trabalho, não se esqueça
\documentclass{article}
. - Você não precisa mostrar todas as configurações em ummínimoexemplo de trabalho.