如何使用不同颜色的线条为列表添加代码突出显示?

如何使用不同颜色的线条为列表添加代码突出显示?

如何在 LaTeX 中创建列表设计,左侧有数字,每行用颜色分隔,如图所示?我找不到这样的 LaTeX 列表样式。

在此处输入图片描述

答案1

正如评论中提到的那样,对于交替线背景颜色,lstlinebgrd可以使用包(另请参阅此主题)。对于行号的背景颜色,我们可以只在列表的左侧使用一个超宽的框架,对于分隔符规则,我们可以将框架分隔符与填充颜色结合起来。

我们使用以下选项来调整布局(我认为其余部分是不言自明的):

  • framexleftmargin稍微缩进代码,linebackgroundseplinebackgroundwidth用背景颜色补偿缩进。
  • framesep在代码和左框架之间设置一个小间隙,由 填充fillcolor
  • framerule是左框架的宽度,rulecolor是其颜色,numbersep是行号与框架右侧的距离加上间隙。有一个额外的宏\numberstyle用于设置行号本身的样式,以测试小于十的数字,并在必要时用前导零填充它们。
  • xleftmargin将整个列表按框架宽度、间隙和缩进向右推,这样行号就不会打印在左边距。

完整示例代码:

\documentclass{article}

\usepackage{listings}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{lstlinebgrd}

\lstset{
    basicstyle = \ttfamily\small,
    numbers=left,
    numberstyle=\numberstyle,
    linebackgroundcolor=\linebgstyle,
    frame=l,
    % code indentation
    framexleftmargin=0.5em,
    linebackgroundsep=0.5em,
    linebackgroundwidth=\dimexpr\linewidth+0.5em\relax,
    % separation rule
    framesep=3pt,
    fillcolor=\color{green!80!black},
    % numbers background
    framerule=4em,
    numbersep=\dimexpr 1.5em+3pt\relax,
    rulecolor=\color{lightgray!50!white},
    % don't put numbers into margin
    xleftmargin=\dimexpr 4em+3pt+0.5em\relax,
}
\newcommand\linebgstyle{%
    \ifodd\value{lstnumber}%
        \color{white}%
    \else
        \color{lightgray!10!white}%
    \fi
}
\newcommand\numberstyle[1]{%
    \small\ttfamily
    \color{gray!60!black}%
    \ifnum#1<10 0\else\fi
    #1.%
}

\begin{document}

\lipsum[1]

% example code from http://esd.cs.ucr.edu/labs/tutorial/DRIVER.vhd
\begin{lstlisting}
library ieee;
use ieee.std_logic_1164.all;

entity Driver is
port(   x: in std_logic;
    F: out std_logic
);
end Driver;  

architecture behv1 of Driver is
begin

    process(x)
    begin
        -- compare to truth table
        if (x='1') then
            F <= '1';
        else
            F <= '0';
        end if;
    end process;

end behv1;

architecture behv2 of Driver is 
begin 

    F <= x; 

end behv2; 
\end{lstlisting}

\end{document}

输出

在此处输入图片描述

相关内容