10 l3draw里面如何实现tikz中的\node功能

发布于 2023-10-17 22:32:27

tikz宏包里的\node命令可以很方便地在指定位置放置元素,比如

\tikz{
  \node[rotate=30] (a) at (1,3) {A};
}

请问l3draw宏包里有没有办法实现类似功能?

查看更多

关注者
0
被浏览
1k
雾月
雾月 2023-10-18
这家伙很懒,什么也没写!

l3draw 相当于 pgf 中最基本的部分。tikz 的作用是把绘图代码转换为 pgf 宏。本问题相当于是说重新实现 tikz

pgf 的一个 node 有形状、锚点、文字,还可以被保存。这些代码是很多的。

如果只要实现文字旋转和指定到某一位置,用 l3draw 提供的几个 transform 命令即可,文字使用 box 或 coffin 皆可。要指定锚点则需要自己计算文字的尺寸,然后再根据它来计算平移变换需要设置的向量。

\documentclass{article}
\usepackage{l3draw}
\usepackage{tikz}
\begin{document}

\ExplSyntaxOn

\draw_begin:
\draw_path_moveto:n { 0cm , 0cm }
\draw_path_use_clear:n { }

\group_begin:
\draw_transform_rotate:n { 30 }
\draw_transform_shift:n { 1cm , 3cm }
\hbox_set:Nn \l_tmpa_box { A }
\draw_box_use:N \l_tmpa_box
\group_end:

\draw_end:

\ExplSyntaxOff


\tikz{
  \path (0,0);
  \node[rotate=30,inner sep=0pt,outer sep=0pt,anchor=south west] at (1,3) {A};
}

\end{document}

可以参考 pgfmanual 或者相关笔记:https://ask.latexstudio.net/ask/article/175.html ,pgf 的 node 在该笔记的第二十五章。

1 个回答

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览