我是 TikZ 的新用户,我开始使用该包创建 FSM。一切都很顺利,直到我遇到了命名弯曲边缘的问题。
有一个关于边缘文本的相关问题这里。但当我尝试将其应用于我的问题时,即使用它作为
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
\node (One) at (-3,0) [shape=circle,draw] {$One$};
\node (Two) at ( 3,0) [shape=circle,draw] {$Two$};
\def\myshift#1{\raisebox{-2.5ex}}
\draw [->,
thick,
postaction={decorate,
decoration={text along path,
text align=center,
text={|\sffamily\myshift|SUPERSCRIPT^{TEST}}
}
}
] (One) to [bend right=45] (Two);
\end{tikzpicture}
\end{document}
它不起作用。这会SUPERSCRIPT^{TEST}
导致错误。我还没有找到一种方法来以这种方式使用没有上标的文本。有没有解决办法?
先感谢您。
答案1
您尝试使用 ,^
这是文本模式下的数学模式命令,这就是您收到错误的原因。如果要将常规文本上标,则应使用\textsuperscript
而不是。但是,在的参数^
中,宏需要使用 进行保护。您还遗漏了该行。因此,以下方法有效。text
decoration
{...}
\end{tikzpicture}
此外,\myshift
不需要原始答案中的宏;相反,您可以使用raise
装饰内的键。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
\node (One) at (-3,0) [shape=circle,draw] {$One$};
\node (Two) at (3,0) [shape=circle,draw] {$Two$};
\draw [->,thick,postaction={decorate,decoration={text along path,
text align=center,raise=-2.5ex,
text={|\sffamily|SUPERSCRIPT{\textsuperscript{TEST}}}}}]
(One) to [bend right=45] (Two);
\end{tikzpicture}
\end{document}
这不是一个完美的解决方案,因为您放入的材料{...}
将被视为相对于路径的单个单元,如果它很长,您将得到非常不受欢迎的结果:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
\node (One) at (-3,0) [shape=circle,draw] {$One$};
\node (Two) at (3,0) [shape=circle,draw] {$Two$};
\def\myshift#1{\raisebox{-2.5ex}}
\draw [->,thick,postaction={decorate,decoration={text along path,
text align=center,raise=-2.5ex,
text={|\sffamily|SUPERSCRIPT{\textsuperscript{REALLY LONG TEST}}}}}]
(One) to [bend right=45] (Two);
\end{tikzpicture}
\end{document}
答案2
定义但未使用的宏\myshift
给了我一个想法,即改变\textsuperscript
给定文本中间的字体大小和“提升”量。我必须承认,我猜到了差异,所以这可能不是最好的答案:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
\node (One) at (-3,0) [shape=circle,draw] {$One$};
\node (Two) at (3,0) [shape=circle,draw] {$Two$};
\def\myshift#1{\raisebox{-2.5ex}}
\draw [->,thick,postaction={decorate,decoration={text along path,
text align=center,raise=-2.5ex,
text={|\sffamily|SUPERSCRIPT{\textsuperscript{REALLY LONG TEST}}}}}]
(One) to [bend right=45] (Two);
\end{tikzpicture}
Alternative:
\bigskip
\begin{tikzpicture}
\node (One) at (-3,0) [shape=circle,draw] {$One$};
\node (Two) at (3,0) [shape=circle,draw] {$Two$};
\def\myshift#1{\raisebox{1.5ex}}
\draw [->,thick,postaction={decorate,decoration={text along path,
text align=center,raise=-2.5ex,
text={|\sffamily|SUPERSCRIPT\ |\sffamily\tiny\myshift|REALLY LONG TEST}}}]
(One) to [bend right=45] (Two);
\end{tikzpicture}
\end{document}