
Wie kann ich mit Tikz Text in einem Bild hervorheben, indem ich ein Rechteck verwende und den Rest der Seite mit einem Grauton (oder einem undurchsichtigen Schwarzton) ausfülle? Siehe Beispiel unten (entnommen ausHier)?
Sie können einen Screenshot aus GIMP sehen, in dem ich Text einfach mit dem Rechteckauswahlwerkzeug markiere. Wie kann ich mit Tikz in Xetex einen ähnlichen Effekt erzielen (ohne die gelben gestrichelten Linien an den Rändern)?
Mein Code, den ich bisher habe, ist:
\begin{tikzpicture}[remember picture, overlay]
\node [anchor=south west,inner sep=0] (A) at (0,0) {\includegraphics[width=\linewidth, height=\paperheight]{image}}{};
\fill [draw=none, fill=black, fill opacity=0.3]
(0,0) --
(A.north west) -- (A.north east) -- (A.south east) --
(0,0) -- (0,0) -- cycle;
\filldraw [fill=white, draw=white, fill opacity=.3] (3.2,3.2) rectangle (14.6,10.5);
\end{tikzpicture}
Das Problem, das ich bei diesem Code habe, besteht darin, dass das Füllen der gesamten Seite mit undurchsichtigem Schwarz und das Füllen des Rechtecks mit undurchsichtigem Weiß zu einem undurchsichtigen Grau führt.
Antwort1
Hier ist ein Rezept und eine Anwendung. Zuerst das Rezept mitdiese Antwort.
- Fügen Sie oben ein Gitter hinzu.
- Zeichnen Sie die Kontur, die Sie hervorheben möchten.
- Verwenden Sie die Kontur in einer
even odd rule
Füllung (und löschen Sie das Raster).
Ich habe absichtlich ein Dokument verwendet, in dem Sie möglicherweise keine horizontale Box verwenden möchten.
\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\foreach \X in {0,1,2}
{\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0)
{\includegraphics[width=0.9\textwidth]{Dunlap_broadside_copy_of_the_United_States_Declaration_of_Independence,_LOC.jpg}};
% ^^^ https://upload.wikimedia.org/wikipedia/commons/4/4e/Dunlap_broadside_copy_of_the_United_States_Declaration_of_Independence%2C_LOC.jpg
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\path[use as bounding box] (-0.1,-0.1) rectangle (1,1);
% ^^^ only for animation
\ifnum\X<2
\draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1);
\foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; }
\foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y}; }
\fi
\ifnum\X=1
\draw (0.11,0.4) -- (0.37,0.404) -- (0.37,0.414) -- (0.11,0.41) -- cycle;
\fi
\ifnum\X=2
\fill[even odd rule,opacity=0.4]
(0.11,0.4) -- (0.37,0.404) -- (0.37,0.414) -- (0.11,0.41) -- cycle
(0,0) rectangle (1,1);
\fi
\end{scope}
\end{tikzpicture}}
\end{document}
Natürlich lässt man am Ende all den zusätzlichen Kram weg, um zu kommen
\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0)
{\includegraphics[width=0.9\textwidth]{Dunlap_broadside_copy_of_the_United_States_Declaration_of_Independence,_LOC.jpg}};
% ^^^ https://upload.wikimedia.org/wikipedia/commons/4/4e/Dunlap_broadside_copy_of_the_United_States_Declaration_of_Independence%2C_LOC.jpg
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\fill[even odd rule,opacity=0.4]
(0.11,0.4) -- (0.37,0.404) -- (0.37,0.414) -- (0.11,0.41) -- cycle
(0,0) rectangle (1,1);
\end{scope}
\end{tikzpicture}
\end{document}
Ob meine Wahl des hervorgehobenen Textes etwas mit einer Mauer an der Grenze zu Mexiko zu tun hat, möchte ich hier nicht näher erläutern.
Antwort2
Abhängig vom Format der Bilder ist Folgendes nicht tikz
erforderlich:
\documentclass{article}
\usepackage{graphicx,stackengine,trimclip}
\begin{document}
\stackinset{l}{150pt}{b}{130pt}{%
\clipbox{150pt 130pt 100pt 50pt}{\includegraphics{example-image.jpg}}%
}{%
\includegraphics[decodearray={.3 .5 .3 .5 .3 .5}]{example-image.jpg}%
}
\end{document}
Abhängig von der Farbpalette decodearray
müssen möglicherweise folgende Anpassungen vorgenommen werden:
\documentclass{article}
\usepackage{graphicx,stackengine,trimclip}
\begin{document}
\stackinset{l}{20pt}{b}{40pt}{%
\clipbox{20pt 40pt 15pt 15pt}{\includegraphics{example-grid-100x100bp.png}}%
}{%
\includegraphics[decodearray={.3 .6 .3 .6 .3 .6}]{example-grid-100x100bp.jpg}%
}
\end{document}
decodearray
funktioniert nicht für cmyk
Farbschemata und nur für eine begrenzte Anzahl von Bildformaten (JPEG ist eines davon).