tikz yshift 的强大命令

tikz yshift 的强大命令

我创建了一个在序言中声明的强大命令,以在文本中包含一个小图形。

\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!您的代码嵌套了tikzpictures,这应该严格避免。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}

在此处输入图片描述

相关内容