Создание диаграммного графика в латексе (для теории чисел)

Создание диаграммного графика в латексе (для теории чисел)

Я делал записи по теории чисел в латексе, и все уже сделано, кроме одной последней детали (которую я откладывал уже целую вечность!).

Я пытаюсь найти лучший способ переноса следующего графика/диаграммы в латекс, но не уверен, какой пакет мне выбрать.

введите описание изображения здесь

Я был бы очень признателен за любые советы и предложения.

PS Я работал/работал в Overleaf. Поскольку весь документ слишком длинный, чтобы разместить его в этом вопросе,здесьвот ссылка на нее, на случай, если она может быть полезна. (Дайте мне знать, если она не сработает.)

PSS Раньше я в основном работал с tikz (для теории графов и теории игр) и некоторыми другими пакетами, которые в основном использовались для генерации функциональных графиков; поэтому, основываясь на этом опыте, я подумал, что этот график также можно построить с помощью tikz.

решение1

В Tikz вы можете использовать gridдля рисования сетки, а затем определить узел, который рисует заполненный маленький круг (в коде ниже plupp). После этого в основном дело за позиционированием текстовых узлов.

\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}[plupp/.style={circle,draw,inner sep=1pt,fill=black}]
  \draw (0,0) grid (7,5);
  \node[anchor=north east] at (0,0){$0$};
  \node[anchor=south east] at (0,5){$\alpha$};
  \node[anchor=south west] at (7,5){$N$};
  \node[anchor=north west] at (7,0){$R$};
  \draw (0,0) -- (7,5);
  \node[plupp,label={180:$C$}] at (0,2){};
  \node[plupp,label={-90:$A$}] at (3,0){};
  \node[plupp,label=110:$P$] at (7*2/5,2){};
  \node[plupp,label=90:$\mu$] at (3,5*3/7){};
  \node[plupp,label=-45:$B$] at (3,2){};
  \draw[<->](0,-0.7) -- +(3,0) node[pos=0.5,fill=white]{$\tfrac{p-1}{2}$};
  \draw[<->](0,-1.3) -- +(7,0) node[pos=0.5,fill=white]{$p$};
  \draw[<->](-0.7,0) -- +(0,2) node[pos=0.5,fill=white]{$\tfrac{g-1}{2}$};
  \draw[<->](7.5,0) -- +(0,5) node[pos=0.5,fill=white]{$g$};
\end{tikzpicture}
\end{document}

введите описание изображения здесь

решение2

введите описание изображения здесьНу, вот вам затравка с использованием пакета tikz

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\draw[gray, thick] (0,0) -- (0,6);
\draw[gray, thick] (1,0) -- (1,6);
\draw[gray, thick] (2,0) -- (2,6);
\draw[gray, thick] (3,0) -- (3,6);
\draw[gray, thick] (4,0) -- (4,6);
\draw[gray, thick] (5,0) -- (5,6);
\draw[gray, thick] (6,0) -- (6,6);
\draw[gray, thick] (7,0) -- (7,6);

\draw[gray, thick] (0,0) -- (7,0);
\draw[gray, thick] (0,1) -- (7,1);
\draw[gray, thick] (0,2) -- (7,2);
\draw[gray, thick] (0,3) -- (7,3);
\draw[gray, thick] (0,4) -- (7,4);
\draw[gray, thick] (0,5) -- (7,5);
\draw[gray, thick] (0,6) -- (7,6);
\draw[black, thick] (0,0) -- (7,6);

\filldraw[black] (0,0) circle (2pt) node[anchor=east] {0};
\filldraw[black] (0,2) circle (2pt) node[anchor=east] {C};
\filldraw[black] (7,0) circle (2pt) node[anchor=west] {R};
\filldraw[black] (0,6) circle (2pt) node[anchor=east] {2};
\filldraw[black] (7,6) circle (2pt) node[anchor=west] {N};

\end{tikzpicture}

\end{document}

Я не уверен насчет промежуточных точек. Если бы это был я, я бы, возможно, создал его как рисунок PowerPoint и экспортировал в pdf. Чтобы узнать больше о пакете tikz, обратитесь к этой документации:

https://www.overleaf.com/learn/latex/TikZ_package

Я почти уверен, что вы сможете создавать стрелки и аннотации уравнений, используя аналогичные команды, если вы знаете их желаемое положение на странице.

решение3

Рассмотрим asymptoteкак вариант.

