2

enter image description hereHow to get the node at the top corner of the cell in the table with borders and does not mess with the alignment of the empty cell in a table?

\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}
rakatex
  • 489
  • 2
  • 13

2 Answers2

5

With TikZ this is very easy. This answer defines a style inlay that can be used for those. You can add to the respective cell

|[inlay=<content>]|

Code:

\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}

enter image description here

  • That works perfectly fine. Thank you very much @Schrödinger's cat. – rakatex Apr 25 '20 at 06:40
  • I get this perfectly good in overleaf but could not get this in Texmaker. The labels are moving upward, please help. – rakatex Apr 26 '20 at 19:04
  • 3
    @RameshKannan I am sorry, TeXmaker is not a TeX distribution. So I do not have the relevant information to be able to help. Please tell me which TeX installation you are using (TeXLive 2020, MikTeX, whatever). Most likely the issue disappears if you update your TeX installation. –  Apr 26 '20 at 19:07
  • I am using MikTeX from proTeXt. The inlays are gone outside the box. Thank you very much. – rakatex Apr 26 '20 at 19:28
  • 3
    I have updated my MikTeX package distribution and it works perfectly good. Thank you @Schrödinger's cat. – rakatex May 08 '20 at 18:41
1

Here is a solution with {NiceArray} of nicematrix. That environment is similar to the classical environment {nicearray} (of array) but creates PGF/Tikz nodes under the cells, rows and columns. I use these nodes to add the small corners after the construction of the array.

\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}

Output of the above code

F. Pantigny
  • 40,250