使用最少的 LateX 编码在表格和图像上方绘制箭头

使用最少的 LateX 编码在表格和图像上方绘制箭头

有人可以在 LateX 中重现以下内容吗:

在此处输入图片描述

我广泛研究了各种软件包和技术,但似乎没有一个能够完全重现所需的行为。我本质上希望可以毫无顾忌地从 A 画到 B:无论页面上有什么(LateX 表格、图像、方程式)。

这是生成所示表格和内容的 MWE:

\documentclass{article}
\usepackage{array}
\usepackage{graphicx}
\usepackage{cellspace}

\begin{document}
\begingroup
\setlength\cellspacetoplimit{3pt}
\setlength\cellspacebottomlimit{3pt}
\begin{table*}[h!]
\begin{tabular}{| S{p{0.5\linewidth}} | S{p{0.7\linewidth}} |}
    \hline
    \begin{minipage}[t]{0.5\textwidth}
        \vspace{0pt}
    \includegraphics[width=0.7\linewidth]{gadget1a} \newline
    Set the leftmost control to equal the point 3 value \newline            
    \end{minipage}  
    & 
    \begin{minipage}[t]{0.9\textwidth}
    \vspace{0pt} 
    \includegraphics[width=0.75\linewidth]{gadget1b} 
    \end{minipage} \\
    \hline
\end{tabular}
\end{table*}
\endgroup

\end{document}

答案1

您可以使用tikzmark库轻松地将事物放置在任意位置。通常,您希望尝试避免直接计算页面上的位置,并且该\tikzmark命令允许您将节点放置在任何类型的文本中,然后可以在叠加中引用该节点tikzpicture。对于图像顶部的任意点,最简单的方法是使用命令将图像作为 TikZ 节点插入\tikzmarknode,然后根据实际图像手动进行绝对定位。这是您的文档的一个版本(我从您的示例中复制了图像,因此箭头的剩余部分仍然存在。)

您必须使用 TikZ 编译文档[overlay, remember picture]两次才能正确看到效果,因此如果第一次编译出现覆盖材料放置错误,请不要惊慌。

\documentclass[]{article}
\usepackage{array}
\usepackage{graphicx}
\usepackage{cellspace}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}


\begin{document}
\begingroup
\setlength\cellspacetoplimit{3pt}
\setlength\cellspacebottomlimit{3pt}
\begin{table*}[h!]
\begin{tabular}{| S{p{0.5\linewidth}} | S{p{0.7\linewidth}} |}
    \hline
    \begin{minipage}[t]{0.5\textwidth}
        \vspace{0pt}
    \includegraphics[width=0.7\linewidth]{gadget1a} \newline
    Set the leftmost control to equal the point 3 \tikzmarknode[draw=red,very thick, inner sep=2pt]{value}{value} \newline            
    \end{minipage}  
    & 
    \begin{minipage}[t]{0.9\textwidth}
    \vspace{0pt} 
    \tikzmarknode{gadget1b}{\includegraphics[width=0.75\linewidth]{gadget1b}}
    \end{minipage} \\
    \hline
\end{tabular}
\end{table*}
\endgroup
\begin{tikzpicture}[remember picture,overlay]
\node[draw=red,very thick,minimum width=.5in,minimum height=.15in] at ($(gadget1b.center)-(1in,.175in)$) (c) {};
\draw[->,red,very thick] (value.east) [in=-90,out=-10] to (c);
\end{tikzpicture}
\end{document}

代码输出

答案2

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
positioning,
quotes, shapes}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[
node distance = 2mm,
image/.style = {scale=0.4,},
arr/.style = {-Triangle, semithick}
]
\node[image] (A) {\includegraphics[height=8in, width=3in]{example-image-a}};
\node[image,above right=of A] (B) {\includegraphics{example-image-b}};
\draw[blue, dashed, arr, ]
(A.south)++(0,16pt)node[red,circle,draw,inner sep=6pt]{} to[out=-60,in=-90, looseness=1.2]
(B.south)++(0,12pt)
;
\end{tikzpicture}
\caption{a caption}
\label{fig12}
\end{figure}
\end{document}

相关内容