问题:
- 为什么这条数轴的顶角缺失了?
- 为什么这条数轴的底角或其他角都没有缺失?
- 我如何确保角落始终在那里?
\documentclass{article}
\usepackage[left=1.5cm,right=1.5cm,top=2cm,bottom=2cm]{geometry}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line width=0.08cm]
\draw (0,0)--(5,0);
\draw (0,0.3)--(5,0.3);
\foreach \x in {0,...,5}
{
\node at (\x,-0.55) {\x};
\draw (\x,-0.3)--(\x,0.3);
}
\foreach \x in {0,...,5}
\draw (\x,0)--(\x,0.3);
\end{tikzpicture}
\end{document}
该代码产生如下结果:
答案1
这里的问题是线条在某个点结束——正是在这个点。看一下这张图片(下面的 MWE):
黑点标记 (0,0)。两条线都绘制到 (0,0),由于线宽较粗,看起来好像缺少了它们之间的角,但实际上这些线完全符合指定要求:以 (0,0) 结束。
然而,有一些方法可以获得角落:
- 制作一经过 (0,0) 的路径在那里有一个实角
- 用于
line cap = rect
在每条线的末尾添加一些额外的位,这样红线和蓝线的重叠就会形成一个角(影响两端!)。 - 将路径延长至线宽的一半(仅影响使用= start 或= end
shorten < = 0.5\pgflinewidth
指定的端点)shorten <
shorten >
从左到右依次为 1 至 3:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line width = 4mm]
\draw [red] (0,-2) -- (0,0);
\draw [blue] (2,0) -- (0,0);
\fill (0,0) circle [radius = 1pt];
\begin{scope}[xshift=25mm]% solution 1
\draw [red] (0,-2) -- (0,0) -- (2,0);
\fill (0,0) circle [radius = 1pt];
\end{scope}
\begin{scope}[xshift=50mm]% solution 2
\draw [red, line cap=rect] (0,-2) -- (0,0);
\draw [blue] (2,0) -- (0,0);
\fill (0,0) circle [radius = 1pt];
\end{scope}
\begin{scope}[xshift=75mm]% solution 3
\draw [red, shorten > = -0.5\pgflinewidth] (0,-2) -- (0,0);
\draw [blue] (2,0) -- (0,0);
\fill (0,0) circle [radius = 1pt];
\end{scope}
\end{tikzpicture}
\end{document}
对于您的代码,我将使用版本 1 并在水平线上添加小垂直部分:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line width=0.08cm]
\draw (0,0) -- (5,0);
\draw (0,0.2) -- (0,0.3) -- (5,0.3) -- (5,0.2);
\foreach \x in {0,...,5}
{
\node at (\x,-0.55) {\x};
\draw (\x,-0.3)--(\x,0.3);
}
\foreach \x in {0,...,5}
\draw (\x,0)--(\x,0.3);
\end{tikzpicture}
\end{document}