Saltar al contenido

Poner texto al lado de una imagen tikz

Solución:

Hay dos enfoques:

1. Incluir el texto como parte de la figura.

Simplemente tiene que agregar un nodo dentro del tikzpicture. Será útil limitar el ancho del texto, y jugar con anclas para colocarlo en el lugar requerido. p.ej:

node[text width=6cm, anchor=west, right] at (5,0)
    In this diagram, what can you say about $angle F$, $angle B$ and $angle E$?;

En imagen

2. Para eliminar el texto del tikzpicture medio ambiente.

Para esta solución tienes que tener en cuenta que, para TeX, tu figura completa es como un ENORME carácter, parte de una oración, por lo que puede poner su texto justo después de ese “carácter” y TeX formará un párrafo con él

begintikzpicture
% Your code
endtikzpicture
In this diagram, what can you say about $angle F$, $angle B$ and$angle E$?

Sin embargo, si prueba esto con su código, obtendrá el siguiente resultado extraño:

Extraño

Esto se debe a que incluyó esta línea en su figura:

clip(-4.3,-5.44) rectangle (18.7,6.3);

lo que hace que la figura tenga un ancho de 18,7 cm y una altura de 6,3 cm. Esta línea es innecesaria y se puede quitar de forma segura, produciendo:

Párrafo

Puede ver que la figura se usa como un carácter grande, parte de un párrafo “normal”. Sin embargo, el resultado es feo, porque el texto se deforma y continúa debajo de la figura.

Esto se puede evitar poniendo el texto dentro de un parbox lo que producirá un cuadro de ancho fijo que contiene el texto. TeX tratará todo este cuadro como otro “gran carácter” y lo pondrá al lado de la figura:

begintikzpicture
% Your code
endtikzpicture
parbox[b]4cm
   In this diagram, what can you say about $angle F$, $angle B$ and$angle E$?

Opción [b] es especificar dónde está la “línea de base” de este cuadro. Las líneas de base se alinean en la misma línea horizontal al redactar un párrafo. La imagen tikz tiene su línea de base en la parte inferior, así que si le damos [b] opción al parbox, haciéndola línea de base también en la parte inferior, ambos se alinearán:

Abajo alineado

Si omites [b] en el parbox, el parbox resultante tendrá su línea de base en su centro. Esto alineará el centro del parbox con la parte inferior de la figura, y esto es feo. Para obtener el mismo resultado que en el caso 1 (texto incrustado en la imagen tikz), necesitamos cambiar la línea de base de la figura y ponerla en su centro. Afortunadamente tikz tiene una opción simple para esto:

begintikzpicture[baseline=0, ...remaining options...]
% Your code
endtikzpicture
hskip1cmparbox4cm
   In this diagram, what can you say about $angle F$, $angle B$ and$angle E$?

Produce:

Alineado en el centro

Para completar, incluiré también el caso de la alineación superior, que es un poco más complicado que otros. Se podría pensar que, para conseguir una alineación superior, bastaría con poner el baseline de la figura tikz en su parte superior, y use [t] opción para el parbox. Sin embargo, esto no funciona como se esperaba.

Primero, la imagen de tikz. ¿Para qué valor debo escribir? baseline ¿opción? Puede aceptar un número, que es una medida del borde inferior, o las coordenadas de un nodo. En este caso, sé (leyendo el código) que el círculo tiene un radio alrededor 4 unidades, por lo que podría usar baseline=4cm, pero esto no tiene en cuenta el espacio necesario para la etiqueta B en la parte superior, y no es una solución general. La solución general es dar la opción baseline=(current bounding box.north).

Segundo, el [t] opción para parbox no pone la línea de base “en la parte superior de ese cuadro”, sino “en la línea de base de la línea superior de ese cuadro”. Entonces, la línea de base de la primera línea de texto se alineará con el borde superior de la figura, como muestra la siguiente figura (agregué un borde a la figura para hacer más evidente el problema):

Mala alineación

La solución es incluir una línea “vacía” como primera línea del parbox. Se puede lograr con vskip0pt. Esto producirá una línea que no tiene altura ni profundidad, pero como es la primera línea del parbox, se utilizará como línea de base y está exactamente en la parte superior de ese cuadro. Este es el código:

fboxbegintikzpicture[baseline=(current bounding box.north), ...]
% Your code
endtikzpicture
parbox[t]4cmvskip0pt
   In this diagram, what can you say about $angle F$, $angle B$ and$angle E$?

Correcta alineación

Puedes usar dos minipage medio ambiente. Si necesita recortar su imagen, puede usar trim left y trim right consulte el manual pgf para obtener explicaciones.

No necesitas cargar pgf pero sólo tikz y puedes reducir tu código.

documentclass[10pt]article
usepackage[utf8]inputenc
usepackagetikz   
usetikzlibraryarrows
pagestyleempty
begindocument

beginminipage0.5textwidth  
    begintikzpicture[line cap=round,line join=round,>=triangle 45,scale=.6,font=scriptsize]  

    draw (0,0) circle (4.01cm) node [above]$A$;
    draw (-4.01,0) node[left] $C$
          -- (0,0)
          -- (4.01,0) node [right]$D$ 
          -- (-0.28,4)node[above] $B$ 
          -- (-4.01,0) 
          -- (1.62,3.67)node[above] $E$
          -- (4.01,0) 
          -- (-2.27,3.3) node[above] $F$ -- cycle;
        fill [color=black] (0,0) circle (1.5pt)
                          (-0.28,4) circle (1.5pt)
                          (-4.01,0) circle (1.5pt)
                          (4.01,0) circle (1.5pt)
                          (1.62,3.67) circle (1.5pt) 
                          (-2.27,3.3) circle (1.5pt);
    endtikzpicture    
