如何定义包含彩色 tikz 节点的环境

如何定义包含彩色 tikz 节点的环境

我想定义一个新的环境,比如

\begin{mybox}
  some text
\end{mybox}

将自动扩展为类似

\begin{tikzpicture}
  \node[fill=red!0.5] {some text};
\end{tikzpicture}

我尝试在序言中使用以下代码定义一个环境:

\newenvironment{mybox}{\begin{tikzpicture}\node[fill=red!0.5]\bgroup}{\egroup;\end{tikzpicture}}

但颜色选项无法完全工作。如果fill=red使用,它可以正常工作,但如果使用混合颜色,则fill=red!0.5不会。如何混合颜色?

编辑:问题包含错误。应该是red!50而不是red!0.5。无论如何,以下答案可以作为生成彩色文本框的替代方案。

答案1

在我看来这fill=red!0.5与白色没什么区别......

无论如何,对于这种环境定义,\NewEnvironenviron包很有用。

\NewEnviron{mybox}{%
  \begin{tikzpicture}%
    \node[fill=red!10]{\BODY};%
  \end{tikzpicture}%
}

请注意,我已将red!0.5其改为,red!10以使其易于区分。

在下面的 MWE 中我也保留了您的定义,它似乎有效。

\documentclass{article}
\usepackage{environ}
\usepackage{tikz}

\NewEnviron{mybox}{%
  \begin{tikzpicture}%
    \node[fill=red!10]{\BODY};%
  \end{tikzpicture}%
}

\newenvironment{oldmybox}{%
  \begin{tikzpicture}\node[fill=red!10]\bgroup%
}{%
  \egroup;\end{tikzpicture}%
}

\begin{document}

\begin{mybox}Hello\end{mybox}

\begin{oldmybox}Hello\end{oldmybox}

\begin{tikzpicture}
  \node[fill=red!10]{Hello};
\end{tikzpicture}

\end{document} 

输出:

在此处输入图片描述

答案2

如果你想让你的环境在 tikzpicture 中扩展,我会删除我的答案,但如果你想要一个环境来产生一些彩色的盒子,\tcbox请从tcolorbox可以帮到你。下面的代码展示了如何定义\myboxcommand或环境myboxenv,输出将像\node[fill]命令一样。

\documentclass{article}
\usepackage[skins]{tcolorbox}

\newtcbox{myboxcommand}{nobeforeafter, tcbox raise base,
arc=0pt, outer arc=0pt, colback=red!10, boxsep=0pt,
boxrule=0pt, left=.3333em, right=.3333em, top=.3333em, bottom=.3333em}

\newtcolorbox{myboxenv}{nobeforeafter,capture=hbox,tcbox raise base,
arc=0pt, outer arc=0pt, colback=red!10, boxsep=0pt,
boxrule=0pt, left=.3333em, right=.3333em, top=.3333em, bottom=.3333em}

\begin{document}

\myboxcommand{Hello}

\begin{myboxenv}
Hello
\end{myboxenv}

\begin{tikzpicture}
  \node[anchor=base,fill=red!10]{Hello};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容