我有一些坐标蒂克兹-picture,我想绘制一些由两个相对角坐标定义的矩形。我发现最简单的方法是使用这个答案:通过指定两个相对的角在 tikz 中放置一个矩形节点.然而我无法获取文本垂直和水平居中在绘制的矩形内。
tikzset{...}
我摆弄了我的和属性内的各种锚点text centered
,但它们似乎都只影响框,而不影响文本。
梅威瑟:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{fit}
\tikzset{
block/.style 2 args = {
draw, line width = 1pt, inner sep=0pt, outer sep=0pt,
fit=(#1) (#2),}
}
\begin{document}
\begin{tikzpicture}[x=1mm,y=1mm]
\draw[step=1cm,gray,very thin] (-10,-10) grid (70,70);
\coordinate[](0_r1) at (0,22.5);
\coordinate[](0_r2) at (0,42);
\coordinate[](0_r3) at (0,49);
\coordinate[](b1_r2) at (14.4,42);
\coordinate[](b1_r3) at (14.4,49);
\coordinate[](b1_r4) at (14.4,59,0);
\node[block={0_r1}{b1_r2}] {$R_{mki1}$};
\node[block={0_r2}{b1_r3}] {$R_{mr1}$};
\node[block={0_r3}{b1_r4}] {$R_{mko1}$};
\end{tikzpicture}
\end{document}
我愿意尝试其他绘制矩形的方法,但它们需要通过预定义坐标进行定义。此外,我需要改变每个矩形的线条样式和填充,因此我希望tikzset
尽可能保持简单并在外部定义这些属性。
答案1
这是一个已知问题,之前已经处理过1但这可能是库代码中的问题fit
。2
但是,您可以使用其中一个问题中找到的解决方案并使用标签。
我还认为,如果创建一个用于放置节点的新命令,使用以下语法将一个节点的 3 行代码减少到 1 行代码,会更容易:
\fnode[optional]{bottom left coord}{top right coord}{text}
输出
代码
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{fit}
\tikzset{
block/.style 2 args = {
draw, line width=1pt, inner sep=0, outer sep=0,
fit=(#1) (#2)}
}
\newcommand{\fnode}[4][]{
\coordinate (bottom left) at (#2);
\coordinate (top right) at (#3);
\node[block={bottom left}{top right}, #1, label=center:#4] {};
}
\begin{document}
\begin{tikzpicture}[x=1mm,y=1mm]
\draw[step=1cm,gray,very thin] (-10,-10) grid (70,70);
\fnode{0,22.5}{14.4,42}{$R_{mki1}$}
\fnode{0,42}{14.4,49}{$R_{mr1}$}
\fnode{0,49}{14.4,59}{$R_{mko1}$}
\end{tikzpicture}
\end{document}
答案2
只要您的文本不太长,这种方法就可以完美运行。
\documentclass[tikz, border=6mm]{standalone}
\begin{document}
\begin{tikzpicture}[x=1mm, y=1mm]
\coordinate[](0_r1) at (0,22.5);
\coordinate[](0_r2) at (0,42);
\coordinate[](0_r3) at (0,49);
\coordinate[](b1_r2) at (14.4,42);
\coordinate[](b1_r3) at (14.4,49);
\coordinate[](b1_r4) at (14.4,59,0);
\draw (0_r1) rectangle (b1_r2) node [pos=.5] {$R_{mki1}$};
\draw (0_r2) rectangle (b1_r3) node [pos=.5] {$R_{mr1}$};
\draw (0_r3) rectangle (b1_r4) node [pos=.5] {$R_{mko1}$};
\end{tikzpicture}
\end{document}