Ich möchte einen Leuchteffekt für farbige Knoten verwenden, die Text enthalten. Leider kann ich nur den Schlüssel finden circular glow
, siehe Beispiel unten.
\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}
Gibt es eine Möglichkeit, einen rechteckigen farbigen Bereich mit ähnlichem Glanz wie der kreisförmige Bereich oben zu erhalten, also so etwas wie „rechteckigen Glanz“?
Antwort1
Sie könnten mit \shade
der „Aufteilung“ Ihres Schattierungsbereichs in vier Teile experimentieren und dabei die local bounding box
Option nutzen, die Eingabe expliziter Koordinaten zu vermeiden.
Ich habe auch ein \pic
mit zwei Argumenten erstellt: das erste ist der Name des rechteckigen Bereichs, den Sie schattieren möchten, in meinem Beispiel mybox
; das zweite ist die Farbe, die Sie verwenden möchten, in meinem Beispiel green
.
Natürlich können Sie auch andere Parameter hinzufügen, zum Beispiel die andere Farbe für die Schattierung, in meinen Beispielen ist „weiß“ fest.
\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}
Die Option on background layer
wird in Ihrem Fall nicht benötigt, aber ich habe sie hinzugefügt, um das Bild myshade
allgemeiner zu gestalten (um zu vermeiden, dass es den Bereich überschreiben könnte, siehe folgendes Beispiel, ohne das on background layer
der Text mynode
unter der Schattierung verborgen wäre).
Nur um zu zeigen, wie Sie das Bild zum Schattieren beliebiger rechteckiger Bereiche verwenden können myshade
. Der Begrenzungsrahmen ist rot schattiert, der Knoten ist cyan schattiert:
\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}
Antwort2
Nicht wirklich. Werfen wir einen Blick in die Anleitung:
Sie können also versuchen, eine Art Leuchten vorzutäuschen, indem Sie ein hinzufügen general shadow
. Wenn Sie scale
und fill color
sorgfältig auswählen, kommt es dem schon ziemlich nahe.
Sie können auch eine Überblendung hinzufügen (siehe die Bibliothek), diese bietet jedoch keine skalierte Überblendung, wie Sie möchten (nur N, W, S, O, kreisförmig).
Meinung: In Bezug auf die Lesbarkeit drop shadow
ist das vielleicht nicht so schlecht ... falls Sie solche Effekte benötigen, übrigens. Denken Sie daran, dass TeX/LaTeX ursprünglich aus dem Satz professioneller Dokumente wie Büchern stammt. Es widersetzt sich noch immer weitgehend dem MS-Office-Pfad ... was mir gefällt. Meistens hilft dieser restriktivere Ansatz dabei, visuelle Botschaften anders, wenn nicht sogar besser zu kommunizieren.
Ich habe Ihren Clip durch einen ausreichend großen Rand ersetzt.
\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}