在 TikZ 中绘制的线条上添加箭头

在 TikZ 中绘制的线条上添加箭头

我正在使用来自的标记列表在两个列表之间绘制比较线

\documentclass{article}
\usepackage{listings}% http://ctan.org/pkg/listings
\usepackage{tikz}% http://ctan.org/pkg/pgf
\usetikzlibrary{calc}

% https://tex.stackexchange.com/questions/1559/adding-a-large-brace-next-to-a-body-of-text/1570#1570
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}

\lstset{
    frame=single,
    mathescape % Allows escaping to (La)TeX mode within $..$
}

\begin{document}

\noindent\begin{minipage}{.45\textwidth}
\begin{lstlisting}[caption={Original code}]
  1 $\tikzmark{L1line1}$
  2
  3
  4 $\tikzmark{L1line4}$
\end{lstlisting}
  \end{minipage}\hfill
  \begin{minipage}{.5\textwidth}
\begin{lstlisting}[caption={Code after insertion of detour}]
 $\tikzmark{L2line1}$ 86
 $\tikzmark{L2line4}$ 4
\end{lstlisting}
   \end{minipage}

\tikz[overlay,remember picture] \draw[color=red] ($(L1line1)+(0pt,0.7ex)$) -- ($(L2line1)+(0pt,0.7ex)$);
\tikz[overlay,remember picture] \draw[color=blue] ($(L1line4)+(0pt,0.7ex)$) -- ($(L2line4)+(0pt,0.7ex)$);
\end{document}

结果如下:

我想在每行末尾添加箭头 - 在本例中为 4。我尝试在以下工具的帮助下编辑标记:在表格中绘制箭头但进展不大。有人能告诉我在这种情况下如何绘制箭头吗?

答案1

@whlt3 在评论中提到,->向 draw 命令添加选项将产生一个箭头。有不同的箭头选项可用,下面我使用了,-latex因为我认为在这种情况下看起来更好。在链接的问题中在表格中绘制箭头箭头样式-triangle 45可能不太明显。以下是一些箭头类型带箭头的图形,但还有更多可用选项——请参阅TikZ/PGF文档以了解更多箭头选项。

但是,在这种情况下,我还建议您采用略有不同的语法,以便您可以指定线条的outin角度,以便在直线与其他代码重叠时提供灵活性:

在此处输入图片描述

笔记:

  • 这需要运行两次。第一次用于确定线条的起点和终点,第二次用于绘制线条。

代码:

\documentclass[border=5pt]{standalone}
\usepackage{listings}% http://ctan.org/pkg/listings
\usepackage{tikz}% http://ctan.org/pkg/pgf
\usetikzlibrary{calc}

% https://tex.stackexchange.com/questions/1559/adding-a-large-brace-next-to-a-body-of-text/1570#1570
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}

\lstset{
    frame=single,
    mathescape % Allows escaping to (La)TeX mode within $..$
}

\begin{document}

\noindent\begin{minipage}{.45\textwidth}
\begin{lstlisting}[caption={Original code}]
  1 code $\tikzmark{L1line1}$
  2 some longer code here
  3 some longer code here
  4 more code$\tikzmark{L1line4}$
\end{lstlisting}
  \end{minipage}\hfill
  \begin{minipage}{.5\textwidth}
\begin{lstlisting}[caption={Code after insertion of detour}]
 $\tikzmark{L2line1}$ 86
 $\tikzmark{L2line4}$ 4
\end{lstlisting}
   \end{minipage}

\tikz[overlay,remember picture,-latex] \draw[color=red,thick,out=0,in=160] ($(L1line1)+(0pt,0.7ex)$) to ($(L2line1)+(0pt,0.7ex)$);
\tikz[overlay,remember picture,-latex] \draw[color=blue,thick,out=0,in=200] ($(L1line4)+(0pt,0.7ex)$) to ($(L2line4)+(0pt,0.7ex)$);
\end{document}

相关内容