如何在 tikz 中创建新符号(颜色可调)

如何在 tikz 中创建新符号(颜色可调)

我有一个简单的问题 --- 如何在 tikz 中创建一个像下图这样的新符号(具有可调颜色)?

在此处输入图片描述

我相信使用 tikzpicture 是可行的。例如,使用 tikzpicture,我们能否将其黑色切换为其他颜色,例如棕色?

这是一个有效的 MWE 模板:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate 

\fill[black]
\end{tikzpicture}
\end{document}

答案1

在此处输入图片描述

我认为你需要一个数学符号。 我将其构建为一个,如果它恰好用作索引,则会调用它进行良好的缩放。它取决于提供颜色的可选参数\newcommand\mathchoice

代码

\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{ifthen}

\newcommand*{\tmp}[2]{%
  \mathrel{%
    \begin{tikzpicture}[color=#2, x={(#1 ex, 0)}, y={(0, #1 ex)}, xscale=1.2]
      \path[use as bounding box] (-.2, .05) rectangle ++(1.7, 2.1);
      \draw (.1, 2.2) -- ++(10: 1.)
      to[out=10, in=0] ++(0, -.9) --++(190: 1.1);
      \draw (.05, 1.75) -- ++(10: .55)
      to[out=10, in=80] ++(0, -.8) coordinate (M)
      to[out=260, in=90] (0, -.25);
      \draw (M) -- ++(10: .5)
      to[out=0, in=80] ++(-.05, -.5)
      to[out=260, in=110]
      (1.25, -.25); 
    \end{tikzpicture}%
  }%
}
\newcommand*{\funnysymbol}[1][]{%
  \ifthenelse{\equal{#1}{}}{\colorlet{rgb}{.}}{\colorlet{rgb}{#1}}
  \mathchoice{\tmp{.8}{rgb}}{\tmp{.8}{rgb}}{\tmp{.6}{rgb}}{\tmp{.5}{rgb}}
}

\begin{document}

$X \funnysymbol Y$ \quad $X_{a\funnysymbol b}$ \qquad
$X \funnysymbol[red!60!black] Y$ \quad $X_{a\funnysymbol[blue] b}$

$X \mathbin{R} Y$ \quad $X_{a\mathbin{R}b}$
\end{document}

答案2

好吧,你的 MWE 不完全是 MWE(甚至不是 MNWE),但这是你想要的吗?你可以pic用参数定义 s(甚至超过一个如果需要的话):

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\tikzset{blurb/.pic={
     \draw[line cap=round, line width=4pt, #1] (0,0) to[out=10, in=10, looseness=4] (0,-1)
         plot [smooth, tension=1.2] coordinates{(0,-0.5) (0.3,-0.4) (1,-1) (0.5,-2) (0,-3)}
         plot [smooth, tension=1.2] coordinates{(1,-1) (1.4, -1.4) (1,-2) (2,-3)};}
}
\begin{document}
\begin{tikzpicture}
    \pic[scale=0.5] (a) at (0,0) {blurb=blue};
    \pic[scale=0.5] (b) at (1,0) {blurb={red, opacity=0.5}};
\end{tikzpicture}
\end{document}

在此处输入图片描述

xfig我使用“让我们试试这个”的方法构建了形状。但是您可以在或中将符号绘制为框架线,inkscape然后从那里获取坐标。

相关内容