我画了两个同心圆,并将它们分成三个扇区,每个扇区包含一些文字。如何装饰文字?
\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
\draw [thick] (0,0) circle (10cm); %outer circle
\foreach \i/\j in {0/text-1, 120/text-2, 240/text-3}
{
\draw [black] (0,0) -- (\i:10cm);
\draw [black] (0,0) -- (\i+1:10cm);
\path
[
decorate,
decoration={
text along path,
reverse path,
text={\j},
text align=center
}
] (\i:10mm) arc (\i:{\i+120}:10mm);
}
\draw [thick] (0,0) circle (5cm); %inner most circle
\foreach \k/\m in {0/Text in Italics: Some text here., 120/Text to be underlined: Some text here too., 240/Text to be underlined and then italicized: Some more text here.}
{
\path
[
decorate,
decoration={
text along path,
reverse path,
text={\m},
text align=center
}
] (\k:65mm) arc (\k:{\k+120}:65mm);
}
\end{tikzpicture}
\end{document}
答案1
这将产生斜体,这很容易:
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
\draw [thick] (0,0) circle (10cm); %outer circle
\foreach \i/\j in {0/text-1, 120/text-2, 240/text-3}
{
\draw [black] (0,0) -- (\i:10cm);
\draw [black] (0,0) -- (\i+1:10cm);
\path
[
decorate,
decoration={
text along path,
reverse path,
text={\j},
text align=center
}
] (\i:10mm) arc (\i:{\i+120}:10mm);
}
\draw [thick] (0,0) circle (5cm); %inner most circle
\foreach \k/\m in {0/|\itshape|Text in Italics||: Some text here., 120/Text to be underlined: Some text here too., 240/Text to be underlined and |\itshape|then italicized||: Some more text here.}
{
\path
[
decorate,
decoration={
text along path,
reverse path,
text={\m},
text align=center
}
] (\k:65mm) arc (\k:{\k+120}:65mm);
}
\end{tikzpicture}
\end{document}
为了强调,你必须做出选择。
选择其他效果而不是下划线,然后按上述步骤操作。简单明了,而且印刷效果也更好。也就是说,它很简单,而且美观性更好。它不符合你的要求,但你不应该想给文本添加下划线,这样它就满足了你应该有的要求。遗憾的是,这可能没有多大帮助。
找出相关点并手动绘制弧线。简单但繁琐。维护棘手。不够优雅。满足要求。
切换到
text effects along path
,它允许您将序列中的每个字符作为独立节点处理。功能更强大,但速度很慢。如果您需要在文档中多次执行此操作,则编译时间会有很大差异。另一方面,PGF/Ti钾Z 已经非常慢了,所以编译时间可能不是一个主要问题。
其中,我推荐并首选方案 1。如果不行,则选择方案 3。
答案2
也许有一些更轻松的东西,基于@cfr 解决方案:foreach
可以用类似这样的内容替换:
\path
[
decorate,
decoration={text along path,
raise=.7ex,
text align={align=left},
text={Some |\bfseries|Bold|| and \itshape|italics|| text}
}
] (0:65mm) arc (0:120:65mm);