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 기본 그리기: 선, 점 및 레이블이 있는 직사각형.

하나의 패키지만 필요합니다:

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

위의 세 줄을 서문에 배치할 수 있습니다. 즉, 앞에 "stuff"를 배치할 수 있습니다 \begin{document}.

이제 Figure 환경을 사용하고 그릴 준비가 되었습니다. 우리 그림은 환경 내부에 배치됩니다 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, below및 를 사용하여 지정할 수 있습니다 above. 우리는 그것들을 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) {};

코드에서 생성된 그림. 좌표 그림.

나머지는 우리가 채울 수 있어야 해요!

편집: 주석에서 지적했듯이 이름을 사용하는 대신 좌표 값을 직접 사용할 수 있습니다. 예를 들어 (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));

관련 정보