如何使用 listing 包在每一行的第一行空白处添加内容?

如何使用 listing 包在每一行的第一行空白处添加内容?

我正在写一本书,我使用 listings 包输入一些 matlab 代码。我想用箭头或其他任何挂在第一行边缘的东西来突出显示每个代码块。此外,代码应该缩进。

更具体地说,我想定义一个列表环境,比如“matlabcode”,这样 latex 代码

  \documentclass{article}
\usepackage{listings}
\usepackage{lipsum}

\lstnewenvironment{matlabcode}{}{}

\begin{document}
\lipsum[1]
\begin{matlabcode}
>> plot(sin(1:10))
more matlab code
more matlab code
\end{matlabcode}
\end{document}

给出了类似

在此处输入图片描述

其中箭头可能是乳胶符号、pgf/tikZ 图片等。

答案1

您可以一直使用tikz,并且如果您允许环境使用可选参数,matlabcode您可以根据每次使用的情况根据需要更改样式:

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{tikz}
\usepackage{listings}
\usepackage{lipsum}

\newcommand{\Arrow}[1][]{\tikz [overlay, line width=3pt, red, ->,#1] \draw (0,0) -- (1,0);}%

\lstnewenvironment{matlabcode}[1][]{%
    \smash{\raisebox{-3.5ex}{\Arrow[xshift = -1.2cm,#1]}}%
}{}

\begin{document}
\lipsum[1]
\begin{matlabcode}
>> plot(sin(1:10))
more matlab code
more matlab code
\end{matlabcode}

\begin{matlabcode}[blue, line width=4pt, -latex]
>> plot(sin(1:10))
more matlab code
more matlab code
\end{matlabcode}
\end{document}

相关内容