Antwort1
Es gibt viele Pakete, die Ihnen dies ermöglichen: wie metapost
, pstricks
, asymptote
, TikZ
und sicherlich noch andere, die ich vergessen habe.
Hier ist eine Version mit TikZ
. Wenn Sie Fragen zum Code haben, höre ich zu.
\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}
Antwort2
Grundlegendes Zeichnen in LaTeX mit TikZ: Rechteck mit Linien, Punkten und Beschriftungen.
Sie benötigen nur ein Paket:
\usepackage{tikz}
Definieren wir für unsere Figur eine blaue und eine graue Farbe:
\definecolor{mBlue}{HTML}{1F77B4}
\definecolor{mGray}{HTML}{d7dbdd}
Erstellen Sie nun einen Stil für die Punkte. Wir möchten nicht immer wieder viele Befehle und Optionen schreiben. Wir werden diesen Stil aufrufen vertex
und den Befehl verwenden \tikzstyle{vertex}
. Anhand der Optionen können wir erkennen, dass es sich um einen handelt circle
. Er wird mit der oben definierten Farbe gezeichnet mBlue
und auch mit derselben Farbe gefüllt. Die Trennungsoptionen steuern indirekt, wie groß der Kreis sein soll und wie der Abstand zwischen allen Texten ist, die Sie innerhalb des Knotens schreiben möchten. Sie können auch verwenden minimimum size=0.2
.
\tikzstyle{vertex}=[circle,draw=mBlue,fill=mBlue,inner sep=0.6mm, outer sep=0mm]
Wir können die obigen drei Zeilen in die Präambel einfügen, also das „Zeug“ davor \begin{document}
.
Wir sind nun bereit, die Figurenumgebung zu verwenden und zu zeichnen. Unsere Zeichnungen werden in der tikzpicture
Umgebung platziert. Sie werden feststellen, dass es auch eine scale
Option gibt. Diese kann verwendet werden, um die Größe der Figur zu vergrößern/verkleinern. Interessanterweise hat die Skalierung keinen Einfluss auf den in der Figur platzierten Text.
\begin{figure}[h]
\centering
\begin{tikzpicture}[scale=1]
% our drawing goes here
\end{tikzpicture}
\caption{The figure.}
\end{figure}
Das Wichtigste, was Sie jetzt tun müssen, ist, den wichtigen Punkten in Ihrer Figur einige Koordinaten zuzuweisen. Das kann am Anfang für manche einschüchternd wirken, ist aber einfacher, als es scheint. Nehmen wir an, wir bezeichnen die untere linke Ecke als Punkt (0,0) und den obersten Punkt als (3,3). Sie können den Befehl \coordinate (name) at (<x>,<y>);
für jeden der sechzehn Punkte in der Figur verwenden. Ich wollte jedoch Schleifen einführen, for
da viele neue Benutzer diese äußerst praktische Funktion vermissen. Ich habe eine Koordinatenfigur hinzugefügt.
\foreach \x in {0,...,3} {
\foreach \y in {0,...,3} {
\coordinate (\x_\y) at (\x,\y);
}
}
Nun draw
das äußere Rechteck und die Linien. Sie können das Rechteck mit füllen 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);
Zeichnen wir die blauen Punkte und fügen ihnen Beschriftungen hinzu. Diese Beschriftungen ergeben den Text. Die Beschriftungsposition kann mit left
, right
, below
, und angegeben werden above
. Wir können sie auch zu kombinieren 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) {};
Wir sollten in der Lage sein, den Rest auszufüllen!
Bearbeiten: Wie in den Kommentaren erwähnt, können Sie den Wert der Koordinaten direkt verwenden, anstatt die Namen zu verwenden, z. B. direkt (2,3) anstelle von (2_3). Sie müssen auch nicht die doppelten For-Schleifen verwenden, um die Koordinaten zu definieren.
Antwort3
Mögliche Asymptote
Ausführung:
// 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]);
}
}
Antwort4
Eine weitere einfache, „von Hand“ durchgeführte Asymptotenlösung
// 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));