语法和坐标计算如何与 Tikz 库“calc”配合使用?

语法和坐标计算如何与 Tikz 库“calc”配合使用?

我想使用 Ti 在 LaTeX 中注释图像z. 我对 Ti 还不太熟悉z,所以我一直在关注教程这很好地分解了它。

在教程中,他们将图像添加到节点,然后设置自定义坐标空间以使注释更容易。到目前为止,一切顺利。在我的特殊情况下,我正在并排处理两个图像,我希望它们位于同一个坐标空间中。但是,它们的高度不一样。为了使 x 轴的缩放起作用,我想出了使用它|-来获取右图像东南角与 x 轴的垂直交点。

所以,我的问题是:这段代码有效,但是为什么呢?如果我在这里利用错误或其他问题,正确的做法是什么?正如您所见,有一个开括号,但没有关闭,如果我像这样关闭它,它就会中断:

\begin{scope}[x={($.1*(img2.east |- (0,0))$)}, ...
                                         ^

坐标是如何计算的?在这种情况下语法实际上是如何工作的(使用括号和$)?我在任何地方都找不到有关这个特定问题的任何信息,而且我也没有找到任何关于一般语法的良好文档。

我很高兴听到有关此事的任何意见。


我的代码和编译后的图像:

\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{figure}[tbp]
    \centering
    \begin{tikzpicture}
        \node[above right, inner sep=0] (img1) at (0,0) {
            \includegraphics[width=.7\textwidth]{example-image}
        };
        \node[below right, inner sep=0] (img2) at ($(img1.north east)$) {
            \includegraphics[width=.3\textwidth]{example-image}
        };
        
        % Annotations
        \begin{scope}[x={($.1*(img2.east |- (0,0)$)}, y={($.1*(img1.north west)$)}]
            \draw[red, step=1] (0,0) grid (10,10);
            
        \end{scope}
    \end{tikzpicture}
    \caption{Caption}
    \label{fig:my_label}
\end{figure}
\end{document}

编译图像

答案1

如果将两个图像放在一个节点中,则可以按照教程中的格式使用代码:

\documentclass{standalone}
 
\usepackage{tikz}
\usetikzlibrary{calc}

\usepackage[export]{adjustbox}
 
\begin{document}
 
\begin{tikzpicture}
 
% Include the image in a node
\node [
    above right,
    inner sep=0] (image) at (0,0) {\includegraphics[width=.7\textwidth,valign=t]{example-image}\includegraphics[width=.3\textwidth,valign=t]{example-image-duck}};
 
% Create scope with normalized axes
\begin{scope}[
x={($0.1*(image.south east)$)},
y={($0.1*(image.north west)$)}]
 
% Grid
    \draw[lightgray,step=1] (image.south west) grid (image.north east);
 
% Axes' labels
    \foreach \x in {0,1,...,10} { \node [below] at (\x,0) {\x}; }
    \foreach \y in {0,1,...,10} { \node [left] at (0,\y) {\y};}
 
% Labels
    \node[circle,fill=green] at (7.25,6.75){\small 2};
 
    \draw[latex-, very thick,green] (2.5,1) -- ++(-0.5,0)
        node[left,black,fill=white]{\small Voltage source};
 
    \draw[stealth-, very thick,green] (5,1.75) -- ++(0.5,-0.5)
        node[right,black,fill=white]{\small Dspace card};
 
    \draw[very thick,green] (0.5,2.5) rectangle (4,9.5) 
        node[below left,black,fill=green]{\small 1};
 
    \draw[latex-, very thick,green] (5.5,4) edge (5.5,5.5)
        (5.75,4.5) -- (5.5,5.5)
        node[above,black,fill=white]{\small R-L load};
\end{scope}
 
\end{tikzpicture}
 
\end{document}

在此处输入图片描述

相关内容