这是我昨天发布的一个问题的后续:
在未收到上述问题的答案后,我已能够弯曲一个句子并将其放置在打开的书本图像中。(这可能不是最佳方法,但它是一个开始---如果有人可以提供更好的替代方案,我将不胜感激。):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\newcommand{\openbook}[1][black]
{\begin{tikzpicture}
\fill[#1] (-0.4,0) rectangle (0.4,0.6) (180:0.03cm) arc (180:360:0.03cm);
\begin{pgfinterruptboundingbox}
\draw[line width=0.02cm,#1,fill=white,miter limit=1]
(0,0.03) to[controls={+(150:0.15cm) and +(25:0.15cm)}] (-0.36,0.04) --
(-0.36,0.64) to[controls={+(25:0.15cm) and +(150:0.15cm)}]
(0,0.6) to[controls={+(30:0.15cm) and +(155:0.15cm)}] (0.36,0.64) --
(0.36,0.04) to[controls={+(155:0.15cm) and +(30:0.15cm)}]
(0,0.03) -- (0,0.6);
\end{pgfinterruptboundingbox}
\end{tikzpicture}}
\begin{document}
\thispagestyle{empty}
\scalebox{15}{\openbook[brown]}
\large
\vskip -255pt
\begin{tikzpicture}
\node (One) at (-1,1) {}; %[shape=circle,draw] {$One$};
\node (Two) at (5,0) {}; %[shape=circle,draw] {$Two$};
\draw[white] [->,thick,postaction={decorate,decoration={raise=2.5ex,text along path,text align=center,text={|\sffamily|Bending some words.}}}] (One) to [bend left=65] (Two);
\end{tikzpicture}
\end{document}
产生输出
然而,我无法让底层曲线完全消失(如您所见)。我尝试将其涂成白色,但它却进入了图像的棕色部分——使其变得显眼。
问:有什么方法可以让我彻底抹去底层曲线吗?
谢谢。
答案1
当您想以某种方式使用路径但又不想绘制实际路径时,实现此目的的方法通常是使用\path
而不是 来定义路径\draw
。此外,如果您只想装饰路径,那么您可以直接在路径上使用装饰,而不必通过后置操作。
查看其余代码,我还会将书本实现为,pic
以便您可以直接将其嵌入图片中,而不必移动方框。我还会让装饰路径成为边缘路径的精确副本 - 使其看起来更加协调。
我还调整了坐标,以便将比例因子设为 15。这可能不是必要的,但在调整过程中,缩放比例会干扰文本调整。
遍历文本的循环有点低级,但我不知道循环是否\foreach
可以按照“do till”范例工作,而不是循环遍历特定列表。
\documentclass{article}
%\url{https://tex.stackexchange.com/q/583881/86}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\usepackage{lipsum}
\unpacklipsum[8]
\let\textToTypeset\lipsumexp
\newcount\bookline
\tikzset{
open book colour/.initial=brown,
open book/.pic={
\fill[
\pgfkeysvalueof{/tikz/open book colour}
]
(-6,0) rectangle (6,9) (180:0.45cm) arc (180:360:0.45cm);
\draw[
\pgfkeysvalueof{/tikz/open book colour},
fill=white,
]
(0,0.45) to[controls={+(150:2.25cm) and +(25:2.25cm)}] (-5.4,0.6) --
(-5.4,9.6) to[controls={+(25:2.25cm) and +(150:2.25cm)}]
(0,9) to[controls={+(30:2.25cm) and +(155:2.25cm)}] (5.4,9.6) --
(5.4,0.6) to[controls={+(155:2.25cm) and +(30:2.25cm)}]
(0,0.45) -- (0,9);
}
}
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}
\pic[line width=1mm] {open book};
\bookline=5\relax
\loop\unless\ifx\textToTypeset\empty\relax
\path[
decorate,
decoration={
text along path,
text align=left,
text align/left indent=1ex,
text align/right indent=1ex,
text={|\sffamily|\textToTypeset}
},
yshift=-\the\bookline em
]
(-5.4,9.6) .. controls +(25:2.25cm) and +(150:2.25cm) .. (0,9);
\let\textToTypeset=\pgfdecorationrestoftext
\advance\bookline by 1\relax
\repeat
\end{tikzpicture}
\end{document}