¿Cómo puedo recrear este rectángulo con líneas, puntos y etiquetas en LaTeX?

¿Cómo puedo recrear este rectángulo con líneas, puntos y etiquetas en LaTeX?

ingrese la descripción de la imagen aquí

Estoy escribiendo esto para la clase y agradecería recibir orientación sobre qué paquetes necesitaría y cómo empezar.

Respuesta1

Hay muchos paquetes que te permiten hacer esto: como metapost, pstricks, asymptotey TikZciertamente otros que olvidé.

Aquí hay una versión con TikZ. Si tienes alguna pregunta sobre el código, te escucho.

captura de pantalla

\documentclass[tikz,border=5mm]{standalone}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\fill[gray!20] (0,0)rectangle(3,3);
\draw (0,0)grid(3,3);
\node foreach \j in {1,2} [left] at  (0,\j) {$10^\circ$};
\node foreach \j in {1,2} [right] at  (3,\j) {$40^\circ$};
\node foreach \i in {1,2} [below] at  (\i,0) {$30^\circ$};
\node foreach \i in {1,2} [above] at  (\i,3) {$20^\circ$};
\node foreach \i in {1,2} [above right] at  (\i,2) {$\i$};
\node foreach \lab [count=\n] in {4,3} [above right] at  (\n,1) {$\lab$};
\foreach \list[count=\j from 0] in {{1,2},{0,1,2,3},{0,1,2,3},{1,2}}
 \foreach \x in \list {
 \fill (\x,\j)[cyan] circle (2pt);
 }
\end{tikzpicture}

\end{document}

Respuesta2

Dibujo básico en LaTeX usando TikZ: rectángulo con líneas, puntos y etiquetas.

Sólo necesitas un paquete:

\usepackage{tikz}

Definamos un color azul y un color gris para nuestra figura:

\definecolor{mBlue}{HTML}{1F77B4}
\definecolor{mGray}{HTML}{d7dbdd}

Ahora crea un estilo para los puntos. No queremos escribir muchos comandos y opciones una y otra vez. Llamaremos a este estilo vertexy usaremos el comando \tikzstyle{vertex}. De las opciones podemos ver que es un circle, está dibujado con el color mBlueque definimos arriba y también está relleno del mismo color. Las opciones de separación controlan indirectamente el tamaño del círculo y la separación entre cualquier texto que decidas escribir dentro del nodo. También puedes usarminimimum size=0.2 .

\tikzstyle{vertex}=[circle,draw=mBlue,fill=mBlue,inner sep=0.6mm, outer sep=0mm]

Podemos colocar las tres líneas anteriores en el preámbulo, es decir, las "cosas" antes \begin{document}.

Ahora estamos listos para usar el entorno de figuras y dibujar. Nuestros dibujos se colocarán dentro del tikzpictureentorno. Notarás que también hay una scaleopción. Esto se puede utilizar para aumentar o disminuir el tamaño de la figura. Curiosamente, la escala no afecta el texto colocado dentro de la figura.

\begin{figure}[h]
\centering
\begin{tikzpicture}[scale=1]
 % our drawing goes here
\end{tikzpicture}
\caption{The figure.}
\end{figure}

Ahora, lo más importante que tendrás que hacer es asignar algunas coordenadas a puntos importantes de tu figura. Esto puede parecer intimidante para algunos al principio, pero es más fácil de lo que parece. Digamos que denotamos la esquina inferior izquierda como el punto (0,0) y el punto superior como (3,3). Puede utilizar el comando \coordinate (name) at (<x>,<y>);para cada uno de los dieciséis puntos de la figura. Sin embargo, quería introducir forbucles porque muchos usuarios nuevos extrañan esta característica súper conveniente. He añadido una figura de coordenadas.

\foreach \x in {0,...,3} {
    \foreach \y in {0,...,3} {
        \coordinate (\x_\y) at (\x,\y);
    }
}

Ahora drawel rectángulo exterior y las líneas. Puedes llenar el rectángulo usando draw[fill=mGray].

\draw (0_0) -- (3_0) -- (3_3) -- (0_3) -- (0_0);
\draw (1_0) -- (1_3);
\draw (2_0) -- (2_3);
\draw (0_1) -- (3_1);
\draw (0_2) -- (3_2);

Dibujemos los puntos azules y agréguemosles etiquetas. Estas etiquetas dan el texto. La posición de la etiqueta se puede especificar usando left, right, belowy above. También podemos combinarlos en above right.

\node[vertex, label=below:$30^\circ$] at (1_0) {};
\node[vertex, label=below:$30^\circ$] at (2_0) {};
\node[vertex, label=left:$10^\circ$] at (0_1) {};
\node[vertex, label=left:$10^\circ$] at (0_2) {};
\node[vertex, label=above right:$2$] at (2_2) {};

Figura generada a partir de código. Figura de coordenadas.

¡Deberíamos poder completar el resto!

Editar: como se señaló en los comentarios, puede usar directamente el valor de las coordenadas en lugar de usar los nombres, por ejemplo, usar directamente (2,3) en lugar de (2_3). Tampoco es necesario utilizar los bucles for dobles para definir las coordenadas.

Respuesta3

Posible Asymptoteversión:

// tab3x3.asy
//
// run  asy tab3x3.asy   to get   tab3x3.pdf
//
settings.tex="pdflatex";
size(4cm);
pen fillPen=rgb("E3E3E5");
pen linePen=rgb("201D1D")+0.7bp;;
pen dotPen =rgb("00A4EC")+4bp;

filldraw(box((-3,-3),(3,3)),fillPen,linePen);
guide mid=box((-1,1),(1,-1));
guide[] net=(-1,3)--(-1,-3)^^(1,3)--(1,-3)^^(-3,-1)--(3,-1)^^(-3,1)--(3,1);
draw(net,linePen);
dot(net,dotPen);

int[] labVal={10,20,30,40};
pair[][] labPos={{(-3,-1),(-3,1)},{(-1,3),(1,3)},{(-1,-3),(1,-3)},{(3,-1),(3,1)}};
pair[] labOff={W,N,S,E};

for(int i=0;i<length(mid);++i){
  dot(point(mid,i),dotPen);
  label("$"+string(i+1)+"$",point(mid,i),plain.NE,linePen);
}

for(int i=0;i<labVal.length;++i){
  for(int j=0;j<labPos[0].length;++j){
    label("$"+string(labVal[i])+"^\circ$",labPos[i][j],labOff[i]);
  }
}

ingrese la descripción de la imagen aquí

Respuesta4

Otra solución asíntota sencilla y "a mano"

ingrese la descripción de la imagen aquí

// http://asymptote.ualberta.ca/
unitsize(1.5cm);
import math; // for grid
fill(box((0,0),(3,3)),lightgray);
add(grid(3,3));
pair[] pts={(1,2),(2,2),(2,1),(1,1),(0,1),(0,2),(1,3),(2,3),(3,1),(3,2),(2,0),(1,0)};
string[] s={"$10^{\circ}$","$20^{\circ}$","$30^{\circ}$","$40^{\circ}$"} ;
string[] lb={"$1$","$2$","$3$","$4$",s[0],s[0],s[1],s[1],s[2],s[2],s[3],s[3]};
pair[] a={NE,NE,NE,NE,W,W,N,N,E,E,S,S};

for(int i=0; i<pts.length; ++i){
fill(circle(pts[i],.06),magenta);
label(lb[i],align=a[i],pts[i]);
}

shipout(bbox(5mm));

información relacionada