Tikz 装饰文字中的数学有错误吗?

Tikz 装饰文字中的数学有错误吗?

下列的这个例子, 我写的:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{
    decorations.text,
    }
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (6,0);
\draw[->, >=latex, blue!20!white, bend left=20, line width=15pt] (a) to (b) ;
\draw [bend left=20, decoration={raise=-0.8ex,text along path, text={{$start$}.}, text align={align=left}}, decorate] (a) to (b);
\draw [bend left=20, decoration={raise=-0.8ex,text along path, text={{$end\qquad$}.}, text align={align=right}}, decorate] (a) to (b);
\end{tikzpicture}
\end{document}

但是,如果我删除“。”字符,LaTeX 要么永远重复文本,要么陷入无限循环。

答案1

不要.使用一对空的{}

相反,\qquad我提出的那个黑客

text align/right indent=1cm

遗憾的是,这不适用于em单位……

代码

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (6,0);
\draw[->, >=latex, blue!20!white, bend left=20, line width=15pt] (a) to (b) ;
\draw [name=reusepath,bend left=20, decoration={raise=-0.8ex,text along path, text={{$start$}{}}}, decorate] (a) to (b);
\draw [bend left=20, decoration={raise=-0.8ex,text along path, text={{$end$}}, text align/right indent=1cm, text align=right}, decorate] (a) to (b);
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

来自beamer手册

只有在相当严格的限制下,才有可能在数学模式下排版文本。使用类别代码为 3 的任何字符(例如,在纯 TeX 中为$)可以进入和退出数学模式。数学下标和上标需要包含在括号内(例如),命令如或 也{^y_i}一样。但是,即使是适度复杂的数学排版也不太可能沿着路径成功(甚至不可取)。\times\cdot


更新

我允许自己稍微“清理”一下你的代码,这样就只生成一条路径,并且将装饰声明为后续动作。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text,intersections}
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (6,0);
\draw[->, >=latex,
      blue!20!white,
      bend left=20,
      line width=15pt,
      postaction={decorate,decoration={
          raise=-0.8ex,
          text along path,
          text={{$start$}{}}
        }
      },
      postaction={decorate,decoration={
          raise=-0.8ex,
          text along path,
          text={{$end$}},
          text align/right indent=1cm,
          text align=right
        }
      }
  ] (a) to (b) ;
\end{tikzpicture}
\end{document}

相关内容