我在 Tikz 中画了一个箭头,我想用 LaTeX 长度指定长度,例如,\headlength
而不是明确地写出长度,例如2em
。但是,TikZ 似乎不喜欢将 LaTeX 长度作为箭头长度的输入。(见下面的例子)
我怎样才能为选项提供 LaTeX 长度length=
?(谢谢!)
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\draw[-{Latex[length=2em]}] (0,0) -- (2,0); %It works!
\newlength{\headlength}
\setlength{\headlength}{2em}
\draw[-{Latex[length=\headlength]}] (0,1) -- (2,1); %It outputs error
\end{tikzpicture}
\end{document}
答案1
您可以使用\the\headlength
。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\newlength{\headlength}
\begin{document}
\begin{tikzpicture}
\setlength{\headlength}{2em}
\draw[-{Latex[length=2em]}] (0,0) -- (2,0); %It works!
\draw[-{Latex[length=\the\headlength]}] (0,1) -- (2,1); %Works as well
\end{tikzpicture}
\end{document}
在前导码中分配寄存器,而不是在内部tikzpicture
。
答案2
我通过库找到了一个快速修复方法math
(我不满意:它看起来像一个补丁,我不明白它为什么有效)
只需将 LaTeX 长度存储在tikzmath
变量中即可。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{math}
\begin{document}
\newlength{\headlength}
\begin{tikzpicture}
\draw[-{Latex[length=2em]}] (0,0) -- (2,0);
\setlength{\headlength}{2em}
\tikzmath{ %
\mylength=\headlength; %Storing the length in a tikzmath variable
}
\draw[-{Latex[length=\mylength]},red] (0,1) -- (2,1);
\end{tikzpicture}
\end{document}