Posicionamiento de fotografías.

Posicionamiento de fotografías.

Quiero dibujar dos fotos, la segunda foto debe estar debajo de la primera. Esto es lo que tengo actualmente:

Producción

¿Cómo puede la segunda imagen recibir la misma coordenada x que la primera?

Código:

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{positioning}
\usetikzlibrary{fit}
\begin{document}

\tikzset{
    pics/vhsplit/.style n args = {3}{
        code = {
        \node (A) at (0,0) {#1};
        \node[anchor=south west] (B) at (A.east) {#2};
        \node[anchor=north west] (C) at (A.east) {#3};
        \node[inner sep=0pt, outer sep=0pt, draw, rounded corners, fit=(A)(B)(C)] (-box) {}; 
        \draw (B.north west) -- (C.south west)
              (B.south west) -- (C.north east);
        }
    }
}

\begin{tikzpicture}
\pic (a) {vhsplit={a}{2.0}{6.0}};
\pic[below=10mm of a-box.south] (b) {vhsplit={b}{-3.0}{-4.0}};
\end{tikzpicture}

\end{document}

Respuesta1

Las fotografías no son tan inteligentes como los nodos. Siempre es el origen de la imagen el que se coloca en la ubicación especificada.

Si esto es todo lo que necesita, podría ser más fácil usar un nodo normal con un tabularnodo dentro. Aquí hay tres enfoques:

  1. Texto normal y tabular con dos filas y una columna
    vhsplit
  2. Un tabular con dos filas y dos columnas donde #1se coloca un \multirow
    vhsplit'
  3. Arectangle splitformade la shapes.multipartbiblioteca, nuevamente con una tabla como en 1.
    vhsplit''

Dado que las líneas de la tabla deben tocar el borde del nodo, estableceré s inner sep(predeterminado .3333em) en cero e insertaré ese espacio en los lugares apropiados nuevamente.

Las ubicaciones verticales de la parte izquierda son un poco variables, elija la que mejor se adapte a sus casos de uso (las soluciones están coloreadas en rojo/verde/azul en este orden y se colocan una encima de la otra con opacity=.3333):

ingrese la descripción de la imagen aquí

Código

\documentclass[tikz,border=2mm]{standalone}
\usepackage{hhline}
\usepackage{multirow}
\usetikzlibrary{positioning}
\tikzset{
  vhsplit/.style n args={3}{% text and a tabular
    shape=rectangle, draw, rounded corners, inner sep=+0pt,
    node contents={%
      \setlength{\tabcolsep}{.3333em}%
      \hspxsep#1\hspxsep
      \begin{tabular}{|l@{\hspxsep}}
        \vstysep$#2$\\\hhline{|-}
        \vstysep$#3$%
      \end{tabular}}},
  vhsplit'/.style n args={3}{
    shape=rectangle, draw, rounded corners, inner sep=+0pt,
    node contents={% multirow in a tabular
      \setlength{\tabcolsep}{.3333em}%
      \begin{tabular}{l|l@{\hspxsep}}
        \multirow{2}{*}{#1} &
        \vstysep$#2$\\\hhline{~|-}
        & \vstysep$#3$%
      \end{tabular}}}}
\usetikzlibrary{shapes.multipart}
\tikzset{
  vhsplit''/.style n args={3}{
    shape=rectangle split, rectangle split horizontal, rectangle split parts=2,
    draw, rounded corners, inner sep=+0pt,
    node contents={% two nodeparts and a tabular
      \hspxsep#1\hspxsep\null
      \nodepart{two}\setlength{\tabcolsep}{.3333em}%
      \begin{tabular}{l}
        \vstysep$#2$\\\hline
        \vstysep$#3$
      \end{tabular}}}}
\newcommand*\hspxsep{\hspace{.3333em}}
\newcommand*\vstysep{\rule{0pt}{1.0333em}}
\begin{document}
\begin{tikzpicture}
\node             (a) [vhsplit={a}{ 2.0} {6.0}];
\node[below=of a] (b) [vhsplit={b}{-3.0}{-4.0}];

\tikzset{xshift=2cm}
\node (a)         (a) [vhsplit'={a} {2.0} {6.0}];
\node[below=of a] (b) [vhsplit'={b}{-3.0}{-4.0}];

\tikzset{xshift=2cm}
\node             (a) [vhsplit''={a} {2.0} {6.0}];
\node[below=of a] (b) [vhsplit''={b}{-3.0}{-4.0}];
\end{tikzpicture}
\end{document}

Producción

ingrese la descripción de la imagen aquí

Respuesta2

Prueba esto:

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{positioning}
\usetikzlibrary{fit}
\begin{document}
    
    \tikzset{
        pics/vhsplit/.style n args = {3}{
            code = {
                \node (A) at (0,0) {#1};
                \node[anchor=south west] (B) at (A.east) {#2};
                \node[anchor=north west] (C) at (A.east) {#3};
                \node[inner sep=0pt, outer sep=0pt, draw, rounded corners, fit=(A)(B)(C)] (-box) {}; 
                \draw (B.north west) -- (C.south west)
                (B.south west) -- (C.north east);
            }
        }
    }

    \begin{tikzpicture}{scale=3} % <-- changed
        \pic (a) {vhsplit={a}{2.0}{6.0}};
        \pic[xshift=0cm,yshift=-1cm] (b) {vhsplit={b}{-3.0}{-4.0}};
    \end{tikzpicture}
    
\end{document}

PRODUCCIÓN:

ingrese la descripción de la imagen aquí

información relacionada