![\draw 命令与 \foreach 命令内部的 \draw 命令之间的单位差异](https://linux22.com/image/358014/%5Cdraw%20%E5%91%BD%E4%BB%A4%E4%B8%8E%20%5Cforeach%20%E5%91%BD%E4%BB%A4%E5%86%85%E9%83%A8%E7%9A%84%20%5Cdraw%20%E5%91%BD%E4%BB%A4%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8D%95%E4%BD%8D%E5%B7%AE%E5%BC%82.png)
我正在尝试绘制一个轴上有数字的二维坐标系。这是我正在尝试的代码:
\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}