如何在文本下绘制形状?

如何在文本下绘制形状?

我利用这memoir门课来制作一本儿童诗集。为了让读者更感兴趣,我依靠包装background来包含覆盖整个页面的图片。

有时,如果背景图像干扰了文本,文本的可读性就会很差。在这种情况下,我会编辑图像并移动其中的一些元素,反复进行,直到结果看起来不错。但是,当诗句被打乱或字体大小发生变化时,必须重新进行此过程。以下是此类问题的一个例子:

由于背景图像导致对比度差

我正在寻找一种“关注内容,而不是展示”的方法,我认为在背景和文本之间放置一个形状可以解决这个问题。我设想了这样一种情况,我可以调整形状的不透明度并模糊其边缘:

背景图像和文本之间的形状

如何用 LaTeX 实现这一点,即当文本发生变化时,形状的大小会自动调整?我也会喜欢那些不是完全自动化的解决方案,但它们完全在 LaTeX 中工作,不需要编辑图像本身。

以下是重现该问题的一个最小示例:

\documentclass[14pt]{memoir}
\usepackage[pages=some]{background}

\begin{document}

\PlainPoemTitle
\PoemTitle{Lo Remipsum}

\begin{verse}[\versewidth]
one two three four \\
one two three four \\
one two three four \\
one two three four.
\end{verse}



\backgroundsetup{scale = 1,
angle = 0,
opacity = 1,
contents = {\includegraphics[
    width = \paperwidth,
    height = \paperheight]
    {example-image-a}}}\BgThispage
\end{document}

这是书中的一个实际例子。目前的解决方法是降低背景的不透明度,使对比度可以接受。但理想情况下,图像不应该看起来太苍白,除了在文本下面。

文字在图片上方,对比度差

答案1

另一种可能性(但需要大量手动操作……)是将文本打印在具有给定透明度的白色填充的矩形中。例如,使用 TiZ:

\documentclass[14pt]{memoir}
\usepackage[pages=some]{background}
\usepackage{tikz}

\begin{document}

\PlainPoemTitle
\PoemTitle{Lo Remipsum}

\hspace{8cm}\tikz \node[text width=5cm, fill=white, fill opacity=0.7, text opacity=1]{
    one two three four \\
    one two three four \\
    one two three four \\
    one two three four.
};

\backgroundsetup{scale = 1,
angle = 0,
opacity = 1,
contents = {\includegraphics[
    width = \paperwidth,
    height = \paperheight]
    {example-image-a}}}\BgThispage
\end{document}

在此处输入图片描述

如果背景图片是白色背景的话,效果会更好。

为了模糊边缘,我可以使用圆形阴影;不幸的是,我不知道如何定义像您在示例中展示的“矩形阴影”,但或许是可能的

\documentclass[14pt]{memoir}
\usepackage[pages=some]{background}
\usepackage{tikz}
\usetikzlibrary{fadings}

\pgfdeclareradialshading{myfadingraw}{\pgfpointorigin}{
  color(0pt)=(pgftransparent!30); color(21bp)=(pgftransparent!30);
  color(25bp)=(pgftransparent!100); color(50bp)=(pgftransparent!100)}%
\pgfdeclarefading{side shaded}{\pgfuseshading{myfadingraw}}%

\begin{document}

\PlainPoemTitle
\PoemTitle{Lo Remipsum}

\hspace{8cm}\tikz \node[text width=4.5cm, fill=white, 
    path fading = side shaded,
    text opacity=1, inner xsep=2cm, inner ysep=0.5cm]{
    one two three four \\
    one two three four \\
    one two three four \\
    one two three four.
};

\backgroundsetup{scale = 1,
angle = 0,
opacity = 1,
contents = {\includegraphics[
    width = \paperwidth,
    height = \paperheight]
    {example-image-a}}}\BgThispage
\end{document}

在此处输入图片描述

答案2

将不透明度参数的值更改为小于 1,例如opacity=0.4。使用此不透明度值,您将获得以下结果:

在此处输入图片描述

相关内容