Passen Sie die Position der Knotenbeschriftung im Diagramm an

Passen Sie die Position der Knotenbeschriftung im Diagramm an

Die Frage ist, dass sich die Position des Knotens (16, 20) mit der Linie vermischt. Wie kann ich das vermeiden? Das heißt, ich möchte diesen Knoten auf der rechten Seite einzeichnen, damit es nicht zu einer Kollision mit der Linie kommt.

Das ist, was ich bisher getan habe.

\documentclass[12pt, a4paper]{article}
\usepackage[a4paper,top=1 in,bottom=1 in,left=0.7 in,right=0.7 in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[misc]{ifsym}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pst-tree}
\usetikzlibrary{intersections}
\begin{document}    
\begin{center}
    \begin{tikzpicture}
\draw[thick,latex-latex] (-1,0) -- (13,0)node[right]{$x$};
\draw[thick,latex-latex] (0,-1) -- (0,13)node[above]{$y$};
\node at (-0.3,-0.3) {};
\foreach \x/\l in {,1/2,2/4,3/6,4/8,5/10,6/12,7/14,8/16,9/18,10/20,11/22,12/24}{
    \node[fill,circle,inner sep=1.5pt,label=below:$\l$] at (\x,0) {};
    \node[fill,circle,inner sep=1.5pt,label=left:$\l$] at (0,\x) {};
}
\draw[thick,stealth-stealth, shorten >= -4cm, shorten <= -1cm,name path =b ](2,4) -- (6,8);
\draw[thick,stealth-stealth, shorten >= -1cm, shorten <= -1.5cm,name path =b ](10,8) -- (6,12);
\foreach \x/\y/\name/\m/\n in {4/6//8/12}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below right:\name($\m, \n$)}] at (\x,\y) {};
}
\foreach \x/\y/\name/\m/\n in {2/4//4/8}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below right:\name($\m, \n$)}] at (\x,\y) {};
}
\foreach \x/\y/\name/\m/\n in {6/8//12/16}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below :\name($\m, \n$)}] at (\x,\y) {};
}
\foreach \x/\y/\name/\m/\n in {10/8//20/16}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below left:\name($\m, \n$)}] at (\x,\y) {};
}
\foreach \x/\y/\name/\m/\n in {8/10//16/20}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below left:\name($\m, \n$)}] at (\x,\y) {};
}
\foreach \x/\y/\name/\m/\n in {6/12//12/24}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below left:\name($\m, \n$)}] at (\x,\y) {};
}
\draw (9,11) node[anchor=north west,rotate=0] {$x-y=-4$};
\draw (2.1,13) node[anchor=north west,rotate=0] {$2x-y-2=0$};

\end{tikzpicture}
\end{center}  

\end{document}

Antwort1

Ich habe in Ihrem Code belowFolgendes auf 3pt rightgeändert :inner sep=

\documentclass[12pt, a4paper]{article}
\usepackage[a4paper,top=1 in,bottom=1 in,left=0.7 in,right=0.7 in]{geometry}
\usepackage[utf8]{inputenc}
%\usepackage[misc]{ifsym}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pst-tree}
\usetikzlibrary{intersections}
\begin{document}    
\begin{center}
    \begin{tikzpicture}
\draw[thick,latex-latex] (-1,0) -- (13,0)node[right]{$x$};
\draw[thick,latex-latex] (0,-1) -- (0,13)node[above]{$y$};
\node at (-0.3,-0.3) {};
\foreach \x/\l in {,1/2,2/4,3/6,4/8,5/10,6/12,7/14,8/16,9/18,10/20,11/22,12/24}{
    \node[fill,circle,inner sep=1.5pt,label=below:$\l$] at (\x,0) {};
    \node[fill,circle,inner sep=1.5pt,label=left:$\l$] at (0,\x) {};
}
\draw[thick,stealth-stealth, shorten >= -4cm, shorten <= -1cm,name path =b ](2,4) -- (6,8);
\draw[thick,stealth-stealth, shorten >= -1cm, shorten <= -1.5cm,name path =b ](10,8) -- (6,12);
\foreach \x/\y/\name/\m/\n in {4/6//8/12}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below right:\name($\m, \n$)}] at (\x,\y) {};
}
\foreach \x/\y/\name/\m/\n in {2/4//4/8}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below right:\name($\m, \n$)}] at (\x,\y) {};
}
\foreach \x/\y/\name/\m/\n in {6/8//12/16}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below right:\name($\m, \n$)}] at (\x,\y) {};
}
\foreach \x/\y/\name/\m/\n in {10/8//20/16}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below left:\name($\m, \n$)}] at (\x,\y) {};
}
\foreach \x/\y/\name/\m/\n in {8/10//16/20}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=3pt]right:\name($\m, \n$)}] at (\x,\y) {};
}
\foreach \x/\y/\name/\m/\n in {6/12//12/24}{
    \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]below left:\name($\m, \n$)}] at (\x,\y) {};
}

\draw (9,11) node[anchor=north west,rotate=0] {$x-y=-4$};
\draw (2.1,13) node[anchor=north west,rotate=0] {$2x-y-2=0$};

\end{tikzpicture}
\end{center}  

\end{document}

Mit folgender Ausgabe:

Bildbeschreibung hier eingeben

Zusätzliche Anmerkung von Torbjørn T.: Ich verstehe nicht wirklich, warum Sie \foreachfür die Punktbeschriftungen verwenden, in keinem der Fälle durchlaufen Sie tatsächlich mehrere Einträge in einer Liste. Indem Sie jedoch eine weitere Iterationsvariable für die Position hinzufügen, können Sie alle Beschriftungen mit einer Schleife hinzufügen:

\documentclass[12pt, a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}    
\begin{center}
\begin{tikzpicture}
\draw[thick,latex-latex] (-1,0) -- (13,0)node[right]{$x$};
\draw[thick,latex-latex] (0,-1) -- (0,13)node[above]{$y$};
\node at (-0.3,-0.3) {};
\foreach \x/\l in {,1/2,2/4,3/6,4/8,5/10,6/12,7/14,8/16,9/18,10/20,11/22,12/24}{
    \node[fill,circle,inner sep=1.5pt,label=below:$\l$] at (\x,0) {};
    \node[fill,circle,inner sep=1.5pt,label=left:$\l$] at (0,\x) {};
}
\draw[thick,stealth-stealth, shorten >= -4cm, shorten <= -1cm,name path =b ](2,4) -- (6,8);
\draw[thick,stealth-stealth, shorten >= -1cm, shorten <= -1.5cm,name path =b ](10,8) -- (6,12);
\foreach \x/\y/\name/\m/\n/\pos in
  {4/6//8/12/below right,
   2/4//4/8/below right,
   6/8//12/16/below right,
   10/8/\hspace{3pt}/20/16/below left,
   8/10//16/20/right,
   6/12//12/24/below left}
{
 \node[fill,circle,inner sep=2.5pt,label={[inner sep=0pt]\pos:\name($\m, \n$)}] at (\x,\y) {};
}
\draw (9,11) node[anchor=north west,rotate=0] {$x-y=-4$};
\draw (2.1,13) node[anchor=north west,rotate=0] {$2x-y-2=0$};
\end{tikzpicture}
\end{center}  
\end{document}

verwandte Informationen