Я хотел бы использовать эффект свечения для цветных узлов, содержащих текст. К сожалению, я могу найти только ключ circular glow
, см. пример ниже.
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadows}
\begin{document}
\begin{tikzpicture}
\clip (-2, -3) rectangle (2,3);
\node[circular glow={fill=green}, rectangle, text width=2.5cm, align=justify] {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
\end{tikzpicture}
\end{document}
Есть ли способ получить прямоугольную цветную область с таким же свечением, как у круглой области выше, т. е. что-то вроде «прямоугольного свечения»?
решение1
Вы можете поиграть с \shade
«разделением» области затенения на четыре части, воспользовавшись local bounding box
возможностью избежать указания явных координат.
Я также создал \pic
с двумя аргументами: первый — это имя прямоугольной области, которую вы хотите затенить, в моем примере mybox
; второй — это цвет, который вы хотите использовать, в моем примере green
.
Конечно, вы можете добавить другие параметры, например, другой цвет для затенения, в моих примерах «белый» — это фиксированный параметр.
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings, backgrounds}
\tikzset{
pics/myshade/.style 2 args={
code = {%
\begin{scope}[on background layer]
\shade[upper left=white, upper right=#2,
lower left=white,lower right=white]
(#1.south west) rectangle (#1.center);
\shade[upper left=#2, upper right=white,
lower left=white,lower right=white]
(#1.south) rectangle (#1.east);
\shade[upper left=white, upper right=white,
lower left=#2,lower right=white]
(#1.center) rectangle (#1.north east);
\shade[upper left=white, upper right=white,
lower left=white,lower right=#2]
(#1.west) rectangle (#1.north);
\end{scope}
}
}
}
\begin{document}
\begin{tikzpicture}[local bounding box=mybox]
\clip (-2, -3) rectangle (2,3);
\pic {myshade={mybox}{green}};
\node[rectangle, text width=2.5cm, align=justify]
{Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
\end{tikzpicture}
\end{document}
В вашем случае эта опция on background layer
не нужна, но я добавил ее, чтобы сделать изображение myshade
более общим (чтобы избежать перезаписи области, см. следующий пример, без on background layer
текста, который mynode
был бы скрыт под затенением).
Просто чтобы показать, как можно использовать картинку myshade
для затенения любых прямоугольных областей. Ограничивающий прямоугольник затенен красным, узел затенен голубым:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings, backgrounds}
\tikzset{
pics/myshade/.style 2 args={
code = {%
\begin{scope}[on background layer]
\shade[upper left=white, upper right=#2,
lower left=white,lower right=white]
(#1.south west) rectangle (#1.center);
\shade[upper left=#2, upper right=white,
lower left=white,lower right=white]
(#1.south) rectangle (#1.east);
\shade[upper left=white, upper right=white,
lower left=#2,lower right=white]
(#1.center) rectangle (#1.north east);
\shade[upper left=white, upper right=white,
lower left=white,lower right=#2]
(#1.west) rectangle (#1.north);
\end{scope}
}
}
}
\begin{document}
\begin{tikzpicture}[local bounding box=mybox]
\clip (-2, -3) rectangle (2,3);
\pic {myshade={mybox}{red}};
\node[rectangle, text width=2.5cm, align=justify] (mynode)
{Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
\pic {myshade={mynode}{cyan}};
\end{tikzpicture}
\end{document}
решение2
Не совсем. Давайте посмотрим на руководство:
Так что вы можете попытаться притвориться, что у вас есть какое-то свечение, добавив general shadow
. Если вы выберете scale
и fill color
будете осторожны, то это будет довольно близко.
Вы также можете добавить затухание, см. его библиотеку, но он не обеспечивает масштабируемое затухание, как вам нужно (только С, З, Ю, В, круговые).
Мнение: С точки зрения читаемости, это drop shadow
может быть не так уж и плохо... если вам нужны такие эффекты, кстати. Помните, TeX/LaTeX возник из набора профессиональных документов, таких как книги. В значительной степени он все еще сопротивляется пути MS-Office... который мне нравится. Чаще всего этот более ограничительный подход помогает передавать визуальные сообщения иначе, если не лучше.
Я заменил ваш клип на достаточно большую рамку.
\documentclass[border=6mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shadows}
\begin{document}
\begin{tikzpicture}
% \clip (-2, -3) rectangle (2,3);
\node[
circular glow={fill=green},
rectangle,
text width=2.5cm,
align=justify
] at (0,0)
{Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
\node[
general shadow={fill=green!45,shadow scale=1.05},
% drop shadow, fill=green,
rectangle, fill=green,
text width=2.5cm,
align=justify
] at (5,0)
{Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
\end{tikzpicture}
\end{document}