\draw コマンドと \foreach コマンド内の \draw コマンドの単位の違い

\draw コマンドと \foreach コマンド内の \draw コマンドの単位の違い

軸に数字が入った 2 次元座標系を描画しようとしています。 試しているコードは次のとおりです。

\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)$)は座標を 2 回追加し\x、目盛りと数字の配置のスケールを 2 倍にします。 も同様です\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}

ここに画像の説明を入力してください

関連情報