这是一个定义 TikZ 命令的简单文件,其中包含用于绘制选项的输入。该输入适用于虚线或点线等选项。但它忽略了旋转和缩放选项。它可以很好地运行它们,但运行起来就像它们不存在一样。
我想要绘制的实际图表要复杂得多,如果我可以使用旋转和缩放选项,效果会更好。我能以某种方式做到这一点吗?
\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\[\begin{tikzpicture}
\def\line[#1](#2)% Syntax: [draw options] (lefthand endpoint
{\node at (#2) (A) {$\bullet$};
\node at ($(#2)+(1,0)$) (B) {$\bullet$};
\draw[#1] (A) edge[] (B);}
\line[rotate=30,dashed](0,0);
\end{tikzpicture}\]
\end{document}
答案1
这是一个非常快速的修复。
\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\[\begin{tikzpicture}
\def\line[#1](#2)% Syntax: [draw options] (lefthand endpoint
{\begin{scope}[#1]
\node at (#2) (A) {$\bullet$};
\node at ($(#2)+(1,0)$) (B) {$\bullet$};
\draw (A) edge[] (B);
\end{scope}}
\line[rotate=30,dashed](0,0);
\end{tikzpicture}\]
\end{document}
不过,我建议改用\newcommand
。
答案2
rotate 在这里不做任何事情的主要原因是它不应该做任何事情:你要求在两个明确的点(A)
和之间画一条线(B)
,所以没有什么可以旋转的!rotate
tikz\draw
命令中的典型用途是当你有一个装饰或边框形状需要旋转时。如果你想画一条可以旋转的长度为 1 的线,那么你不应该使用显式命名的坐标。下面的代码产生,
我想这就是你想要的。代码如下:
\documentclass{amsart}
\usepackage{tikz}
\usepackage{xparse}
\NewDocumentCommand\Line{ O{} r()}{% Syntax: [draw options] (lefthand endpoint
\draw[#1] (#2) node{$\bullet$} -- ++(1,0);
}
\begin{document}
\begin{center}
\begin{tikzpicture}
\Line[rotate=30,dashed](0,0);
\Line(2,0);
\Line[rotate=90, blue](2,0);
\end{tikzpicture}
\end{center}
\end{document}
我已经使用\NewDocumentCommand
了解析包来定义\Line
命令(我没有使用,\line
因为 LaTeX 中已经有一个\line
命令),这样它就需要一个可选参数和一个用括号括起来的强制参数。该线是使用++(1,0)
第二点的相对坐标绘制的,因此不需要 tikz 库calc
或定义坐标(A)
和。最后,我在环境之外(B)
定义了,以便您可以在不同的环境中使用它。\Line
tikzpicture
tikzpicture