我已经搜索答案一段时间了,但还没有找到解决方案。我正在记编程课程的一些笔记,需要取一行代码并用交替箭头标识每个单独的部分。例如,以下行:
这个。某物=新的另一个事物(一个参数);
现在,我需要一个箭头,从此行下方指向“此”并指向一些标识该部分的文本。现在,另一个箭头需要从此行上方的一些解释文本开始,并指向“某物”。=、new 和括号不需要任何东西,只需要其他项目。我一直在尝试使用 \underset 和 \overset,但行上的间距变得不稳定。任何指导都将不胜感激。
答案1
这是一个选项:
代码:
\documentclass{article}
\usepackage{listings}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\lstset{
basicstyle=\small\ttfamily,
escapeinside=@@,
columns=fullflexible
}
\begin{document}
Some regular text before
\vspace{1.8cm}
\begin{lstlisting}
@\tikzmark{a}@this.@\tikzmark{b}@Something = new AnotherThing(anArgument);
\end{lstlisting}
\vspace{1.3cm}
Some regular text after
\begin{tikzpicture}[remember picture,overlay]
\draw[red!80!black,->]
([shift={(10pt,-3pt)}]pic cs:a) -- ++(10pt,-20pt) coordinate(aux1);
\node[below,red!80!black]
at (aux1) {some explanatory text};
\draw[green!80!black,->]
([shift={(15pt,9pt)}]pic cs:b) -- ++(10pt,20pt) coordinate(aux2);
\node[above,green!80!black,text width=4cm]
at (aux2) {some other explanatory text; it's longer};
\end{tikzpicture}
\end{document}