涂抹 Tikzpicture 中用于弯曲文本的曲线

涂抹 Tikzpicture 中用于弯曲文本的曲线

这是我昨天发布的一个问题的后续:

如何弯曲文字以符合打开的书本图像的拱形页面

在未收到上述问题的答案后,我已能够弯曲一个句子并将其放置在打开的书本图像中。(这可能不是最佳方法,但它是一个开始---如果有人可以提供更好的替代方案,我将不胜感激。):

\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}

带有行文字的书

相关内容