长度差异

长度差异

这应该是一个非常基本的问题,但我在任何地方都找不到它:

\documentclass[tikz,border=1pt]{standalone}

\usepackage{fp}

\usetikzlibrary{fixedpointarithmetic}

\newlength{\radiustai} 
\setlength{\radiustai}{1cm}
\newlength{\thickness} 
\setlength{\thickness}{0.3\radiustai} 
\newlength{\iradiusbagua} 

\begin{document}

\begin{tikzpicture}[fixed point arithmetic]

  \iradiusbagua=\radiustai-\thickness

  \draw (0,0) -- (\iradiusbagua,\thickness);

\end{tikzpicture}

\end{document}

Latex 抱怨说它是missing a number, treated as zero

我怎样才能计算 Latex 中两个长度之间的差异(我希望“定点算术”能够理解符号-)?

答案1

不确定问题是什么fixed point arithmetic,但您还有其他选择:

  1. 使用\setlength{\iradiusbagua}{\radiustai-\thickness},尽管此解决方案需要calc包。
  2. 使用\pgfmathsetmacro\iradiusbaguas{\radiustai-\thickness},尽管此解决方案要求您手动添加pt,否则 Tikz 会认为它在 中cm。这需要pgfkeys加上pgfutil-commonpgfmath.code,但由于您使用的是 Tikz,这意味着您不必使用任何额外的包。
  3. 使用\pgfmathsetlengthmacro\iradiusbaguas{\radiustai-\thickness},在我看来这是最好的解决方案,因为它不需要任何额外的包,因为您使用的是 Tikz,而且它已经自带了,pt因为它是一个长度计算。

我使用了相对坐标,以便示例更加清晰易懂。

输出

在此处输入图片描述

代码

\documentclass[tikz,margin=10pt]{standalone}
\usepackage{calc} % needed for the length calculation...
%\usepackage{fp}

%\usetikzlibrary{fixedpointarithmetic}

\newlength{\radiustai} 
\setlength{\radiustai}{1cm}
\newlength{\thickness} 
\setlength{\thickness}{0.3\radiustai} 
\newlength{\iradiusbagua} 
\setlength{\iradiusbagua}{\radiustai-\thickness} % ...here


\begin{document}
\begin{tikzpicture}
\pgfmathsetlengthmacro\iradiusbaguas{\radiustai-\thickness}
\pgfmathsetmacro\iradiusbaguass{\radiustai-\thickness}
%
\draw (0,0) --++ (\iradiusbagua,\thickness) node[right] {\the\iradiusbagua~\verb!\setlength!};
\draw[red] (0,.5) --++ (\iradiusbaguas,\thickness) node[right] {\iradiusbaguas~\verb!\pgfmathsetlength!};
\draw[green] (0,1) --++ (\iradiusbaguass pt,\thickness) node[right] {\iradiusbaguass pt~\verb!\pgfmathset!};

\end{tikzpicture}
\end{document}

相关内容