如何在表格单元格的顶角创建一个带有边框的小单元格?

如何在表格单元格的顶角创建一个带有边框的小单元格?

在此处输入图片描述如何让表格中单元格顶角的节点带有边框,并且不影响表格中空单元格的对齐?

\documentclass[12pt]{standalone}
\usepackage{tikz}
\usepackage{array}
\begin{document}
\begin{tabular}{|c|c|c|c|c}\cline{1-4} 
20 \raisebox{0.2cm}{\small 4} & \raisebox{0.2cm}{\small 6} & \raisebox{0.2cm}{\small 8} & \raisebox{0.2cm}{\small 8} & 40\\ 
\cline{1-4} 
& & & & 60\\ \cline{1-4} 
& & & & 50 \\ \cline{1-4} 
\multicolumn{1}{c}{20} & \multicolumn{1}{c}{30} & \multicolumn{1}{c}{50} & \multicolumn{1}{c}{50} & 
150\\ 
\end{tabular}

答案1

含钛Z 这很容易。这个答案定义了inlay可用于这些的样式。您可以添加到相应的单元格

|[inlay=<content>]|

代码:

\documentclass[tikz,border=3mm]{standalone}
\usepackage{amsmath}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[mmat/.style={matrix of math nodes,nodes in empty cells,
        row sep=-\pgflinewidth,column sep=-\pgflinewidth,
        nodes={minimum width=5.5em,minimum height=3.5em,
            draw,anchor=center,
            text depth=0.25ex,text height=0.8em}},
        inlay/.style={label={[draw,thin,anchor=north east,minimum width=0em,
        minimum height=0em,inner sep=1.4pt]north east:#1}}]
 \matrix[mmat] (mat){
 &  P & Q & R & S & \textit{Supply} \\
 A & |[inlay=180]| 12& |[inlay=150]| 10 & |[inlay=170]| 12 & 13 & 500 \\
 };         
 \draw (mat-1-1.north west) -- (mat-1-1.south east);
 \draw[stealth-] ([yshift=2ex,xshift=-0.5ex]mat-1-1.east) 
    -- ++ (-2ex,0) node[left,font=\itshape]{To};
 \draw[stealth-] ([xshift=3ex,yshift=0.5ex]mat-1-1.south west) 
    -- ++ (0,2ex) node[above,font=\itshape]{From};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

{NiceArray}这是的解决方案nicematrix。该环境类似于经典环境{nicearray}array),但在单元格、行和列下创建了 PGF/Tikz 节点。我使用这些节点在构造数组后添加小角。

\documentclass{article}
\usepackage{nicematrix,tikz}

\ExplSyntaxOn
\makeatletter
\cs_new_protected:Nn \__rakatex_draw_angle:nnn 
  { 
    \begin{tikzpicture}
    \draw ([xshift=-5.5mm]#1-|#2) |- ([yshift=-4mm]#1-|#2) ; 
    \node at ([xshift=-2.75mm,yshift=-2mm]#1-|#2) { \small #3 } ;
    \end{tikzpicture}
  }

\NewDocumentCommand{\Cell}{mm}
  {
    #1
    \tl_gput_right:Nx \g_nicematrix_code_after_tl
      { 
        \__rakatex_draw_angle:nnn
          { \int_use:N \c@iRow } 
          { \int_eval:n { \c@jCol + 1 } } 
          { #2 } 
      }
  }
\makeatother
\ExplSyntaxOff

\begin{document}

\renewcommand{\arraystretch}{2}
$\begin{NiceArray}{c*{4}{wc{1.5cm}}c}[hvlines]
\diagbox{\downarrow\emph{From}}{\emph{To}\to}& P & Q & R & S & \text{\emph{Supply}} \\
A & \Cell{12}{180} & \Cell{10}{150} & \Cell{12}{170} & 13 & 500 \\
B & 7 & 11 & \Cell{8}{180} & \Cell{14}{120} & 300 \\
C & 6 & 16 & 11 & \Cell{7}{200} & 200 \\
\text{Demand} & 180 & 150 & 350 & 320 & 1000
\end{NiceArray}$


\end{document}

上述代码的输出

相关内容