введите описание изображения здесь

// tab-numt.asy
// 
// run 
//    asy tab-numt.asy
//
// to get a standalone pdf picture
//    tab-numt.pdf
//
settings.tex="pdflatex";
size(9cm);
pen linePen=darkblue+0.7bp, grayPen=gray(0.3)+0.7bp;
arrowbar arr=Arrows(HookHead,size=2);
int n=3, m=2, p=2*n+1, q=2*m+1;

guide hLine[], vLine[];
for(int i=0;i<=q;++i)hLine[i]=(0,i)--(p,i);
for(int i=0;i<=p;++i)vLine[i]=(i,0)--(i,q);

pair N=(p,q), O=(0,0), Q=(0,q), R=(p,0), 
  A=((p-1)/2,0), C=(0,(q-1)/2), B=(A.x,C.y),
  M=intersectionpoint(O--N,vLine[(p-1)#2]),
  P=intersectionpoint(O--N,hLine[(q-1)#2]),
  Z=(B+P+M)/3
;
pair[] pos={N,O,Q,R,A,B,C,P,M}; string name="NOQRABCPM";

draw(hLine,linePen); draw(vLine,linePen);
draw(O--N,linePen);

pair dx=(0.62,0), dy=(0,0.5);

draw((O-dy)--(A-dy),grayPen,arr); label("$\frac{p-1}2$",(O+A)/2-dy,UnFill);

draw((O-2dy)--(R-2dy),grayPen,arr); label("$p$",(O+R)/2-2dy,UnFill);

draw((O-dx)--(C-dx),grayPen,arr); label("$\frac{q-1}2$",(O+C)/2-dx,UnFill);

draw((N+dx)--(R+dx),grayPen,arr); label("$q$",(N+R)/2+dx,UnFill);

dot(pos[4:9],UnFill);

for(int i=0;i<7;++i) label("$"+substr(name,i,1)+"$",pos[i],unit(pos[i]-Z));
label("$M$",M,plain.NW); label("$P$",P,plain.S);

решение4

решение tkz-евклида

введите описание изображения здесь

\documentclass[12pt]{article}

 % \usepackage{amsmath}
\usepackage{tkz-euclide}

\begin{document}    
                \begin{tikzpicture}
                %the grid
                \tkzInit[xmin=0,xmax=7,ymin=0,ymax=5]
                \tkzGrid
                %the axes
%               \tkzDrawX[label={}]
%               \tkzDrawY[label={}]
                
                %draw the points O, R, 2, N, A, C
                \tkzDefPoints{0/0/O,7/0/R,0/5/2,7/5/N,3/0/A,0/2/C}
                \tkzDrawPoints(O,R,2,N,A,C)
                \tkzLabelPoints(O,R,N,A)
                \tkzLabelPoints[left](2)
                \tkzLabelPoints[left,yshift=6pt](C)
                
                %segment ON
                \tkzDrawSegment[](O,N)
                
                %calculate intersections for point P, M, B
                \tkzDefShiftPoint[C](0:7){Xc}
                \tkzDefLine(C,Xc)
%               \tkzDrawLine(C,Xc)%
                \tkzDefShiftPoint[A](90:5){Xa}
                \tkzDefLine(A,Xa)
%               \tkzDrawLine(A,Xa)
                \tkzInterLL(A,Xa)(C,Xc)\tkzGetPoint{B}
                \tkzDrawPoint[red](B)
                \tkzLabelPoints[,font=\tiny](B)
                
                \tkzInterLL(O,N)(C,Xc)\tkzGetPoint{P}
                \tkzDrawPoint[green](P)
                \tkzLabelPoints[above left,font=\tiny](P)
                
                \tkzInterLL(O,N)(A,Xa)\tkzGetPoint{M}
                \tkzDrawPoint[blue](M)
                \tkzLabelPoints[above,font=\tiny, xshift=-4pt](M)
                
                %some labels
                \tkzDrawSegment[dim={$g$,-20pt,above=0pt,font=\tiny}](R,N)
                \tkzDrawSegment[dim={$P$,-30pt,above=-3pt,font=\tiny}](O,R)
                \tkzDrawSegment[dim={$(P-1)/2$,-15pt,above=-3pt,font=\tiny}](O,A)
                \tkzDrawSegment[dim={$(g-1)/2$,15pt,above=0pt,font=\tiny}](O,C)
                \end{tikzpicture}
        
\end{document}

Связанный контент