\draw 指令和 \foreach 指令中的 \draw 指令之間的單位差異

\draw 指令和 \foreach 指令中的 \draw 指令之間的單位差異

我正在嘗試繪製一個二維座標系,軸上有數字。這是我正在嘗試的程式碼:

\documentclass[12pt,oneside]{report}
\usepackage{tikz}
\usetikzlibrary{arrows,calc}
\begin{document}
\begin{figure}[!h]
\centering
\begin{tikzpicture}

\newcommand*{\TickSize}{2pt}%


\draw [-latex] (-0.5,0) -- (4.5,0);% x-axis
\draw [-latex] (0,-0.5) -- (0,4.5);% y-axis

\foreach \x in {1,...,4} {%
    \draw ($(\x,0)+(\x,-\TickSize)$) -- ($(\x,0)+(\x,\TickSize)$)
        node [below,yshift=-2pt] {$\x$};
}

\foreach \y in {1,...,4} {%
    \draw ($(0,\y)+(-\TickSize,\y)$) -- ($(0,\y)+(\TickSize,\y)$)
        node [left,xshift=-2pt] {$\y$};
}
\end{tikzpicture}
\end{figure}
\end{document}

但是,由此,我得到以下結果:

在此輸入影像描述

我沒有註意到這一點,因為數字超出了軸。這個解決方案的靈感來自於此,顯然,作者並沒有遇到這個問題。

謝謝。

答案1

該語句\draw ($(\x,0)+(\x,-\TickSize)$)將座標添加\x兩次,從而使刻度和數字放置的比例加倍。上也一樣\y

而且,正如 Torbjorn 補充的那樣,在這種情況下,不需要在$分隔短語內計算座標,而是可以直接指定。

\documentclass[12pt,oneside]{report}
\usepackage{tikz}
\usetikzlibrary{arrows,calc}
\begin{document}
\begin{figure}[!h]
\centering
\begin{tikzpicture}

\newcommand*{\TickSize}{2pt}%


\draw [-latex] (-0.5,0) -- (4.5,0);% x-axis
\draw [-latex] (0,-0.5) -- (0,4.5);% y-axis

\foreach \x in {1,...,4} {%
    \draw (\x,-\TickSize) -- (\x,\TickSize)
        node [below,yshift=-2pt] {$\x$};
}

\foreach \y in {1,...,4} {%
    \draw (-\TickSize,\y) -- (\TickSize,\y)
        node [left,xshift=-2pt] {$\y$};
}
\end{tikzpicture}
\end{figure}
\end{document}

在此輸入影像描述

相關內容