我想定义一个新的环境,比如
\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
与白色没什么区别......
无论如何,对于这种环境定义,\NewEnviron
从environ
包很有用。
\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}