用 tikz 画一条简单的线并删除额外的水平空间

用 tikz 画一条简单的线并删除额外的水平空间

在以下示例中,我想使用 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}

相关内容