![语法和坐标计算如何与 Tikz 库“calc”配合使用?](https://linux22.com/image/453600/%E8%AF%AD%E6%B3%95%E5%92%8C%E5%9D%90%E6%A0%87%E8%AE%A1%E7%AE%97%E5%A6%82%E4%BD%95%E4%B8%8E%20Tikz%20%E5%BA%93%E2%80%9Ccalc%E2%80%9D%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8%EF%BC%9F.png)
我想使用 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}