如何修改 pas-tableur 包以从行号“n”开始?

如何修改 pas-tableur 包以从行号“n”开始?

我对 pas-tableur 包做了一些修改,使其更好地类似于 Excel 2019,不幸的是我无法修改行号的开头,我附上了我想要实现的图像。 在此处输入图片描述

\documentclass[serif,aspectratio=169]{beamer}

\usetheme{CambridgeUS}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[spanish,es-tabla]{babel}
\usepackage{pgf,tikz}

% the package "tab-excel" from the file "tab-excel.sty" is added  ----------------------------------------------
\usepackage{tab-excel}

\begin{document}
\begin{frame}{excel}
    \begin{tikzpicture}
    \tableur*[8]{A/2cm ,B/3cm ,C/2cm,D/2cm}
    \celtxt*[c]{A}{1}{$ n $}
    \celtxt*[c]{B}{1}{$ u_n $}
    \celtxt[c]{C}{2}{dd}
    \selecCell{B}{3}
    \celtxt{B}{3}{=\$C\$1*B2+0.1}
    \multiSelec{B-6}{C-7}
    \end{tikzpicture}
\end{frame}

\end{document}

             %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
           Here starts the modified package
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                         %
%        pas-tableur.sty  v2.01     encodage : UTF8       %
%                                                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                         %
%             Cree par Stephane PASQUET                   %
%                                                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 
\def\fileversion{2.1}
\def\filedate{2016/01/31}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{pas-tableur}[%
  \filedate\space v\fileversion\space
  LaTeX package by Stephane PASQUET]
\RequirePackage{tikz}
\usetikzlibrary{calc}
\RequirePackage{xstring}
\RequirePackage{xkeyval}
%
% Definition des couleurs
%