endminipagehfill
beginminipage0.5textwidth
    In the following diagram, what can you say about $angle F$, $angle B$ and$angle E$? 
endminipage

enddocument 

ingrese la descripción de la imagen aquí

Ahora si quieres poner el texto y la figura en su parte superior

documentclass[10pt]article
usepackage[utf8]inputenc
usepackagetikz   
usetikzlibraryarrows
pagestyleempty
begindocument


    begintikzpicture[baseline=(current bounding box.north),line cap=round,line join=round,>=triangle 45,scale=.6,font=scriptsize]  

    draw (0,0) circle (4.01cm) node [above]$A$;
    draw (-4.01,0) node[left] $C$
          -- (0,0)
          -- (4.01,0) node [right]$D$ 
          -- (-0.28,4)node[above] $B$ 
          -- (-4.01,0) 
          -- (1.62,3.67)node[above] $E$
          -- (4.01,0) 
          -- (-2.27,3.3) node[above] $F$ -- cycle;
        fill [color=black] (0,0) circle (1.5pt)
                          (-0.28,4) circle (1.5pt)
                          (-4.01,0) circle (1.5pt)
                          (4.01,0) circle (1.5pt)
                          (1.62,3.67) circle (1.5pt) 
                          (-2.27,3.3) circle (1.5pt);
    endtikzpicture    
hfill
beginminipage0.5textwidth
    In the following diagram, what can you say about $angle F$, $angle B$ and$angle E$? 
endminipage

enddocument 

ingrese la descripción de la imagen aquí

Paquete tcolorbox también ofrece otra forma de distribuir gráficos / tablas y texto uno al lado del otro. tcbsidebyside El cuadro acepta dos parámetros, contenido izquierdo y derecho para distribuir uno al lado del otro, y sidebyside adapt La opción permite declarar qué parte definirá la distribución del espacio. sidebyside align define la alineación vertical de ambas partes.

Con TikZ código tomado de la respuesta de Alain, el resultado podría ser:

documentclass[10pt]article
usepackage[utf8]inputenc
usepackagetikz   
usetikzlibraryarrows
usepackage[most]tcolorbox
pagestyleempty
begindocument

tcbsidebyside[sidebyside adapt=left, blanker, sidebyside gap=1cm, 
               sidebyside align=top seam]%  
    begintikzpicture[line cap=round,line join=round,>=triangle 45,scale=.6,font=scriptsize]  
        draw (0,0) circle (4.01cm) node [above]$A$;
        draw (-4.01,0) node[left] $C$
          -- (0,0)
          -- (4.01,0) node [right]$D$ 
          -- (-0.28,4)node[above] $B$ 
          -- (-4.01,0) 
          -- (1.62,3.67)node[above] $E$
          -- (4.01,0) 
          -- (-2.27,3.3) node[above] $F$ -- cycle;
        fill [color=black] (0,0) circle (1.5pt)
                          (-0.28,4) circle (1.5pt)
                          (-4.01,0) circle (1.5pt)
                          (4.01,0) circle (1.5pt)
                          (1.62,3.67) circle (1.5pt) 
                          (-2.27,3.3) circle (1.5pt);
    endtikzpicture%
In the following diagram, what can you say about $angle F$, $angle B$ and$angle E$?

enddocument 

ingrese la descripción de la imagen aquí

Y sin blanker opción, todo tcolorbox Se pueden aplicar campanas y silbidos:

documentclass[10pt]article
usepackage[utf8]inputenc
usepackagetikz   
usetikzlibraryarrows
usepackage[most]tcolorbox
pagestyleempty
begindocument

tcbsidebyside[title=A texttttextbackslashtcbsidebyside example,
sidebyside adapt=left, 
sidebyside gap=1cm, 
bicolor, colback=green!10, colbacklower=yellow!10, drop lifted shadow, fonttitle=bfseries]%  
    begintikzpicture[line cap=round,line join=round,>=triangle 45,scale=.6,font=scriptsize]  

    draw (0,0) circle (4.01cm) node [above]$A$;
    draw (-4.01,0) node[left] $C$
          -- (0,0)
          -- (4.01,0) node [right]$D$ 
          -- (-0.28,4)node[above] $B$ 
          -- (-4.01,0) 
          -- (1.62,3.67)node[above] $E$
          -- (4.01,0) 
          -- (-2.27,3.3) node[above] $F$ -- cycle;
        fill [color=black] (0,0) circle (1.5pt)
                          (-0.28,4) circle (1.5pt)
                          (-4.01,0) circle (1.5pt)
                          (4.01,0) circle (1.5pt)
                          (1.62,3.67) circle (1.5pt) 
                          (-2.27,3.3) circle (1.5pt);
    endtikzpicture%
In the following diagram, what can you say about $angle F$, $angle B$ and$angle E$?

enddocument 

ingrese la descripción de la imagen aquí

valoraciones y reseñas

Nos puedes patrocinar nuestra ocupación poniendo un comentario y dejando una puntuación te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *