在 TikZ 中使用 LaTeX 长度作为箭头长度

在 TikZ 中使用 LaTeX 长度作为箭头长度

我在 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}

在此处输入图片描述

相关内容