この長方形を LaTeX で線、点、ラベルを使って再作成するにはどうすればよいでしょうか?

この長方形を LaTeX で線、点、ラベルを使って再作成するにはどうすればよいでしょうか?

ここに画像の説明を入力してください

私は授業のためにこれを入力しているだけなので、必要なパッケージや開始方法などのガイダンスをいただければ幸いです。

答え1

これを実行できるパッケージは多数あります。、、、metapostなどpstricksですasymptoteTikZ他にも忘れてしまったパッケージは確かにあります。

こちらは 付きバージョンですTikZ。コードについてご質問があれば、お気軽にお問い合わせください。

スクリーンショット

\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}

答え2

TikZ を使用した LaTeX 基本描画: 線、点、ラベル付きの長方形。

必要なパッケージは 1 つだけです。

\usepackage{tikz}

図に青色と灰色を定義してみましょう。

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

次に、ポイントのスタイルを作成します。コマンドやオプションを何度も何度も記述するのは避けたいものです。このスタイルを呼び出してvertex、コマンド を使用します\tikzstyle{vertex}。オプションから、それが でありcircle、上で定義した色で描画されmBlue、同じ色で塗りつぶされていることがわかります。分離オプションは、円の大きさと、ノード内に書き込むテキスト間の分離を間接的に制御します。 を使用することもできますminimimum size=0.2

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

上記の 3 行をプリアンブル、つまり の前の「内容」に配置することができます\begin{document}

これで、図の環境を使用して描画する準備ができました。描画はtikzpicture環境内に配置されます。オプションもあることに気付くでしょうscale。このオプションを使用して、図のサイズを拡大/縮小できます。興味深いことに、拡大/縮小は図内に配置されたテキストには影響しません。

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

ここで最も重要なことは、図の重要な点に座標を割り当てることです。最初は難しそうに感じるかもしれませんが、思ったより簡単です。左下隅を点 (0,0)、最上部の点を点 (3,3) とします。\coordinate (name) at (<x>,<y>);図の 16 個の点それぞれにコマンドを使用できます。ただし、多くの新規ユーザーがこの非常に便利な機能を見逃しているため、ループを導入したいと考えましたfor。座標図を追加しました。

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

次にdraw外側の四角形と線です。 を使用して四角形を塗りつぶすことができます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);

青い点を描いて、ラベルを追加してみましょう。これらのラベルはテキストを表します。ラベルの位置は、、、、を使用して指定できます。leftこれらrightを組み合わせて にすることもできます。belowaboveabove 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) {};

コードから生成された図。 座標図。

残りも埋められるはずです!

編集: コメントで指摘されているように、名前を使用する代わりに座標の値を直接使用できます。たとえば、(2_3) の代わりに (2,3) を直接使用します。座標を定義するために二重の for ループを使用する必要もありません。

答え3

可能なAsymptoteバージョン:

// 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]);
  }
}

ここに画像の説明を入力してください

答え4

もう一つの単純な「手作業」漸近線解

ここに画像の説明を入力してください

// 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));

関連情報