TikZ / pgfmath:dim 现在正在发布其他内容

TikZ / pgfmath:dim 现在正在发布其他内容

在我的 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在这里做过真正的工作,因为有一个预先构建的函数用于进行标记计数。我们当然可以手动写出来......)

相关内容