不同宽度的嵌套矩形

不同宽度的嵌套矩形

下面的代码

\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\path [style={draw}] (0,0) rectangle (4,1);
\path [style={draw}] (0,1) rectangle (4,2);
\path [style={draw,thick,fill=orange}] (0,1) rectangle (1,2);
\end{tikzpicture}
\end{document}

生成如下图像: 在此处输入图片描述

仔细观察后,可以发现矩形在边界上没有正确相交(为了更好的可见性,画得有点夸张):

在此处输入图片描述

有没有办法让矩形完美契合?我知道在某些坐标上加/减 0.01 是可行的,但这并不是一个真正干净的解决办法。

答案1

PSTricks 解决方案:

\documentclass{article}

\usepackage{pstricks}


\begin{document}

\psset{dimen = m} % no overlapping of the rectangles
\begin{pspicture}(8,4)
  \psframe(0,0)(8,2)
  \psframe(0,2)(8,4)
  \psframe[
    fillstyle = solid,
    fillcolor = orange!70
  ](0,2)(2,4)
\end{pspicture}

\end{document}

输出

或者

\documentclass{article}

\usepackage{pstricks}


\begin{document}

\psset{dimen = m} % no overlapping of the rectangles
\begin{pspicture}(8,4)
  \psframe(0,0)(8,2)
  \psframe(0,2)(8,4)
  \psframe[
    dimen = o, % aligns the outer part of the top right (the 'thick') rectangle with the two bigger ones
    linewidth = 2pt,
    fillstyle = solid,
    fillcolor = orange!70
  ](0,2)(2,4)
\end{pspicture}

\end{document}

输出2

答案2

不对齐是由于thick对一个矩形使用了 而对其他矩形没有使用 造成的。如果您需要可变的线宽,您可以通过检查 TikZ 对常规和粗线使用的宽度或指定所需的宽度来补偿差异。例如:

\documentclass[a4paper,10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\path [draw, line width=.4pt] (0,0) rectangle (4,1);
\path [draw, line width=.4pt] (0,1) rectangle (4,2);
\path [draw, line width=1pt, fill=orange] ($(0,1) + (.3pt,.3pt)$) rectangle ($(1,2) - (.3pt,.3pt)$);
\end{tikzpicture}
\end{document}

使用的值.3pt是因为它是线条粗细差异的一半。calc使用的值是为了可以直接输入,而不必弄清楚如何调整坐标本身。

我不确定你说这种解决方案不是“干净”的解决方案是什么意思。否则,你就是告诉 TikZ 绘制一些由于你定义事物的方式而无法对齐的东西。如果你想要对齐事物,显然需要以不同的方式指定它们。

对齐的矩形

相关内容