tikz:一行 5 个方块,罗马数字 1 -> 5

tikz:一行 5 个方块,罗马数字 1 -> 5

我之前从未使用过 tkiz,我甚至无法理解如何绘制这个简单的东西。

一行有 5 个方格,罗马数字 1 -> 5

我讨厌乞求“有人能帮我做这个吗”,但在尝试做之后此解决方案我花了好几个小时来摆弄、调整、阅读和摸索,却没有找到任何解决方案,所以我不得不向我的网友寻求帮助......

所以:基本上我需要上面的图画,排列到页面的中间......

感谢您的帮助!

答案1

LaTeX 允许您\Roman{<counter>}自动插入正确的罗马数字。

\documentclass[tikz,border=3.14mm]{standalone}
\newcounter{pft}
\begin{document}
\begin{tikzpicture}
 \foreach  \X in {1,...,5}
 {\node[minimum width=6mm] (\X) at (\X,0) {\setcounter{pft}{\X}\Roman{pft}};
 \draw(\X.north west) rectangle ([yshift=-3mm]\X.south east);}
 \draw([xshift=-1em]1.south west) -- ++ (0,2.5em) -| ([xshift=1em]5.south east);
\end{tikzpicture}
\end{document}

在此处输入图片描述

或者text depth使用焦耳五世的答案Martin Scharrer 的回答无需计数器,更加自动化。

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}
 \foreach  \X in {1,...,5}
 {\node[minimum width=8mm,text depth=2ex,draw] (\X) at (1.2*\X,0)
 {\uppercase\expandafter{\romannumeral\X\relax}};}
 \draw([xshift=-1em]1.west) -- ++ (0,2.5em) -| ([xshift=1em]5.east);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

\documentclass[tikz]{standalone}
\tikzset{mynode/.style={draw,minimum size=1.5cm,text depth=2\baselineskip}}
\begin{document}
\begin{tikzpicture}
\foreach \i/\ins in {1/I,2/II,3/III,4/IV,5/V} 
    \node[mynode] (\i) at (2*\i,0) {\ins};
\draw ([xshift=-.5cm]1.west) |- ([shift={(.5cm,.5cm)}]5.north east) -- ++ (0,-1);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

使用 TikZ 库chainspositioning

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{chains, positioning}

\begin{document}
\begin{tikzpicture}[
node distance = 4mm,
  start chain = A going right,
   box/.style = {draw, minimum size=1.5cm,
                 label={[anchor=north,font=\large]:#1},
                 on chain=A}
                    ]
\foreach \i in {I, II, III, IV, V}
    \node[box=\i] {};
\draw ([xshift=-5mm] A-1.west) |- ([yshift=5mm] A-1.north) -| ([xshift=5mm] A-5.east);
\end{tikzpicture}
\end{document}

在此处输入图片描述

并使用 Stefan Kottwitz回答罗马数字,可以绘制任意长的节点链:

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{chains, positioning}
\makeatletter
\newcommand*{\rom}[1]{\expandafter\@slowromancap\romannumeral #1@}
\makeatother

\begin{document}
\begin{tikzpicture}[
node distance = 4mm,
  start chain = A going right,
   box/.style = {draw, minimum size=1.5cm,
                     label={[anchor=north,font=\large]:\rom{#1}}, % <---
                     on chain=A}
                    ]
\def\Nmax{5}                    % <---
\foreach \i in {1,...,\Nmax}    % <---
    \node[box=\i] {};
\draw   ([xshift=-5mm] A-1.west) |- 
        ([yshift=5mm] A-1.north) -| ([xshift=5mm] A-\Nmax.east); % <---
\end{tikzpicture}
\end{document}

结果和以前一样。

相关内容