From 602bc1298a2fbd2796094426f27542a3ae7bf067 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 10 Dec 2013 23:19:40 +0000 Subject: pas-tableur (10dec13) git-svn-id: svn://tug.org/texlive/trunk@32375 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/pas-tableur/README | 37 ++++ .../doc/latex/pas-tableur/README.TEXLIVE | 7 + .../tex/latex/pas-tableur/pas-tableur.sty | 241 +++++++++++++++++++++ Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/libexec/ctan2tds | 2 + Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 + Master/tlpkg/tlpsrc/pas-tableur.tlpsrc | 0 7 files changed, 289 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/doc/latex/pas-tableur/README create mode 100644 Master/texmf-dist/doc/latex/pas-tableur/README.TEXLIVE create mode 100644 Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty create mode 100644 Master/tlpkg/tlpsrc/pas-tableur.tlpsrc (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/pas-tableur/README b/Master/texmf-dist/doc/latex/pas-tableur/README new file mode 100644 index 00000000000..13fa4f3b946 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pas-tableur/README @@ -0,0 +1,37 @@ +********* README file for pas-crosswords ****************** +********************* ENGLISH ***************************** + +This package uses TikZ to imitate spreadsheet. + +Licence +------- + +This program can be redistributed and/or modified under the terms +of the LaTeX Project Public License Distributed from CTAN +archives in directory macros/latex/base/lppl.txt. + +Documentation +------------- + +The documentation of the package is under the +directory /doc/ in french language. + +Thanks to use pas-tableur.sty. + +********* Fichier README pour pas-crosswords ****************** +********************** FRANCAIS ******************************* + +Cette extension utilise TikZ pour imiter les feuilles de calculs sous tableur. + +Licence +------- + +L'extension peut être redistribuée et/ou modifiée sous les termes +de la licence LaTeX Project Public (voir macros/latex/base/lppl.txt). + +Documentation +------------- + +La documentation de l'extension se trouve dans le répertoire /doc/. + +Merci d'utiliser pas-tableur.sty. diff --git a/Master/texmf-dist/doc/latex/pas-tableur/README.TEXLIVE b/Master/texmf-dist/doc/latex/pas-tableur/README.TEXLIVE new file mode 100644 index 00000000000..be87441fe8e --- /dev/null +++ b/Master/texmf-dist/doc/latex/pas-tableur/README.TEXLIVE @@ -0,0 +1,7 @@ +The following files have been removed in the TeX Live installation of +the current package, typically due to duplication, lack of space, or +missing source code. You can find these files on CTAN at + http://mirror.ctan.org/macros/latex/contrib/pas-tableur +If questions or concerns, email tex-live@tug.org. + + pas-tableur.pdf diff --git a/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty b/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty new file mode 100644 index 00000000000..45d53c917f1 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty @@ -0,0 +1,241 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% pas-tableur.sty v1.04 encodage : UTF8 % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Créé par Stéphane PASQUET % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% V1.02 : 12/05/2012 -> Modification de la macro \tableur : on peut désormais écrire \tableur{A,B,C,D} ou \tableur{A-D} +% V1.03 : 13/05/2012 -> Modification de la macro \celtxt : on peut désormais insérer l'accent circonflexe dans du texte et si le texte est plus large que la cellule, le trait gris de séparation des cellules n'est plus visible (le texte s'écrit par dessus). +% V1.04 : 13/05/2012 -> Alélioration de la macro \celtxt : le texte est réduit pour ne pas effacer les traits de cellule + +% Informations générales +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pas-tableur}[2012/05/12] + +\RequirePackage{tikz} +\usetikzlibrary{calc} +\RequirePackage{xstring} +\RequirePackage{multido} + +% Définition des couleurs + +\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} + +% Définition des dimensions lignes/colonnes +\def\colminwidth{7em} +\def\lineminheight{1.57em} + +% Définition des polices de caractères +\newcommand{\helvbx}{\usefont{T1}{phv}{m}{n}} +\newcommand{\helv}{\usefont{T1}{phv}{l}{n}} + +% Définition des compteurs +\newcounter{celnumber} +\newcounter{tmp} +\newcounter{nbcolselected} +\newcounter{nblineselected} +\newcount\cntcol + +% Macros auxiliaires pour mémoriser les lettres désignant les colonnes +\newcommand*\defcolumns{\cntcol\z@\valheadcols} +\newcommand*\valheadcols[1]{\expandafter\valheadcols@#1,\valheadcols@,} +\newcommand*\defcolumnsB{\cntcol\z@\valheadcolsB} +\newcommand*\valheadcolsB[1]{\valheadcols@#1,\valheadcols@,} +\def\valheadcols@#1,{% + \ifx\valheadcols@#1% + \else + \advance\cntcol\@ne + \expandafter\xdef\csname ValCol#1\endcsname{\number\cntcol} + \expandafter\valheadcols@ + \fi +} +\newcommand*\ValCol[1]{\@nameuse{ValCol#1}} + +% Macros auxiliaires pour mémoriser les lettres désignant les colonnes sélectionnées +\newcommand*\defcolselected{\cntcol\z@\valcolselected} +\newcommand*\valcolselected[1]{\expandafter\valcolselected@#1,\valcolselected@,} +\def\valcolselected@#1,{% + \ifx\valcolselected@#1% + \else + \advance\cntcol\@ne + \expandafter\xdef\csname ValColSelected\number\cntcol\endcsname{#1} + \expandafter\valcolselected@ + \fi +} +\newcommand*\ValColSelected[1]{\@nameuse{ValColSelected#1}} + +% Macros auxiliaires pour mémoriser les lettres désignant les lignes sélectionnées +\newcommand*\deflineselected{\cntcol\z@\vallineselected} +\newcommand*\vallineselected[1]{\vallineselected@#1,\vallineselected@,} +\def\vallineselected@#1,{% + \ifx\vallineselected@#1% + \else + \advance\cntcol\@ne + \expandafter\xdef\csname ValLineSelected\number\cntcol\endcsname{#1} + \expandafter\vallineselected@ + \fi +} +\newcommand*\ValLineSelected[1]{\@nameuse{ValLineSelected#1}} + +%----------> Liste des noms de colonnes <---------- +\global\def\col@names{ABCDEFGHIJKLMNOPQRSTUVWXYZ} + +%----------> Construction du tableur <----------- +\newcommand{\tableur}[2][1] % [#1] -> nombre de lignes (par défaut, "1"), #2 -> A,B,...,Z +{% +% On mémorise les lettres des colonnes +% \ValCol{A} sera égal à "1" si la 1ère colonne porte la lettre "A" +\setcounter{celnumber}{0} +\IfSubStr{#2}{-} +{% + \StrBefore{#2}{-}[\str@start] % 1ère lettre, par ex. "G" + \StrBehind{#2}{-}[\str@end] % 2ème 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} + \StrLen{\str@col}[\nb@columns] + \StrChar{\str@col}{1}[\lettre] + \xdef\chaine{\lettre} + \multido{\i=2+1}{\nb@columns} + { + \StrChar{\str@col}{\i}[\lettre] + \xdef\chaine{\chaine,\lettre} + } % ici, \chaine = "H,I,J,K," + \StrGobbleRight{\chaine}{1}[\chaine] % retire la dernière virgule : \chaine -> "H,I,J,K" + \defcolumns{\chaine} + \multido{\i=1+1}{\nb@columns} + { + \StrChar{\str@col}{\i}[\lettre] + \node[below right,inner xsep=1ex,minimum width=\colminwidth,minimum height=\lineminheight] (c\thecelnumber) at ({\thecelnumber*\colminwidth},0) {\helvbx\lettre}; + \fill[grayTopCell] (c\thecelnumber.north west) -- (c\thecelnumber.north east) -- ($0.5*(c\thecelnumber.north east)+0.5*(c\thecelnumber.south east)$) -- ($0.5*(c\thecelnumber.south west)+0.5*(c\thecelnumber.north west)$) -- cycle; + \fill[grayBottomCell] (c\thecelnumber.south west) -- (c\thecelnumber.south east) -- ($0.5*(c\thecelnumber.south east)+0.5*(c\thecelnumber.north east)$) -- ($0.5*(c\thecelnumber.south west)+0.5*(c\thecelnumber.north west)$) -- cycle; + \node[below right,inner sep=1ex,minimum width=\colminwidth,minimum height=\lineminheight] at (c\thecelnumber.north west) {\helvbx\lettre}; + \stepcounter{celnumber} + } +} +{ + \defcolumnsB{#2} + \foreach \i in {#2} + { + \node[below right,inner xsep=1ex,minimum width=\colminwidth,minimum height=\lineminheight] (c\thecelnumber) at ({\thecelnumber*\colminwidth},0) {\helvbx\i}; + \fill[grayTopCell] (c\thecelnumber.north west) -- (c\thecelnumber.north east) -- ($0.5*(c\thecelnumber.north east)+0.5*(c\thecelnumber.south east)$) -- ($0.5*(c\thecelnumber.south west)+0.5*(c\thecelnumber.north west)$) -- cycle; + \fill[grayBottomCell] (c\thecelnumber.south west) -- (c\thecelnumber.south east) -- ($0.5*(c\thecelnumber.south east)+0.5*(c\thecelnumber.north east)$) -- ($0.5*(c\thecelnumber.south west)+0.5*(c\thecelnumber.north west)$) -- cycle; + \node[below right,inner sep=1ex,minimum width=\colminwidth,minimum height=\lineminheight] at (c\thecelnumber.north west) {\helvbx\i}; + \stepcounter{celnumber} + } +} + +% Placement des numéros de lignes +\foreach \i in {1,...,#1} +{ + \node[below left,inner xsep=1ex,minimum width=3em,minimum height=\lineminheight,draw,very thin] (nb) at (0,{-\i*\lineminheight}) {\helvbx\i}; + \fill[grayTopCell] (nb.north west) -- (nb.north east) -- ($0.5*(nb.north east)+0.5*(nb.south east)$) -- ($0.5*(nb.south west)+0.5*(nb.north west)$) -- cycle; + \fill[grayBottomCell] (nb.south west) -- (nb.south east) -- ($0.5*(nb.south east)+0.5*(nb.north east)$) -- ($0.5*(nb.south west)+0.5*(nb.north west)$) -- cycle; + \node[below left,inner xsep=1ex,minimum width=3em,minimum height=\lineminheight,draw,very thin] (nb) at (0,{-\i*\lineminheight}) {\helvbx\i}; +} +\addtocounter{celnumber}{-1} + +% Tracé de la grille +\draw[black,very thin] (0,0) grid[xstep=\colminwidth] (c\thecelnumber.south east); +\foreach \i in {1,...,#1} +{ + \draw[graySepCell,very thin] (0,{-(\i+1)*\lineminheight}) -- ({(\thecelnumber+1)*\colminwidth},{-(\i+1)*\lineminheight}); +} +\addtocounter{celnumber}{1} +\foreach \x in {0,...,\thecelnumber} +{ + \draw[graySepCell] ({\x*\colminwidth},-\lineminheight) -- ({\x*\colminwidth},{-(#1+1)*\lineminheight}); +} +\addtocounter{celnumber}{-1} +\draw (c0.south west) -- (c\thecelnumber.south east); +\draw (c0.south west) -- ($(c0.south west)+(0,{-\lineminheight*#1})$); +} + +%-----------> Insérer un texte dans une cellule <--------------- +\newcommand\celtxt{% + \begingroup + \@makeother^% + \@makeother$% + \@celtxt@ +} +\newsavebox{\tmp@txt} +\newlength{\tmp@ltxt} +\newcommand\@celtxt@[4][l]{ + \StrPosition{#4}{=}[\@equalPos] + \ifnum\@equalPos=1 + \def\@scale{1} + \def\@style{\texttt} + \else + \def\@scale{0.9} + \def\@style{\relax} + \fi + \node[below right] at ($(c0.south west)+({(\ValCol{#2}-1)*\colminwidth},{-(#3-1)*\lineminheight})$) {\makebox[\colminwidth][#1]{\@style{#4}\phantom{-.}}}; + \endgroup +} + +% Macro auxiliaire : colorie en-tête colonne +\newcommand*\colorHead[2] +{ + \fill[blueSelecCellTop] (c#1.north west) -- (c#1.north east) -- ($0.5*(c#1.north east)+0.5*(c#1.south east)$) -- ($0.5*(c#1.south west)+0.5*(c#1.north west)$) -- cycle; + \fill[blueSelecCellBottom] (c#1.south west) -- (c#1.south east) -- ($0.5*(c#1.south east)+0.5*(c#1.north east)$) -- ($0.5*(c#1.south west)+0.5*(c#1.north west)$) -- cycle; + \node[below right,inner sep=1ex,minimum width=\colminwidth,minimum height=\lineminheight] at (c#1.north west) {\helvbx#2}; + \draw[black,very thin] (0,0) grid[xstep=\colminwidth] (c\thecelnumber.south east); + \draw (c0.south west) -- (c\thecelnumber.south east); +} +% Macro auxiliaire : colorie en-tête ligne +\newcommand*\colorLine[1] +{ + \node[below left,inner xsep=1ex,minimum width=3em,minimum height=\lineminheight,draw,very thin] (nb) at (0,{-#1*\lineminheight}) {\helvbx#1}; + \fill[blueSelecCellTop] (nb.north west) -- (nb.north east) -- ($0.5*(nb.north east)+0.5*(nb.south east)$) -- ($0.5*(nb.south west)+0.5*(nb.north west)$) -- cycle; + \fill[blueSelecCellBottom] (nb.south west) -- (nb.south east) -- ($0.5*(nb.south east)+0.5*(nb.north east)$) -- ($0.5*(nb.south west)+0.5*(nb.north west)$) -- cycle; + \node[below left,inner xsep=1ex,minimum width=3em,minimum height=\lineminheight,draw,very thin] (nb) at (0,{-#1*\lineminheight}) {\helvbx#1}; +} + +\newcommand{\selecCell}[2] % #1 = colonne, #2 = ligne +{ + \setcounter{tmp}{\ValCol{#1}} + \addtocounter{tmp}{-1} + \colorHead{\thetmp}{#1} + \colorLine{#2} + \draw[very thick,black] ($(c0.south west)+({\thetmp*\colminwidth},{-(#2-1)*\lineminheight+0.5pt})$) rectangle +(\colminwidth,-\lineminheight); + \fill[black] ($(c0.south west)+({(\thetmp+1)*\colminwidth},{-(#2-1)*\lineminheight-\lineminheight})+(-1pt,1.5pt)$) rectangle+(3pt,-3pt); +} + +\newcommand{\multiSelec}[2] % #1 : colonnes (B,C,D) par exemple, #2 : lignes (2,3,4) +{ + \defcolselected{#1} % on mémorise les noms des colonnes sélectionnées - \ValColSelected{1} = lettre de la première colonne + %\xdef\firstlettercol\ValColSelected{1} + + \deflineselected{#2} % on mémorise les noms des lignes sélectionnées - \ValLineSelected{1} = numéro de la première ligne + %\def\firstline{\ValLineSelected{1}} + + \setcounter{nbcolselected}{0} + + \foreach \c in {#1} + { + \stepcounter{nbcolselected} + \setcounter{tmp}{\ValCol\c} + \addtocounter{tmp}{-1} + \colorHead{\thetmp}{\c} + } + + \setcounter{nblineselected}{0} + \foreach \l in {#2} + { + \stepcounter{nblineselected} + \colorLine{\l} + } + + \fill[blueSelec,opacity=.5] ($(c0.south west)+({(\ValCol{\ValColSelected{1}}-1)*\colminwidth},{-(\ValLineSelected{1}-1)*\lineminheight})$) rectangle +({\thenbcolselected*\colminwidth},{-\thenblineselected*\lineminheight}); + + \draw[very thick,black] ($(c0.south west)+({(\ValCol{\ValColSelected{1}}-1)*\colminwidth},{-(\ValLineSelected{1}-1)*\lineminheight+0.5pt})$) rectangle +(\colminwidth,-\lineminheight); + \fill[black] ($(c0.south west)+({(\ValCol{\ValColSelected{1}}-1)*\colminwidth+\thenbcolselected*\colminwidth-1pt},{-(\ValLineSelected{1}-1)*\lineminheight-\thenblineselected*\lineminheight+1.5pt})$) rectangle+(3pt,-3pt); +} +\endinput diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index ab1c1057ce0..c1dc998c5af 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -347,7 +347,7 @@ my @TLP_working = qw( paper papercdcase papermas papertex paracol paralist parallel paratype paresse parnotes parrun parselines parskip - pas-crosswords pas-cv passivetex + pas-crosswords pas-cv pas-tableur passivetex patch patchcmd patgen2-tutorial path pauldoc pawpict pax pbox pb-diagram pbsheet pdf14 diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 8cebbe928aa..06c7db46646 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -737,6 +737,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'pandora-type1', "die 'skipping, pandora is nosell'", 'paradigm', "die 'skipping, too old, for BLUe'", 'pas-crosswords', "&MAKEflatten", + 'pas-tableur', "&MAKEflatten", 'pb-diagram', "&MAKEpbdiagram", 'pcarl', "die 'skipping, free support for nonfree font'", 'pclnfss', "die 'skipping, nonfree hardware fonts'", @@ -2595,6 +2596,7 @@ $standardclean = '\.head|\.tmp|\.dvi|\.log|\.out|\.aux|\.toc|\.lof|\.lot' 'oinuit' => 'cmssbxo10.tfm', # should not be here 'oscola' => '\.pdf$', # no source 'parnotes' => 'PNmanual.pdf', # no source + 'pas-tableur' => '\.pdf$', # no source 'piechartmp' => 'piechartmp.pdf', # no source 'ptptex' => '(overcite|cite|wrapfig).sty', # duplicated 'sapthesis' => '.*-ML.*\.pdf', # univ logos diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index 0938f4707fe..e8d27b5e920 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -602,6 +602,7 @@ depend paresse depend parnotes depend parselines depend pas-cv +depend pas-tableur depend patch depend patchcmd depend pauldoc diff --git a/Master/tlpkg/tlpsrc/pas-tableur.tlpsrc b/Master/tlpkg/tlpsrc/pas-tableur.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.3