tikz 矩形完全适合线宽(包括边界)

tikz 矩形完全适合线宽(包括边界)

我有这个代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}    
\newcommand{\mywidth}{\linewidth}
\begin{figure}[p]
\begin{tikzpicture}
\draw[ultra thick] (0,0) rectangle (\mywidth,2); %this line produces the overfull \hbox
\node[draw,minimum width=4cm,minimum height=1cm] at (\mywidth-4cm/2,1cm/2) {right lower corner};
\node[draw,minimum width=1cm,minimum height=1cm] at (\mywidth/2,1cm/2) {middle};
\end{tikzpicture}
\end{figure}
\end{document}

这给了我overfull \hbox (1.6pt too wide)

所以我想改变\newcommand{\mywidth}{\linewidth-1.6pt}但计算中的括号不起作用。

所以我将 every 改为\mywidth/2where always {(\mywidth/2)}{ }以包围整个表达式。

我的实际情况tikzpicture要复杂得多,包含许多建立的公式\mywidth,并且改变所有公式需要大量工作。

有没有更优雅的方法来摆脱这个问题overfull \hbox,而不破坏图形内的所有对齐?

我可以以某种方式在里面放括号吗\newcommand{\mywidth}{\linewidth-1.6pt}

附加问题。当我更改为时会发生什么ultra thickvery thick这会在警告中给我一个非常丑陋的数字overfull \hbox

答案1

我的建议是:

  1. rectangle用节点替换你的;
  2. 创建一种指定节点“外部尺寸”的样式;
  3. 使用锚点来定位你的节点。
\documentclass{article}
\usepackage{tikz}
\tikzset{
  exterior size/.style args={#1x#2}{
    outer sep=auto,
    minimum width={#1-\pgflinewidth},
    minimum height={#2-\pgflinewidth}
  }
}
\begin{document}
  \begin{figure}[p]
    \begin{tikzpicture}[nodes=draw]
      \path[ultra thick] (0,0) node[exterior size=\linewidth x 2cm, anchor=south west](R){};
      \node[red, line width=1.5mm, exterior size=4cm x 1cm, anchor=south east] at (R.south east) {right lower corner};
      \node[green, exterior size=4cm x 1cm, anchor=south] at (R.south) {middle};
    \end{tikzpicture}
  \end{figure}
\end{document}

在此处输入图片描述

答案2

您需要从每端减去线宽的一半,并且可以使用锚点来更轻松地定位而无需进行计算。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning} %<- not used here

\begin{document}    
\begin{figure}[p]
\begin{tikzpicture}
\draw[ultra thick] (\pgflinewidth/2,0)  rectangle (\linewidth-\pgflinewidth/2,2); %this line produces the overfull \hbox
\node[draw,minimum width=4cm,minimum height=1cm,anchor=south east] at (\linewidth,0) {right lower corner};
\node[draw,minimum width=1cm,minimum height=1cm,anchor=south] at (\linewidth/2,0) {middle};
\end{tikzpicture}
\end{figure}
\end{document}

在此处输入图片描述

相关内容