\definecolor{grayTopCell}{RGB}{102 ,102 ,102}
\definecolor{grayBottomCell}{RGB}{102 ,102 ,102}
\definecolor{graySepCell}{RGB}{102 ,102 ,102}
\definecolor{blueSelecCellTop}{RGB}{51 ,51 ,51}
\definecolor{blueSelecCellBottom}{RGB}{51 ,51 ,51}
\definecolor{verde}{RGB}{33, 115, 70}
\definecolor{gris}{RGB}{196,196,196}
%\definecolor{grayTopCell}{cmyk}{0.08,0.05,0.06,0}
%\definecolor{grayBottomCell}{cmyk}{0.1,0.07,0.08,0}
%\definecolor{graySepCell}{cmyk}{0.29,0.21,0.21,0}
%\definecolor{blueSelecCellTop}{cmyk}{0.52,0.17,0,0}
%\definecolor{blueSelecCellBottom}{cmyk}{0.75,0.34,0,0}
\definecolor{blueSelec}{cmyk}{0.23,0.06,0,0}
%
% Definition des dimensions par defaut
%
\def\col@width{7em}
\def\numline@width{3em} % largeur de la colonne indiquant le numeros des lignes
\def\line@height{1.57em}
%
    %==> Changer les valeurs par defaut
    \newcommand*{\tabcolwidth}[1]{\def\col@width{#1}}
    \newcommand*{\tabnumlinewidth}[1]{\def\numline@width{#1}}
    \newcommand*{\tablineheight}[1]{\def\line@height{#1}}
%
% Definition des polices de caracteres
%
\newcommand{\helvbx}{\usefont{T1}{phv}{m}{n}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Construction du tableur %
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   
%==> Macro intermediaire : trace de la premiere cellule
%
\newcommand{\pastab@draw@cell}[5] 
% #1 : \first@width, #2 : \first@name, #3 : 0=colonne1 / 1=autres colonnes / 
% 2 = ligne 1, #4 : coord., #5 : contenu
    {%
        \ifnum#3=0%
            \tikzstyle{cellstyle} = [celhead,minimum width={#1},minimum height=\line@height]%
            \def\pastableur@coord{(0,0)}%
        \else%
            \ifnum#3=1%
                \tikzstyle{cellstyle} = [celhead,right,minimum width={#1},minimum height=\line@height]%
            \else
                \ifnum#3=2%
                    \tikzstyle{cellstyle} = [below left,celhead,minimum width={#1},minimum height=\line@height]
                \else%
                    \tikzstyle{cellstryle} = [below,celhead,minimum width={#1},minimum height=\line@height]
                \fi%
            \fi%
            \def\pastableur@coord{(#4)}%
        \fi%
        \node[cellstyle] (#2) at \pastableur@coord {\helvbx#5};%
        \fill[grayTopCell] 
                    (#2.north west) -- 
                    (#2.north east) -- 
                    (#2.south east) --                  
                    (#2.south west) -- 
                    cycle;%
        \node[color=white,minimum width={#1},minimum height=\line@height,cellstyle] at \pastableur@coord {\helvbx#5};%
    }
%
%==> Macro intermediaire : trace de la grille
%
\newcommand{\pastableur@grid}[4] % #1 : width, #2 : name, #3 : numline, #4 : coord.
    {%
        \node[celempty,below,minimum height=\line@height,minimum width=#1] (cell#2-#3) at (#4) {};%
        \draw[graySepCell] ($(cell#2-#3.south west)+(0.25pt,0)$) -- (cell#2-#3.south east) -- ($(cell#2-#3.north east)+(0,-0.25pt)$);%
    }
%
%==> Style des cellules
%
\tikzstyle{celempty} = [outer sep=0pt]
\tikzstyle{celhead} = [draw=graySepCell!50,rectangle,outer sep=0pt]
%   
%==> Macro de redirection : etoilee ou pas etoilee ?
%
\newcommand{\tableur}{\@ifstar{\tableur@star}{\tableur@nostar}}
%
%==> Macro etoilee : \tableur*{A/<l1>,B/<l2>,...}. Tableur avec colonnes de largeurs differentes
%
\newcommand{\tableur@star}[2][1] 
    {%
        \xdef\list@of@col{#2}%
        % Placement de la premiere cellule en-tête
            \StrChar{#2}{1}[\first@name]%
            \StrBetween{#2}{/}{,}[\first@width]%
            \pastab@draw@cell{\first@width}{\first@name}{0}{}{\first@name}
        % Placement des autres en-têtes de colonnes 
            \foreach \name/\w [remember=\name as \lastname,count=\colnumber] in {#2}
            {%
                \ifx\name\first@name%
                \else%
                    \pastab@draw@cell{\w}{\name}{1}{\lastname.east}{\name}
                \fi%
            }%
        % Placement des en-têtes de lignes INICIA EL CONTADOR
            \pastab@draw@cell{\numline@width}{numline1}{2}{\[email protected] west}{1} 
            \ifnum#1>1%
                \foreach \num@line [remember=\num@line as \lastnum (initially 1)] in {2,...,#1}
                {%
                    \pastab@draw@cell{\numline@width}{numline\num@line}{3}{numline\lastnum.south east}{\num@line}%
                }%
            \fi%
        % Trace de la grille
            \foreach \name/\w in {#2}
            {%
                \pastableur@grid{\w}{\name}{1}{\name.south}%
            }%
            \ifnum#1>1%
                \foreach\numline [remember=\numline as \lastnumline (initially 1)] in {2,...,#1}
                {%
                    \foreach \name/\w in {#2}
                    {%
                        \pastableur@grid{\w}{\name}{\numline}{cell\name-\lastnumline.south}%
                    }%
                }%
        \fi%
    } % --> Fin de \tableur*
%   
%==> Macro non etoilee : \tableur{A,B,C,...} ou \tableur{A-C}
%   
\xdef\col@names{ABCDEFGHIJKLMNOPQRSTUVWXYZ} %----------> Liste des noms de colonnes <----------
%
\newcommand{\tableur@nostar}[2][1] % [#1] -> nombre de lignes (par defaut, "1"), #2 -> A,B,...,Z
    {%
        \IfSubStr{#2}{-}
        {%
            \StrBefore{#2}{-}[\str@start] % 1ere lettre, par ex. "G"
            \StrBehind{#2}{-}[\str@end]   % 2eme lettre, par ex. "L"
            \StrBetween{\col@names}{\str@start}{\str@end}[\str@col] %  retourne par exemple "HIJK"
            \edef\str@col{\str@start\str@col\str@end} % retourne alors "GHIJKL"
            \StrLen{\str@col}[\nb@columns] % nombre de colonnes
            % --> On place la premiere cellule en-tête
            \pastab@draw@cell{\col@width}{\str@start}{0}{}{\str@start}%
            % --> On place les autres en-têtes
            \foreach \i [remember=\i as \lasti (initially 1)] in {2,...,\nb@columns}
            {%
                \StrChar{\str@col}{\i}[\name]%
                \StrChar{\str@col}{\lasti}[\lastname]%
                \pastab@draw@cell{\col@width}{\name}{1}{\lastname.east}{\name}%
            }%
        }%
        {%
            \StrChar{#2}{1}[\str@start]%
            \pastab@draw@cell{\col@width}{\str@start}{0}{}{\str@start}%
            \foreach \name [remember=\name as \lastname] in {#2}
            {%
                \ifx\name\str@start%
                \else%
                    \pastab@draw@cell{\col@width}{\name}{1}{\lastname.east}{\name}%
                \fi%
            }%
        }%
        % Placement des en-têtes de lignes
            \StrChar{#2}{1}[\first@name]%
            \pastab@draw@cell{\numline@width}{numline1}{2}{\[email protected] west}{1}
            \ifnum#1>1%
                \foreach \num@line [remember=\num@line as \lastnum (initially 1)] in {2,...,#1}
                {%
                    \pastab@draw@cell{\numline@width}{numline\num@line}{3}{numline\lastnum.south east}{\num@line}%
                }%
            \fi%
        % Trace de la grille
            \IfSubStr{#2}{-}
            {%
                \foreach \i in {1,...,\nb@columns}
                {%
                    \StrChar{\str@col}{\i}[\name]%
                    \pastableur@grid{\col@width}{\name}{1}{\name.south}%
                }%
                \ifnum#1>1%
                    \foreach\numline [remember=\numline as \lastnumline (initially 1)] in {2,...,#1}
                    {%
                        \foreach \i in {1,...,\nb@columns}
                        {%
                            \StrChar{\str@col}{\i}[\name]%
                            \pastableur@grid{\col@width}{\name}{\numline}{cell\name-\lastnumline.south}%
                        }%
                    }%
                \fi%
            }
            {%
                \foreach \name in {#2}
                {%
                    \pastableur@grid{\col@width}{\name}{1}{\name.south}%
                }%
                \ifnum#1>1%
                    \foreach\numline [remember=\numline as \lastnumline (initially 1)] in {2,...,#1}
                    {%
                        \foreach \name in {#2}
                        {%
                            \pastableur@grid{\col@width}{\name}{\numline}{cell\name-\lastnumline.south}%
                        }%
                    }%
                \fi%
            }%
    } % --> Fin de \tableur
%   
% Inserer quelque chose dans une cellule : \celtxt [modif. du 2016/01/21 due \`a "Un bon petit"]
%
\define@cmdkey [PAS] {celtxt} {width}{}
\define@cmdkey [PAS] {celtxt} {color}{}
\define@boolkey [PAS] {celtxt} {l}[true]{}
\define@boolkey [PAS] {celtxt} {r}[true]{}
\define@boolkey [PAS] {celtxt} {c}[true]{} 
\presetkeys    [PAS] {celtxt} {width = \col@width, color=black}{}
%
\newcommand*\celtxt@catcoderegime@begin{}
\newcommand*\celtxt@catcoderegime@end{}
%
\newcommand*\celtxt
    {%
      \@ifstar{%
        \let\celtxt@catcoderegime@end\@empty
        \let\celtxt@catcoderegime@begin\@empty
        \celtxt@i
      }{%
        \def\celtxt@catcoderegime@begin{%
          \begingroup
          \@makeother\^%
          \@makeother\$%
        }%
        \let\celtxt@catcoderegime@end\endgroup
        \celtxt@i
      }%
    }
%
\newcommand*{\celtxt@i}[1][]{\celtxt@ii{#1}}
%
\newcommand*\celtxt@ii[3]
    {%
       \setkeys[PAS]{celtxt}{#1}%
       \celtxt@catcoderegime@begin
       \celtxt@iii{#1}{#2}{#3}%
    }
%
\newcommand*\celtxt@iii[4]
    {%
       \celtxt@catcoderegime@end
       \IfBeginWith{#4}{=}{\let\pastab@style\texttt}{\let\pastab@style\@empty}
       \ifPAS@celtxt@c
            \def\pos@align{c}%
       \else
            \ifPAS@celtxt@r
                \def\pos@align{r}%
            \else
                \def\pos@align{l}%
            \fi
       \fi
       \node at (cell#2-#3) {\makebox[\dimexpr\cmdPAS@celtxt@width-2pt][\pos@align]{\pastab@style{\textcolor{\cmdPAS@celtxt@color}{#4}}}};%
    }
%
% Cellule selectionnee : \selecCell
%
\newcommand*\selecCell[2]
    {%
        %==> En-tête ligne  
        %
        \pastableur@colorcell{numline#2}{0}
        \node[color=white,celhead,minimum width=\numline@width,minimum height=\line@height] at (numline#2) {\helvbx#2};%
        %   
        %==> En-tête colonne
        %
        \pastableur@colorcell{#1}{1}
        \node[color=white] at (#1) {\helvbx#1};%
        %
        %==> Cellule cell#1-#1
        %   
        \draw[color=verde,very thick] (cell#1-#2.south west) rectangle (cell#1-#2.north east);%
        \fill[verde] ($(cell#1-#2.south east)+(-1pt,1pt)$) rectangle +(3pt,-3pt);%
    } % fin de  \selecCell
%
% Selection de plusieurs cellules : \multiSelec{A-1}{B-2} _/!\_ Nouvelle syntaxe 2014
%
\newcommand*\multiSelec[2]
    {%
        \fill[gris,opacity=0.5] ($(cell#1.north west)+(0.25pt,-0.25pt)$) rectangle ($(cell#2.south east)+(-0.25pt,0.25pt)$);%
    %   \draw[color=verde,very thick] (cell#1.south west) rectangle (cell#1.north east);%
        \fill[white] (cell#1.south west) rectangle (cell#1.north east);%
        \draw[color=verde,very thick] ($(cell#1.north west)+(0.25pt,-0.25pt)$) rectangle ($(cell#2.south east)+(-0.25pt,0.25pt)$);%
        \fill[verde] ($(cell#2.south east)+(-0.5pt,0.5pt)$) rectangle +(3pt,-3pt);%
        %
        %==> On colorie les en-têtes "colonnes"
        %   
        \StrChar{#1}{1}[\str@start] % par exemple, "G"
        \StrChar{#2}{1}[\str@end]   % par exemple, "L"
        \StrBetween{\col@names}{\str@start}{\str@end}[\str@col] %  retourne par exemple "HIJK"
        \edef\str@col{\str@start\str@col\str@end} % retourne alors "GHIJKL"
        \StrLen{\str@col}[\nb@columns] % nombre d'en-têtes "colonnes" \`a colorier
        \foreach \i in {1,...,\nb@columns}
        {%
            \StrChar{\str@col}{\i}[\name]%
            \pastableur@colorcell{\name}{1}
            \node[color=white] at (\name) {\helvbx\name};%
        }%
        %   
        %==> On colorie les en-têtes "lignes"
        %   
        \StrGobbleLeft{#1}{2}[\first@num]%
        \StrGobbleLeft{#2}{2}[\second@num]%
        \foreach \i in {\first@num,...,\second@num}
        {%
            \pastableur@colorcell{numline\i}{0}
            \node[color=white,celhead,minimum width=\numline@width,minimum height=\line@height] at (numline\i) {\helvbx\i};%
        }%
    }% fin de \multiSelec
%
%
%
\newlength\pastableur@decal
\newcommand{\pastableur@colorcell}[2] % #1 : name, #2 : 0=en-tetes "lignes" / 1=en-tetes "colonnes"
    {%
        \ifnum#2=0%
            \setlength\pastableur@decal{0pt}%
        \else%
            \setlength\pastableur@decal{0.25pt}%
        \fi%
        \fill[blueSelecCellBottom] 
                        ($(#1.south west)+(\pastableur@decal,-\pastableur@decal)$) -- 
                        ($(#1.south east)+(-\pastableur@decal,\pastableur@decal)$) -- 
                        ($0.5*(#1.south east)+0.5*(#1.north east)+(-\pastableur@decal,0)$) -- 
                        ($0.5*(#1.south west)+0.5*(#1.north west)+(\pastableur@decal,0)$) --
                        cycle;%
        \fill[blueSelecCellTop] 
                        ($(#1.north west)+(\pastableur@decal,-\pastableur@decal)$) -- 
                        ($(#1.north east)+(-\pastableur@decal,-\pastableur@decal)$) -- 
                        ($(#1.south east)+(-\pastableur@decal,\pastableur@decal)$) -- 
                        ($(#1.south west)+(\pastableur@decal,-\pastableur@decal)$) -- 
                        cycle;%
    }%
\endinput

相关内容