在哪里定义新的 TikZ 命令

在哪里定义新的 TikZ 命令

首先我要说的是,我对 LaTeX 还是个新手,更不用说 TikZ 了。

为了解决另一个问题,我在另一个问题中找到了解决方案问题在 Tom Bombadil 的评论中。他定义了新命令:

    \def\centerarc[#1](#2)(#3:#4:#5)% 
[draw options] (center) (initial angle:final angle:radius) { \draw[#1] ($(#2)+({#5*cos(#3)},{#5*sin(#3)})$) arc (#3:#4:#5); }

这基本上就是用给定的圆心、初始角度和最终角度绘制一个圆弧。现在我不确定应该在哪里定义命令。我在 Tikz 图片的开头试过了,但没有成功。

\begin{tikzpicture}[thick,>=latex]
\def\centerarc[#1](#2)(#3:#4:#5)% 
[draw options] (center) (initial angle:final angle:radius) { \draw[#1] ($(#2)+({#5*cos(#3)},{#5*sin(#3)})$) arc (#3:#4:#5); };
\centerarc[red, thick](0,0)(5:85:1);
\end{tikzpicture}

我究竟做错了什么?

答案1

注释中的代码格式不正确:正确的输入应该是

\def\centerarc[#1](#2)(#3:#4:#5)% [draw options] (center) (initial angle:final angle:radius)
  { \draw[#1] ($(#2)+({#5*cos(#3)},{#5*sin(#3)})$) arc (#3:#4:#5); }

因为后面的部分%只是显示语法的注释。

您应该将其放在序言中(之前\begin{document}),并且可能还应该添加一个\newcommand以确保\def不会覆盖现有命令。

\newcommand\centerarc{} % just for safety
\def\centerarc[#1](#2)(#3:#4:#5){%
  % Synopsis
  % \centerarc[draw options](center)(initial angle:final angle:radius)
  \draw[#1] ($(#2)+({#5*cos(#3)},{#5*sin(#3)})$) arc (#3:#4:#5);
}

答案2

您可以使用 extra#n来增加灵活性。[#1]#2(#3)#4(#5:#6:#7)而不是[#1](#2)(#3:#4:#5)

\def\centerarc[#1]#2(#3)#4(#5:#6:#7)% [draw options] (center) (initial angle:final angle:radius)
  {\draw[#1]($(#3)+({#7*cos(#5)},{#7*sin(#5)})$)arc(#5:#6:#7);}

然后你可以使用

\centerarc[thick] (1,2) (10:20:1); % which has spaces for readability

您可能也可以使用它的功能xparse,但我不确定空格,因为目前它不接受某些参数前的空格。

答案3

您应该在外部定义新命令,即tikzpicture在您想要使用它的环境之前。

相关内容