这应该是一个非常基本的问题,但我在任何地方都找不到它:
\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
,但您还有其他选择:
- 使用
\setlength{\iradiusbagua}{\radiustai-\thickness}
,尽管此解决方案需要calc
包。 - 使用
\pgfmathsetmacro\iradiusbaguas{\radiustai-\thickness}
,尽管此解决方案要求您手动添加pt
,否则 Tikz 会认为它在 中cm
。这需要pgfkeys
加上pgfutil-common
和pgfmath.code
,但由于您使用的是 Tikz,这意味着您不必使用任何额外的包。 - 使用
\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}