首先我要说的是,我对 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
在您想要使用它的环境之前。