TikZ 是否提供了一种获取维度对象相对于任意维度的数值的方法?如果是,那太好了。如果没有,您能否帮助我调试以下尝试,以编写一个\stripdim
实现上述目标的命令?
\documentclass{standalone}
\ExplSyntaxOn
\NewDocumentCommand{\stripdim}{mm}{ \dim_to_decimal_in_unit:nn{#1}{1#2} }
\ExplSyntaxOff
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\edef\num{\stripdim{3cm}{cm}}
\draw node{\num};
\end{tikzpicture}
\end{document}
上面的代码3
按预期打印。但是,如果\draw
将命令替换为以下内容:
\draw let \n1=\num in node{\n1};
编译失败,在日志中发现如下信息:
! Illegal unit of measure (pt inserted).
<to be read again>
)
l.13 \draw let \n1=\num
in node{\n1};
?
! Emergency stop.
<to be read again>
)
l.13 \draw let \n1=\num
in node{\n1};
End of file on the terminal!
答案1
你的 edef 没有扩展任何东西,如果你添加,\show\num
你会看到:
> \num=macro:
->\stripdim {3cm}{cm}.
l.14 \show\num
?
使用可扩展命令:
> \num=macro:
->3.
l.14 \show\num
?
\documentclass{standalone}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\stripdim}{mm}{\dim_to_decimal_in_unit:nn{#1}{1#2} }
\ExplSyntaxOff
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\edef\num{\stripdim{3cm}{cm}}
\show\num
\draw node{\num};
\end{tikzpicture}
\end{document}