調整圖中節點標籤的位置

調整圖中節點標籤的位置

問題是節點 (16, 20) 的位置與線混合。如何擺脫這個?也就是說,我想將該節點繪製在右側,這樣就不會與線發生碰撞。

這就是我到目前為止所做的。

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

答案1

我已在您的程式碼中更改為below3pt rightinner 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}

輸出如下:

在此輸入影像描述

Torbjørn T. 的附加說明:我真的不明白為什麼要使用\foreach點標籤,在任何情況下,您實際上都不會循環清單中的多個條目。但是,透過為該位置再新增一個迭代變量,您可以透過一個循環添加所有標籤:

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

相關內容