tikz
宏包里的\node
命令可以很方便地在指定位置放置元素,比如
\tikz{
\node[rotate=30] (a) at (1,3) {A};
}
请问l3draw
宏包里有没有办法实现类似功能?
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 在该笔记的第二十五章。
感谢雾月大佬,您真是无所不知!