![用 tikz 画一条简单的线并删除额外的水平空间](https://linux22.com/image/243914/%E7%94%A8%20tikz%20%E7%94%BB%E4%B8%80%E6%9D%A1%E7%AE%80%E5%8D%95%E7%9A%84%E7%BA%BF%E5%B9%B6%E5%88%A0%E9%99%A4%E9%A2%9D%E5%A4%96%E7%9A%84%E6%B0%B4%E5%B9%B3%E7%A9%BA%E9%97%B4.png)
在以下示例中,我想使用 tikz 绘制一条简单的线条。似乎该线条在左右两侧产生了额外的水平空间.5\pgflinewidth
。我尝试过outer xsep=0pt
,但没有结果。
\documentclass{scrartcl}
\usepackage{tikz}
\tikzset{linestyle/.style={%
draw=red,%
line width=8ex,
}}%
\begin{document}
\centering
\fboxsep0pt
\fbox{\tikz\draw[use as bounding box,linestyle] (-1,1ex)--(4,1ex);}
\end{document}
我怎样才能避免多余的空间?
答案1
问题在于 tikz 如何用线帽结束一条线(默认情况下是平头类型)。当线很细时,这对边界框来说不会有太大变化,但是当线很粗时,就像在这种情况下一样,效果非常明显。看看下面的代码和图片,你就会明白我的意思。我建议,如果你正在寻找的只是一个彩色框,那么画一个矩形并填充它。
\documentclass{scrartcl}
\usepackage{tikz}
\tikzset{linestyle/.style={%
draw=red,%
line width=20ex,
}}%
\begin{document}
\centering
\fboxsep0pt
\fbox{
\begin{tikzpicture}
\draw[linestyle,line cap=rect] (-1,0)--(4,0);
\end{tikzpicture}
}
\fbox{
\begin{tikzpicture}
\draw[linestyle,line cap=butt] (-1,0)--(4,0);
\end{tikzpicture}
}
\fbox{
\begin{tikzpicture}
\draw[linestyle,line cap=round] (-1,0)--(4,0);
\end{tikzpicture}
}
\end{document}
答案2
作为简洁解决方案的补充,人们总是可以的clip
,并且有非常好的trim left
工具trim right
可以用于内联图片:
\documentclass{scrartcl}
\usepackage{tikz}
\tikzset{linestyle/.style={%
draw=red,%
line cap=rect,
line width=16ex,
}}%
\begin{document}
\centering
\fboxsep0pt
\fbox{\tikz{\draw[linestyle](0,1) -- (5,1);}}
\par
\fbox{\tikz[trim left,trim right=5cm]{\draw[line width=16ex,red](0,1) -- (5,1);}}
\end{document}