From 417c2c0a5d5d82e53235d9aa529a30c06acee3cb Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 12 Jun 2016 16:14:00 +0000 Subject: keyvaltable (22may16) git-svn-id: svn://tug.org/texlive/trunk@41414 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/keyvaltable/keyvaltable.sty | 82 ++++++++++++++-------- 1 file changed, 54 insertions(+), 28 deletions(-) (limited to 'Master/texmf-dist/tex/latex/keyvaltable') diff --git a/Master/texmf-dist/tex/latex/keyvaltable/keyvaltable.sty b/Master/texmf-dist/tex/latex/keyvaltable/keyvaltable.sty index 7cf966e62ff..1e640fbc777 100644 --- a/Master/texmf-dist/tex/latex/keyvaltable/keyvaltable.sty +++ b/Master/texmf-dist/tex/latex/keyvaltable/keyvaltable.sty @@ -20,7 +20,7 @@ %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{keyvaltable} - [2016/03/13 v0.1 Package for filling tables using key-value lists] + [2016/05/22 v0.2 Package for filling tables using key-value lists] \RequirePackage{etoolbox} \RequirePackage{xkeyval} \RequirePackage[table]{xcolor} @@ -38,8 +38,14 @@ \kvt@lazypreset{Table}{#1=##1}}% \presetkeys[kvt]{defaults}{#1=#2}{}% \define@cmdkey[kvt]{Table}{#1}{}% - \presetkeys[kvt]{Table}{#1=#2}{}% -} + \presetkeys[kvt]{Table}{#1=#2}{}} +\newcommand\kvt@addchoicetableprop[3]{% + \define@choicekey[kvt]{defaults}{#1}{#3}{% + \kvt@lazypreset{Table}{#1=##1}}% + \presetkeys[kvt]{defaults}{#1=#2}{}% + \define@choicekey[kvt]{Table}{#1}{#3}% + {\csdef{cmdkvt@Table@#1}{##1}}% + \presetkeys[kvt]{Table}{#1=#2}{}} \newcommand\kvt@addcolumnprop[2]{% \define@key[kvt]{defaults}{#1}{% \kvt@lazypreset{Column}{#1=##1}}% @@ -58,6 +64,7 @@ } \kvt@addtableprop{rowbg}{white..black!10} \kvt@addtableprop{headbg}{black!14} +\kvt@addchoicetableprop{shape}{multipage}{multipage,onepage} \kvt@addcolumnprop{default}{} \kvt@addcolumnprop{format}{\kvt@struttedcell} \kvt@addcolumnprop{align}{l} @@ -65,16 +72,17 @@ \kvt@addchoicecolumnprop{hidden}{false}{false,true} \kvtSet{} \newcommand\kvt@struttedcell[1]{\strut #1\strut} -\newcommand\NewKeyValTable[2]{% - \csdef{kvt@headings@#1}{}% - \csdef{kvt@alignments@#1}{}% - \csdef{kvt@colkeys@#1}{}% - \csdef{kvt@rowcount@#1}{1}% - \csdef{kvt@rows@#1}{}% - \listadd\kvt@alltables{#1}% +\newcommand\NewKeyValTable[3][]{% + \csdef{kvt@options@#2}{#1}% + \csdef{kvt@headings@#2}{}% + \csdef{kvt@alignments@#2}{}% + \csdef{kvt@colkeys@#2}{}% + \csdef{kvt@rowcount@#2}{1}% + \csdef{kvt@rows@#2}{}% + \listadd\kvt@alltables{#2}% \def\do##1{% - \kvt@parsecolspec{#1}##1::\@undefined}% - \mkv@dossvlist{#2}% + \kvt@parsecolspec{#2}##1::\@undefined}% + \mkv@dossvlist{#3}% } \def\kvt@parsecolspec#1#2:#3:#4\@undefined{% \def\kvt@@column{#1@#2}% @@ -95,33 +103,54 @@ \newcounter{kvtTypeRow} \newcounter{kvtTotalRow} \setcounter{kvtTotalRow}{1} +\newcommand\kvtLabel[2]{% + \protected@edef\@currentlabel + {\csname p@#1\endcsname\csname the#1\endcsname}% + \ifstrempty{#2}{}{\label{#2}}% + \csuse{the#1}} \newenvironment{KeyValTable}[2][]{% \bgroup% \def\Row##1{\kvt@AddKeyValRow{#2}{##1}\kvt@@row\\}% - \kvt@StartTable{#2}{#1}% - }{% - \bottomrule% - \end{longtabu}\egroup} + \kvt@SetOptions{#2}{#1}% + \csuse{kvt@StartTable@\cmdkvt@Table@shape}{#2}% +}{% + \csuse{kvt@EndTable@\cmdkvt@Table@shape}% + \egroup} \AfterEndEnvironment{KeyValTable}{% \csdef{kvt@rowcount@\kvt@@recenttable}{\thekvtTypeRow}} -\newcommand\kvt@StartTable[2]{% - \setkeys[kvt]{Table}{#2}% - \gdef\kvt@@recenttable{#1}% +\newcommand\kvt@SetOptions[2]{% + \bgroup\edef\kvt@@do{\egroup\noexpand% + \setkeys[kvt]{Table}% + {\csexpandonce{kvt@options@#1},\unexpanded{#2}}% + }\kvt@@do} +\newcommand\kvt@StartTable@onepage[1]{% + \kvt@StartTabu{tabu}{#1}} +\newcommand\kvt@StartTable@multipage[1]{% + \kvt@StartTabu{longtabu}{#1}} +\newcommand\kvt@StartTabu[2]{% + \gdef\kvt@@recenttable{#2}% \bgroup\edef\kvt@@do{\egroup \noexpand\taburowcolors[2] 2{\cmdkvt@Table@rowbg}% - \noexpand\begin{longtabu}{\csuse{kvt@alignments@#1}}% + \noexpand\begin{#1}{\csuse{kvt@alignments@#2}}% \noexpand\toprule \noexpand\rowcolor{\cmdkvt@Table@headbg}% }\kvt@@do% - \csuse{kvt@headings@#1}\\\midrule\endhead + \csuse{kvt@headings@#2}\\\midrule + \iftabu@long\expandafter\endhead\fi \setcounter{kvtRow}{1}% - \setcounter{kvtTypeRow}{\csuse{kvt@rowcount@#1}}% + \setcounter{kvtTypeRow}{\csuse{kvt@rowcount@#2}}% \everyrow{% \addtocounter{kvtRow}{1}% \addtocounter{kvtTypeRow}{1}% \addtocounter{kvtTotalRow}{1}% }% } +\newcommand\kvt@EndTable@onepage{% + \bottomrule% + \end{tabu}} +\newcommand\kvt@EndTable@multipage{% + \bottomrule% + \end{longtabu}} \newcommand\kvt@AddKeyValRow[2]{% \setkeys[KeyValTable]{#1}{#2}% \def\do##1{% @@ -135,12 +164,9 @@ }\dolistcsloop{kvt@colkeys@#1}% } \newcommand\ShowKeyValTable[2][]{% - \bgroup - \kvt@StartTable{#2}{#1}% - \csuse{kvt@rows@#2}% - \bottomrule - \end{longtabu}% - \egroup + \begin{KeyValTable}[#1]{#2}% + \csuse{kvt@rows@#2}% + \end{KeyValTable}% \csdef{kvt@rows@#2}{}} \newcommand\AddKeyValRow[2]{% \bgroup% -- cgit v1.2.3