在我的 TikZ (TeXLive 2020)
\documentclass[tikz]{standalone}
\begin{document}
\pgfmathprint{dim("gas")}, \pgfmathprint{dim("abcd")},
\pgfmathprint{dim("abcdefg")}
\end{document}
给出3, 4, 7
;换句话说,字母之间的数字"..."
我被告知最新的 pgf 版本输出其他东西(1 或某物)。
我现在在做什么?
我需要一个计算字母数量的函数。我需要在 内实现它pgfmath
,而不是通常使用纯 TeX 或其他东西。
答案1
该dim
函数用于计算(逗号分隔)数组的维度:这些都是维度 1。因此,旧的行为是一个错误,而不是一个功能。
我们可以添加一个专门用于这项工作的新功能:我称它为tokencnt
:
\documentclass[tikz]{standalone}
\ExplSyntaxOn
\makeatletter
\pgfmathdeclarefunction*{tokencnt}{1}
{
\edef \pgfmathresult { \tl_count:n {#1} }
}
\makeatother
\ExplSyntaxOff
\begin{document}
\pgfmathprint{tokencnt("gas")}, \pgfmathprint{tokencnt("abcd")},
\pgfmathprint{tokencnt("abcdefg")}
\end{document}
(我曾经expl3
在这里做过真正的工作,因为有一个预先构建的函数用于进行标记计数。我们当然可以手动写出来......)