具有多种形状的 TikZ 节点

具有多种形状的 TikZ 节点

我的用例是绘制一个与普通文本对齐的勾选框,例如:“Hello ☒ World。”(unicode 示例,您的里程可能会有所不同)。我想出的一个解决方案是以下相当冗长的表达式。

Hello \tikz{
      \node[draw,rectangle,minimum size=1.5ex] {};
      \node[draw,cross out,minimum size=1.5ex] {};
} World.

有没有更优雅的方式来描述这张图片,例如将两个形状叠加在一个节点上?

或者,是否存在cross out类似于的路径操作rectangle,允许类似下面的操作?

\tikz \draw rectangle (1.5ex,1.5ex) cross out (0,0);

(注意:这个问题主要是美学和学术性质的,因为第一个例子确实按预期工作。)

澄清:这是一次性的,所以创建新的命令不是我想要的(感谢彼得)。

答案1

在此处输入图片描述

关于这个问题和我的答案的一些解释:一个节点只有一个形状,因此要修改与节点相关联的形状,您可以定义一个新形状,\pgfdeclareshape例如,可以组合两个定义的形状,另一种解决方案是修改使用的形状。在下一个代码中,我在矩形中添加了两条线。可以使用该选项执行此操作path picture。使用此选项,可以使用边界框的一些锚点,但其他解决方案也是可能的。

\documentclass{article}
\usepackage{tikz}

   \tikzset{squarecross/.style={draw,path picture={% 
      \draw[black]
       (path picture bounding box.north west) -- (path picture bounding box.south east) 
       (path picture bounding box.south west) -- (path picture bounding box.north east);
      }}}   

\begin{document}
Hello  \tikz \node[squarecross] (mynode) {}; World.
\end{document} 

答案2

不确定这是否更好,但你可以画出这个形状:

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}

\newcommand{\CrossOut}{%
    \tikz [x=1.5ex,y=1.5ex] 
        \draw (0,0) -- (1,0) -- (1,1) -- (0,1) -- cycle
         (0,0) -- (1,1)
         (0,1) -- (1,0)
        ;
}%

\begin{document}
Hello \CrossOut World.
\end{document}

答案3

非 Tikz 解决方案,使用包\XBox中的符号wasysym,我认为这更优雅。

\documentclass{article}
\usepackage{wasysym}
\begin{document}
\CheckedBox  \Square  \Huge \XBox
\end{document}

非 Tikz 解决方案的优点是符号可以根据字体大小缩放并且更加简单。

在此处输入图片描述

答案4

还有一个:

\documentclass{article}
\usepackage{amssymb}
\begin{document}
Hello $\boxtimes$ Word
\end{document}

平均能量损失

不含软件包的小写版本:

\documentclass{article}
\def\BoxedTimes{\fboxrule=.04em\fboxsep=-0.11em\fbox{\makebox[.725em]{$\times$}}}
\begin{document}
Hello \BoxedTimes{} Word 
\end{document}

在此处输入图片描述

相关内容