LaTeX 中的元组

LaTeX 中的元组

我正在学习使用 TikZ 在 LaTeX 中绘制东西。TikZ 似乎到处都使用元组来指定坐标。例如,

\begin{tikzpicture}
  \node[isosceles triangle, isosceles triangle apex angle=70,
     draw=black,fill=white, inner sep=0pt,anchor=lower 
     side,rotate=90,draw=black,
     fill=white, minimum height=2 cm] (a) at (0,0) {};
\end{tikzpicture}

创建一个小的等腰三角形。注意 的用法(0,0)。让我们用下面的宏来封装上述的三角形的制作过程。

\newcommand\Tri[3]{ 
  \node[isosceles triangle, isosceles triangle apex angle=70,
     draw=black,fill=white, inner sep=0pt,anchor=lower 
     side,rotate=90,draw=black,
     fill=white, minimum height={#2} cm] (#1) at #3 {};}

假设我想定义一个函数,它接受一个大小和起始坐标,并绘制一个三角形的“三角形”,例如

\begin{tikzpicture}
  \Tri{a}{1}{(-1,0)}
  \Tri{b}{1}{(1,0)}
  \Tri{c}{1}{(0,1.41)}
\end{tikzpicture}

简单的方法是制作一个宏\TriTri,这样就\TriTri{a}{n}{x}{y}可以创建一个三角形的三角形,底部三角形固定在(x,y)

\newcommand\TriTri[4]{ 
  \Tri{#1}{#2}{(#3,#4)}
  \Tri{#1}{#2}{(#3+2*#2,#4)}
  \Tri{#1}{#2}{(#3+#2,{sqrt(2*#2*#2)})}} %% note #3+#2 = (x1 + x2)/2 
                                         %% the sqrt bit is sqrt(size^2 + size^2)
}

我已经让它工作了!但我想做的是,不是单独输入xy,而是将它们作为坐标对输入。我想将坐标引用为\first,\second。这样\first(x,y) = x。期望的效果是

$$\first(1,2)$$

相当于

$$1$$

答案1

您可以使用该xparse包:

\documentclass{article}
\usepackage{tikz,xparse}
\usetikzlibrary{shapes.geometric}

\NewDocumentCommand{\Tri}{m m r()}
 {%
  \node[isosceles triangle, isosceles triangle apex angle=70,
     draw=black,fill=white, inner sep=0pt,anchor=lower
     side,rotate=90,draw=black,
     fill=white, minimum height=#2cm] (#1) at (#3) {};
 }

\NewDocumentCommand\TriTri{mmr(,u)}
 {%
  \Tri{#1}{#2}(#3,#4)
  \Tri{#1}{#2}(#3+2*#2,#4)
  \Tri{#1}{#2}(#3+#2,{sqrt(2*#2*#2)}) %% note #3+#2 = (x1 + x2)/2
                                      %% the sqrt bit is sqrt(size^2 + size^2)
 }

\begin{document}

\begin{tikzpicture}
\TriTri{a}{3}(2,2)
\end{tikzpicture}

\end{document}

\Tri命令接受三个参数;第一个和第二个参数用大括号括起来,第三个参数用圆括号括起来,因此

\Tri{a}{3}(0,0)

在定义主体中,您将使用(#3)而不是#3,因为括号已被去掉。

在这种情况下,\TriTri我们必须分离两个坐标,因此我们定义四个参数;第一个和第二个参数用括号括起来;第三个参数是从到(逗号的内容,最后一个参数是到的所有内容)

\TriTri因此,我根据的要求对您的代码进行了相应的修改\Tri

相关内容