定制命令

定制命令

首先,下面的代码只是试验。它们远非完美。为了简单起见,我想将这部分代码转换为命令,因为我经常需要它:

\tikzmarknode{c}{\includegraphics[scale=0.2]{teacher.png}}
\tikz[remember picture,baseline]{
    \node[name=el,overlay,ellipse callout,fill=blue!20,draw=black,align=center,callout 
relative pointer={(1,0)},left =of c,inner xsep=3 mm, inner ysep=1 mm] at 
([xshift=-1cm,yshift=-0.5cm]c)
{foo\\ bar};

这是我的代码(我希望命令 \teacher 有 2 个可选参数,inner xsep 和 inner ysep,它们的默认值分别为 3mm 和 1mm,第 3 个参数是节点内的文本)。

\newcommand{\teacher}[3][3]{\hfill \tikzmarknode{c}{\includegraphics[scale=0.2]{teacher.png}}
\tikz[remember picture,baseline]{
        \node[name=el,overlay,ellipse callout,fill=blue!20,draw=black,align=center,callout relative pointer={(1,0)},left =of c,inner xsep=#1 mm, inner ysep=#2 mm] at ([xshift=-1cm,yshift=-0.5cm]c)
{#3};}\\      }

[3][3]第一行中的 可能是错误的,但我的意思是存在 3 个参数(再次强调,前 2 个是可选的),我将第一个可选参数初始化为 3(我会在那之后添加 [1],以初始化第二个可选参数,内部 ysep,但它会产生错误)。

当我想调用它时,唯一可行的方法就是这样(是的,只需使用 [)。

\teacher[5][{foo\\ bar}

有人能帮我修正命令定义吗?谢谢

相关内容