Respuesta1
Hay muchos paquetes que te permiten hacer esto: como metapost
, pstricks
, asymptote
y TikZ
ciertamente otros que olvidé.
Aquí hay una versión con TikZ
. Si tienes alguna pregunta sobre el código, te escucho.
\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 vertex
y usaremos el comando \tikzstyle{vertex}
. De las opciones podemos ver que es un circle
, está dibujado con el color mBlue
que 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 tikzpicture
entorno. Notarás que también hay una scale
opció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 for
bucles 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 draw
el 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
, below
y 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) {};
¡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 Asymptote
versió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]);
}
}
Respuesta4
Otra solución asíntota sencilla y "a mano"
// 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));