平均能量损失

平均能量损失

我的问题有点延伸答案。我只想在文本适合路径时用文本装饰路径,但我还想知道装饰是否成功。我需要知道这一点才能再次使用较短的文本调用装饰。我需要这个来实现我的问题的解决方案这里

目前,我最终在文档前言中自己修改了沿路径的装饰。我只是将文本装饰实现复制到我的前言中,然后按以下方式\makeatletter .. \makeatother将设置标志添加到初始状态的末尾:persistent precomputation = {..}

\newif\iffit

\pgfdeclaredecoration{my text along path}{initial}{
  \state{initial}[
    width=+0pt,
    next state=left indent,
    persistent precomputation = {
      ...
      \ifdim\pgf@lib@dec@text@width<\pgfdecoratedpathlength
        \global \fittrue
      \else
        \global \fitfalse
      \fi
    }]{}

然后我可以\iffit在代码中使用它来检查装饰是否成功。对于这种情况有没有更优雅的解决方案?

答案1

是的。添加以下内容

\makeatletter
    \pgfutil@namedef{pgf@decorate@@text along path@left indent@code}{
        \ifdim\pgf@lib@dec@text@width>\pgfdecoratedremainingdistance
            \tikzerror{text too long}
        \fi
    }
\makeatother

https://tex.stackexchange.com/a/358705/51022了解更多信息。

平均能量损失

\documentclass[border=9,tikz]{standalone}
\usetikzlibrary{decorations.text}
\begin{document}

\makeatletter
    \pgfutil@namedef{pgf@decorate@@text along path@left indent@code}{
        \ifdim\pgf@lib@dec@text@width>\pgfdecoratedremainingdistance
            \tikzerror{text too long}
        \fi
    }
\makeatother

\begin{tikzpicture}
    \draw[postaction={decorate,decoration={text along path,
        text={Is this text long enough to trigger the error?}}}]
        (0,0)--(2,0);
\end{tikzpicture}

\end{document}

相关内容