非常类似于纠正 TikZ 图案偏移但我不知道如何以编程方式做到这一点。
具体来说,我有一些节点想要在文本、公式、图形等中任意使用,这些节点是有图案的,并且我希望它们看起来都一样。
与此 MWE 类似的内容:
\documentclass[a5paper]{article}
\usepackage{lipsum}
\usepackage{pgf}
\usepackage{tikz}
\usepackage{zref-savepos}
\usetikzlibrary{arrows,automata,patterns,patterns.meta}
\newcommand{\dotnode}[1]{
\zsavepos{#1}
\tikz[baseline = -0.5ex]{\node[state,
rectangle,
pattern={Dots[xshift={\zposx{#1} sp}, yshift={\zposy{#1} sp}, angle=45, distance={4pt}, radius=0.6pt]},
minimum size=10pt]{}}
at (\zposx{#1}, \zposy{#1})}
\begin{document}
This is a \dotnode{1} and this is another \dotnode{2}.
\lipsum[1]
This is another \dotnode{3}.
\begin{tikzpicture}
\foreach \n in {0,1,...,5}
{
\node [rectangle,draw,minimum width=1cm,minimum height=1cm,
pattern={Dots[xshift={1.1*\n cm}]}] at (1.1*\n cm, 1.1) {};
}
\end{tikzpicture}
\end{document}
显然,文本中的虚线框看起来不一样(底部、好的行来自该问题顶部链接中的代码)。
我尝试过使用\zsavepos
并将该位置用于xshift
/ yshift
,如果成功,我可以让标签生成自动化,但显然失败了。我不确定我是否理解\zsavepos
正确,因为图像中前两个节点的 y 坐标相同,而一个节点明显高于另一个节点(我假设打印\zposx
/ y
“推”了它?)。我还担心这\zsavepos
会给我在双列布局中带来麻烦,而这正是我正在处理的。