tkz-euclide:全局设置角度标记的样式

tkz-euclide:全局设置角度标记的样式

我如何使用 全局控制角度和标记的样式,特别是颜色和线条粗细/长度tkz-euclide?我不确定如何mkcolor全局设置样式。

我希望使用 tkz-euclide 重现下图,以便能够使用 全局控制样式\tkzSetUpStyle。我希望能够利用mark=||和其他标记样式,但我需要控制颜色和长度(使用此处的默认值,标记||是黑色且太长)。例如,\tkzMarkAngle[size=0.5,mark=x,arc=ll,mkcolor=orange,new](A,C,O)我希望mkcolor=orange在 中全局设置new样式。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tkz-euclide}

\usetikzlibrary{quotes,angles}% needed for experiments

\tkzSetUpStyle[color=orange,angle radius=15pt]{new}

\tikzset{%
  smaller arc/.style={angle radius=10pt}, 
  double arc/.style={double,double distance=2pt},
  triple arc/.style={double distance=4pt, 
      pic actions/.append code=\tikzset{postaction={draw}}}
}

\begin{document}

\begin{tikzpicture}
  \tkzDefPoints{0/0/A,5/0/B,1/4/C}
  \tkzLabelPoint[below left](A){$A$}
  \tkzLabelPoint[below right](B){$B$}
  \tkzLabelPoint[above](C){$C$}

  % compute the center
  \tkzInCenter(A,B,C)\tkzGetPoint{O}\tkzDrawPoint[new](O)

% tikz/pic way, because mark colors and styles are complicated with tkz-euclide
  \path (A) -- (B) -- (C)
    pic[new, double arc, draw]{angle=C--B--O}
    pic[new, double arc, draw, smaller arc]{angle=O--B--A}
    pic[new, draw]{angle=O--A--C}
    pic[new, draw, smaller arc]{angle=B--A--O}
    pic[new, triple arc, draw]{angle=A--C--O} 
    pic[new, triple arc, draw, smaller arc]{angle=O--C--B} 
    -- cycle;

  \draw [new] (A) -- (O)--(intersection of  A--O and B--C);
  \draw [new] (B) -- (O)--(intersection of  B--O and A--C);
  \draw [new] (C) -- (O)--(intersection of  C--O and B--A);

  \tkzDrawPolygon(A,B,C)% draw this last
\end{tikzpicture}
\end{document}

PS 当然,欢迎任何有关编码的一般建议和/或美化图形的建议。在此处输入图片描述

答案1

这些选项有点隐藏,但您可以通过添加前缀来访问它们/tkzmkangle/

\documentclass[border=3.14mm]{standalone}
\usepackage{tkz-euclide}

\tkzSetUpStyle[
    color=orange,
    /tkzmkangle/mkcolor=orange,
    /tkzmkangle/mark=||,
]{new}

\begin{document}
\begin{tikzpicture}
    \tkzDefPoints{0/0/A,5/0/B,1/4/C}
    \tkzLabelPoint[below left](A){$A$}
    \tkzLabelPoint[below right](B){$B$}
    \tkzLabelPoint[above](C){$C$}
    
    % compute the center
    \tkzInCenter(A,B,C)\tkzGetPoint{O}
    \tkzDrawPoint[new](O)
    
    \tkzInterLL(A,O)(B,C)\tkzGetPoint{a}
    \tkzInterLL(B,O)(A,C)\tkzGetPoint{b}
    \tkzInterLL(C,O)(A,B)\tkzGetPoint{c}
    \tkzDrawSegments[new](A,a B,b C,c)
    
    \tkzMarkAngle[size=0.6, arc=lll, new](A,C,O)
    \tkzMarkAngle[size=0.5, arc=lll, new](O,C,B)

    \tkzDrawPolygon(A,B,C) % draw this last
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

第一个观察:宏tkzMarkAngle没有像点或线那样的自己的样式。我可以angle style在未来版本中添加样式。话虽如此,它不会从根本上改善一切,因为有很多选择。

正如 Jasper Habicht 指出的那样,您需要指定路径才能使用大小和弧线样式。这些是 tkz-euclide 特有的。\tkzSetUpStyle您只能使用 TikZ 样式。

我给出了一个使用 tkz-elements 的解决方案,但第二部分涉及 tkz-euclide,这很常见。

代码注释tkz-elements。您可以将其替换为创建点的代码部分。E接下来,使用 lualatex 进行编译。我们定义固定点 A、B 和 C。zA、zB 和 zC 与点的词缀相关联。然后我们定义三角形,创建时,该三角形T.ABC具有诸如 之类的属性incenter,但我们可以使用 a、b 和 c 作为边长,或使用 alpha、beta 和 gamma 作为角度,等等。对于角平分线,第一个角平分线是顶点 A 的角平分线,(1) 和 (2) 然后表示我们正在移动到下一个顶点......最后的微妙之处是.pb。角平分线是类的对象line,其第一个属性是 pa 和 pb 引用的两个点。这里,pb表示角平分线的脚。

% !TEX TS-program = lualatex

\documentclass{article} 
\usepackage{tkz-euclide}
\usepackage{tkz-elements}

\begin{document} 
\begin{tkzelements}
   z.A    = point : new (0 , 0)
   z.B    = point : new (5 , 0)
   z.C    = point : new (1 , 4)
   T.ABC  = triangle : new ( z.A , z.B , z.C )
   z.O    = T.ABC.incenter
   z.E    = T.ABC : bisector ().pb
   z.F    = T.ABC : bisector (1).pb
   z.G    = T.ABC : bisector (2).pb
\end{tkzelements}
\begin{tikzpicture}[ new/.style ={ color=orange },
                     one/.style ={ new,/tkzmkangle/size=.5 },
                     two/.style ={ new,/tkzmkangle/size=.6 },
                     l/.style   ={ /tkzmkangle/arc=l },
                     ll/.style  ={ /tkzmkangle/arc=ll },
                     lll/.style ={ /tkzmkangle/arc=lll }
                    ]
\tkzGetNodes
\tkzDrawPolygon(A,B,C)
\tkzDrawSegments[new](A,E B,F C,G)
\tkzDrawPoints(A,B,C,E,F,G,O)

\begin{scope}[one]
  \tkzMarkAngles[l](B,A,E)
  \tkzMarkAngles[ll](C,B,F)
  \tkzMarkAngles[lll](A,C,G)
\end{scope}
\begin{scope}[two]
  \tkzMarkAngles[l](E,A,C)
  \tkzMarkAngles[ll](F,B,A)
  \tkzMarkAngles[lll](G,C,B)
\end{scope}

\tkzLabelPoints(A,B)
\tkzLabelPoints[above](C)
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容