10 tikz 利用函数简化坐标表达式

发布于 2026-03-12 23:25:06

tikz 有办法简化这个 ({\ii+\jj*0.5},{-\jj*0.8}) 吗?

我试了 declare functiontikzmath 好像都不能解析坐标?

! Package tikz Error: Cannot parse this coordinate.

参考的 declare-function-for-tikzpicture

\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[
  declare function={
    labelpos(\x,\y) = ({\x+\y*0.5},{-\y*0.8});
}]
\foreach \ii in {0, 1, ..., 5}{
  \foreach \jj in {0, 1, ..., 4}{
    \node at labelpos(\x,\y) {$(\ii,\jj)$};
  }
}
\end{tikzpicture}
\end{document}

image.png

查看更多

关注者
0
被浏览
40
Sagittarius Rover
Sagittarius Rover 4小时前
这家伙很懒,什么也没写!

declare function看文档似乎只能允许一元的输出...

如果重复使用这个坐标就要写很多次了,虽然可以复制粘贴,但是不太优雅
image.png

我一般的做法是\pgfmathsetmacro:

\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \ii in {0, 1, ..., 5}{
  \foreach \jj in {0, 1, ..., 4}{
    \pgfmathsetmacro{\x}{\ii+\jj*0.5}
    \pgfmathsetmacro{\y}{-\jj*0.8}
    \node at (\x,\y) {$(\ii,\jj)$};
  }
}
\end{tikzpicture}
\end{document}

或者\fpeval?

\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \ii in {0, 1, ..., 5}{
  \foreach \jj in {0, 1, ..., 4}{
    \def\x{\fpeval{\ii+\jj*0.5}}
    \def\y{\fpeval{-\jj*0.8}}
    \node at (\x,\y) {$(\ii,\jj)$};
  }
}
\end{tikzpicture}
\end{document}
1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览