首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >突出显示lstlisting中的代码块

突出显示lstlisting中的代码块
EN

Stack Overflow用户
提问于 2009-08-20 06:32:22
回答 5查看 27K关注 0票数 36

我在一个列表环境中有一堆代码。如何在环境中仅突出显示(彩色背景)特定的代码块?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-24 22:44:51

您可以在清单中使用\colorbox和转义字符:

添加到您的前言

代码语言:javascript
复制
  \usepackage{color}

  \definecolor{light-gray}{gray}{0.80}

然后在你的文档中这样使用它:

代码语言:javascript
复制
  \begin{lstlisting}[escapechar=!]
  def mult(m: Matrix[Int], n: Matrix[Int]) {
    val p = !\colorbox{light-gray}{new MatrixInt}!(m.rows, n.cols)
  }
  \end{lstlisting}
票数 44
EN

Stack Overflow用户

发布于 2009-08-21 19:03:07

这有点麻烦,但是您可以将代码分解到几个lstlisting环境中。

代码语言:javascript
复制
\begin{lstlisting}
line
\end{lstlisting}
\vspace{-\baselineskip}
\begin{lstlisting}[backgroundcolor=\color{pink}]
very
interesting
\end{lstlisting}
\vspace{-\baselineskip}
\begin{lstlisting}
line
line
\end{lstlisting}
票数 11
EN

Stack Overflow用户

发布于 2021-04-14 16:33:24

下面是一个使用tikz突出显示(部分)单行的解决方案

代码语言:javascript
复制
\documentclass[pdftex,11pt,a4paper]{article}

\usepackage{listings}

\usepackage{tikz}
\usetikzlibrary{tikzmark}

% Command to place a TikZ anchor at the current position
\newcommand{\mytikzmark}[1]{%
  \tikz[overlay,remember picture,baseline] \coordinate (#1) at (0,0) {};}

\newcommand{\highlight}[2]{%
  \draw[yellow,line width=14pt,opacity=0.3]%
    ([yshift=4pt]#1) -- ([yshift=4pt]#2);%
}

\begin{document}
    \begin{lstlisting}[escapechar=@, language=C]
@\mytikzmark{hl1Start}@struct@\mytikzmark{hl1End}@ S {
    double @\mytikzmark{hl2Start}@salary_@\mytikzmark{hl2End}@;
};
    \end{lstlisting}
        
    \begin{tikzpicture}[remember picture, overlay]
        \highlight{hl1Start}{hl1End}
        \highlight{hl2Start}{hl2End}
    \end{tikzpicture}   
        
\end{document}

然后你就会得到

因此,保留了lstlisting的语法突出显示。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1304315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档