![tikz yshift 的强大命令](https://linux22.com/image/387930/tikz%20yshift%20%E7%9A%84%E5%BC%BA%E5%A4%A7%E5%91%BD%E4%BB%A4.png)
我创建了一个在序言中声明的强大命令,以在文本中包含一个小图形。
\DeclareRobustCommand\mytikzcell{\tikz \tikzset{b2block/.style = {rectangle split, rectangle split parts=1,
draw, rectangle split horizontal=false,inner ysep=0pt, yshift=-1cm, line width=0.05em, text width=4em, align=center, rectangle split part fill={blue!30}}} \vspace{4em} \node[b2block] {
\nodepart{one} {\mystrutcopy \tiny $\langle 1, [\tikz\draw[magenta,fill=magenta] circle (.5ex); \tikz\draw[olive,fill=olive] circle (.5ex);], \bot \rangle$ \enskip {$3$}}};}
它按我预期的方式工作,并且我可以通过调用 \mytikzcell 在我的文本中使用它。
但是,单元格与文本不对齐。图形底部有一些空间,我想确保图形底部与文本底部对齐。我该怎么做?我尝试使用 yshift 和 \vspace,但似乎不起作用。
答案1
欢迎使用 TeX.SE!您的代码嵌套了tikzpicture
s,这应该严格避免。yshift
在您的设置中没有效果,您可能正在寻找。此外,您还应该发布以 开头并以 结尾的baseline
完整代码,就像这里这样。\documentclass
\end{document}
\documentclass{article}
\usepackage{xparse}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\newsavebox{\bullone}
\newsavebox{\bulltwo}
\sbox\bullone{\tikz{\draw[magenta,fill=magenta] circle (.5ex);}}
\sbox\bulltwo{\tikz{\draw[olive,fill=olive] circle (.5ex);}}
\tikzset{b2block/.style = {rectangle split, rectangle split parts=1,
draw, rectangle split horizontal=false,inner ysep=0pt, line width=0.05em, text width=5em, align=center, rectangle split part fill={blue!30}}}
\DeclareRobustCommand\mytikzcell{\tikz[baseline=(tmp.base)]
{ \node[b2block] (tmp) {
\nodepart{one} {\strut \tiny $\langle 1, [\usebox\bullone \usebox\bulltwo
], \bot
\rangle$ \enskip
{$3$}}};}}
\begin{document}
(as shown here and there \mytikzcell )
\end{document}
我的水晶球被偷了,所以我不知道里面\mystrutcopy
是什么。
您还可以使用它baseline
来调整圆圈的基线,并将框与文本底部对齐。
\documentclass{article}
\usepackage{xparse}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\newsavebox{\bullone}
\newsavebox{\bulltwo}
\sbox\bullone{\tikz[baseline=-1pt]{\draw[magenta,fill=magenta] circle (.5ex);}}
\sbox\bulltwo{\tikz[baseline=-1pt]{\draw[olive,fill=olive] circle (.5ex);}}
\tikzset{b2block/.style = {rectangle split, rectangle split parts=1,
draw, rectangle split horizontal=false,inner ysep=0pt, line width=0.05em, text width=5em, align=center, rectangle split part fill={blue!30}}}
\DeclareRobustCommand\mytikzcell{\tikz[baseline=(tmp.south)]
{ \node[b2block] (tmp) {
\nodepart{one} {\strut \tiny $\langle 1, [\usebox\bullone \usebox\bulltwo
], \bot
\rangle$ \enskip
{$3$}}};}}
\begin{document}
(as shown here and there \mytikzcell )
\end{document}