TikZ dibuja el borde del nodo en la parte superior de la imagen

TikZ dibuja el borde del nodo en la parte superior de la imagen

Tengo una imagen dentro de un nodo TikZ. Debe haber un borde alrededor de la imagen, sin espacios. El borde debe tener un ancho de línea específico.

Mi problema es que el borde parece estar dibujado debajo de la imagen. Lo uso inner sep=0para eliminar el espacio entre la imagen y el borde. El efecto es un borde con la mitad del ancho de línea previsto, como se demuestra en el primer ejemplo:

\documentclass[tikz,margin=10pt]{standalone}
\begin{document}

    % Red border to distinguish from example image, which also has a border
    \begin{tikzpicture}
        \node[draw=red, inner sep=0mm, line width=10mm] {\includegraphics{example-image-a}};
    \end{tikzpicture}

    % Shows that part of the border was hiding behind the image
    \begin{tikzpicture}
        \node[draw=red, inner sep=10mm, line width=10mm] {\includegraphics{example-image-a}};
    \end{tikzpicture}

\end{document}

Puedo pensar en dos soluciones:

  1. Establezca la inner sepmitad del ancho del borde. De esta manera la frontera debería tener exactamente el espacio que necesita.
  2. Mantenga inner sep=0y establezca el ancho de línea al doble del valor previsto. Acepte que el borde se reduce a la mitad, por lo tanto duplíquelo de antemano.

¿Existe una solución más elegante? ¿Podemos decirle a TikZ que dibuje el borde del nodo después de la imagen? Podría vivir con una pequeña parte de la imagen cubierta por el borde.


La actualización tras la pregunta se cerró como duplicada:

La pregunta vinculada tiene una superposición significativa y me ayuda en mi situación específica. ¡Bien! Sin embargo, la otra pregunta no responde a la pregunta de si es posible dibujar el borde sobre el contenido del nodo y permanece abierta. La respuesta a esta pregunta podría resultar útil para las personas que quieren que el borde del nodo se dibuje en último lugar por otras razones. Es posible que la pregunta vinculada no les resulte útil.

Respuesta1

ingrese la descripción de la imagen aquí

En la imagen de la izquierda inner sep=0.5\pgfplinewidthestá la imagen de la derecha inner sep=0pt. Recientemente se agregó semitransparentuna opción, que es mejor visible: la imagen está cubierta por la mitad interior de la línea del borde de los nodos.


    \documentclass[margin=5mm]{standalone}
    \usepackage{duckuments}
    \usepackage{tikz}
    \usetikzlibrary{positioning}
    \begin{document}
        \begin{tikzpicture}
    \node (n1) [draw=red, line width=10mm, semitransparent,
                inner sep=0.5\pgflinewidth] % <---
                {\includegraphics{example-image-duck}};
    \node (n2) [draw=red, line width=10mm, semitransparent,
                inner sep=0, % <---
                right=of n1] 
                {\includegraphics{example-image-duck}};
       \end{tikzpicture}
    \end{document}

Respuesta2

Yo usaría a tcolorboxpara eso: el problema de la superposición de líneas ya debería tenerse en cuenta allí.
Si se requiere algún material de TikZ dentro de la imagen, esto también es posible con tcolorbox.

ingrese la descripción de la imagen aquí

%\documentclass[tikz,margin=10pt]{standalone}
\documentclass[a4paper]{article}
\usepackage[showframe]{geometry}
\usepackage[most]{tcolorbox}
\begin{document}
\tcbset{sharp corners,
NoGaps/.style={boxsep=0mm, left=0pt, right=0pt, top=0pt, bottom=0pt, before skip=0pt, after skip=0pt,}, 
}

\begin{tcolorbox}[NoGaps, 
colframe=red, boxrule=10mm,
hbox, % box as wide as the content
]
\includegraphics{example-image-a}
\end{tcolorbox}
\end{document}

información relacionada