Hello community, here is the log from the commit of package texlive-specs-k for openSUSE:Factory checked in at 2013-09-12 14:15:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/texlive-specs-k (Old) and /work/SRC/openSUSE:Factory/.texlive-specs-k.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "texlive-specs-k" Changes: -------- --- /work/SRC/openSUSE:Factory/texlive-specs-k/texlive-specs-k.changes 2013-07-24 15:19:43.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.texlive-specs-k.new/texlive-specs-k.changes 2013-09-12 14:17:54.000000000 +0200 @@ -1,0 +2,61 @@ +Tue Sep 10 15:25:02 UTC 2013 - werner@suse.de + +- Change /bin/env to /usr/bin/env in latexdiff tool below doc + +------------------------------------------------------------------- +Fri Aug 9 07:31:30 UTC 2013 - werner@suse.de + +- Be aware that the package texlive-ascii-font is the former + texlive-ascii + +------------------------------------------------------------------- +Thu Aug 8 14:43:07 UTC 2013 - werner@suse.de + +- Do not override TEXMFLOCAL with TEXMFMAIN as this is now TEXMFDIST + +------------------------------------------------------------------- +Wed Aug 7 11:01:50 UTC 2013 - werner@suse.de + +- Drop dependency freeglut-devel of texlive-asymptote (bnc#833498) + +------------------------------------------------------------------- +Mon Aug 5 10:24:25 UTC 2013 - werner@suse.de + +- Make sure that TEXMFMAIN is /usr/share/texmf now +- Replace texmf.cnf if really required that is do not install + as .rpmnew but move the old to .rpmold + +------------------------------------------------------------------- +Fri Aug 2 08:45:18 UTC 2013 - werner@suse.de + +- Move leipzig.tex from doc/latex/leipzig/leipzig.tex to + tex/latex/leipzig/leipzig.tex + +------------------------------------------------------------------- +Tue Jul 30 16:14:46 UTC 2013 - werner@suse.de + +- Update to TeXLive 2013 (timestamp 20130620) + + Distribution layout: the top-level texmf/ directory has been + merged into texmf-dist/, for simplicity. Both the TEXMFMAIN + and TEXMFDIST Kpathsea variables now point to texmf-dist. + + Many small language collections have been merged together, + to simplify installation. + + MetaPost: native support for PNG output and floating-point + (IEEE double) has been added. + + LuaTEX: updated to Lua 5.2, and includes a new library + (pdfscanner) to process external PDF page content, among + much else (see its web pages). + + XeTEX (also see its web pages for more): + The HarfBuzz library now used for font layout instead of ICU. + Graphite2 and HarfBuzz are used instead of SilGraphite for Graphite layout. + On Macs, Core Text is used instead of the (deprecated) ATSUI. + Prefer TrueType/OpenType fonts to Type1 when the names are the same. + Fix occasional mismatch in font finding between XeTEX and xdvipdfmx. + Support OpenType math cut-ins. + + xdvi: now uses FreeType instead of t1lib for rendering. + + microtype.sty: some support for XeTEX (protrusion) and LuaTEX + (protrusion, font expansion, tracking), among other enhancements. +- Update biblatex-biber to 1.7 +- Udpate biblatex of TeXLive 2013 to 2.7a + +------------------------------------------------------------------- Old: ---- kopka.doc.tar.xz New: ---- knuth.tar.xz koma-script-examples.doc.tar.xz koma-script-examples.tar.xz kpathsea.post ktv-texdata.doc.tar.xz ktv-texdata.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ texlive-specs-k.spec ++++++ --- /var/tmp/diff_new_pack.QjIO85/_old 2013-09-12 14:17:56.000000000 +0200 +++ /var/tmp/diff_new_pack.QjIO85/_new 2013-09-12 14:17:56.000000000 +0200 @@ -67,21 +67,26 @@ Source1029: knittingpattern.tar.xz Source1030: knuth.doc.tar.xz Source1031: knuth.source.tar.xz -Source1032: knuthotherfonts.tar.xz -Source1033: koma-moderncvclassic.doc.tar.xz -Source1034: koma-moderncvclassic.tar.xz -Source1035: koma-script-sfs.doc.tar.xz -Source1036: koma-script-sfs.tar.xz -Source1037: koma-script.tar.xz -Source1038: kopka.doc.tar.xz -Source1039: kpathsea.doc.tar.xz -Source1040: kpathsea.tar.xz -Source1041: kpathsea_cnf.dif -Source1042: kpfonts.doc.tar.xz -Source1043: kpfonts.tar.xz -Source1044: ksfh_nat.tar.xz -Source1045: kurier.doc.tar.xz -Source1046: kurier.tar.xz +Source1032: knuth.tar.xz +Source1033: knuthotherfonts.tar.xz +Source1034: koma-moderncvclassic.doc.tar.xz +Source1035: koma-moderncvclassic.tar.xz +Source1036: koma-script-examples.doc.tar.xz +Source1037: koma-script-examples.tar.xz +Source1038: koma-script-sfs.doc.tar.xz +Source1039: koma-script-sfs.tar.xz +Source1040: koma-script.tar.xz +Source1041: kpathsea.doc.tar.xz +Source1042: kpathsea.post +Source1043: kpathsea.tar.xz +Source1044: kpathsea_cnf.dif +Source1045: kpfonts.doc.tar.xz +Source1046: kpfonts.tar.xz +Source1047: ksfh_nat.tar.xz +Source1048: ktv-texdata.doc.tar.xz +Source1049: ktv-texdata.tar.xz +Source1050: kurier.doc.tar.xz +Source1051: kurier.tar.xz NoSource: 1000 NoSource: 1001 NoSource: 1002 @@ -124,11 +129,15 @@ NoSource: 1039 NoSource: 1040 NoSource: 1041 -NoSource: 1042 NoSource: 1043 NoSource: 1044 NoSource: 1045 NoSource: 1046 +NoSource: 1047 +NoSource: 1048 +NoSource: 1049 +NoSource: 1050 +NoSource: 1051 BuildRequires: buffer BuildRequires: ed BuildRequires: file ++++++ kantlipsum.doc.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/kantlipsum/README new/doc/latex/kantlipsum/README --- old/doc/latex/kantlipsum/README 2011-12-25 00:51:19.000000000 +0100 +++ new/doc/latex/kantlipsum/README 2012-10-17 13:26:39.000000000 +0200 @@ -2,14 +2,14 @@ by the "Kant generator for Python" by Mark Pilgrim, described in the book "Dive into Python". -This is version 0.5 of the package +This is version 0.6 of the package -Changes from earlier versions: +Changes from earlier version: -There's no user level change from the last released version 0.1; the -code has been cleaned up. +The `index' option for writing index entries has been added; the +code has been polished. - Copyright 2011 Enrico Gregorio + Copyright 2011-2012 Enrico Gregorio It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -41,5 +41,5 @@ it (the FAQ on CTAN in /help/uktug-FAQ gives more information about this magic place -2011/12/23 +2012/10/14 Enrico Gregorio Files old/doc/latex/kantlipsum/kantlipsum.pdf and new/doc/latex/kantlipsum/kantlipsum.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/kantlipsum.doc.tlpobj new/tlpkg/tlpobj/kantlipsum.doc.tlpobj --- old/tlpkg/tlpobj/kantlipsum.doc.tlpobj 2011-12-25 04:20:49.000000000 +0100 +++ new/tlpkg/tlpobj/kantlipsum.doc.tlpobj 2012-10-18 04:27:06.000000000 +0200 @@ -1,8 +1,8 @@ name kantlipsum.doc category Package -revision 24935 +revision 27994 shortdesc doc files of kantlipsum relocated 1 -docfiles size=122 +docfiles size=106 RELOC/doc/latex/kantlipsum/README RELOC/doc/latex/kantlipsum/kantlipsum.pdf ++++++ kantlipsum.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/kantlipsum/kantlipsum.sty new/tex/latex/kantlipsum/kantlipsum.sty --- old/tex/latex/kantlipsum/kantlipsum.sty 2011-12-25 00:51:19.000000000 +0100 +++ new/tex/latex/kantlipsum/kantlipsum.sty 2012-10-17 13:26:39.000000000 +0200 @@ -9,7 +9,7 @@ %% Do not distribute this file without also distributing the %% source files specified above. %% -%% File: kantlipsum.dtx (C) Copyright 2011 Enrico Gregorio +%% File: kantlipsum.dtx (C) Copyright 2011-2012 Enrico Gregorio %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -24,11 +24,11 @@ %% The released version of this bundle is available from CTAN. %% \RequirePackage{expl3} -\GetIdInfo$Id: kantlipsum.dtx 0.5 2011-12-23 12:00:00Z Enrico $ +\GetIdInfo$Id: kantlipsum.dtx 0.6 2012-10-14 12:00:00Z Enrico $ {Dummy text in Kantian style} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} -\@ifpackagelater { expl3 } { 2011/10/09 } +\@ifpackagelater { expl3 } { 2012/07/15 } { } { \PackageError { kantlipsum } { Support~package~l3kernel~too~old. } @@ -41,16 +41,24 @@ } \DeclareOption { par } { - \cs_set:Nn \kgl_star: { \c_space_tl } - \cs_set:Nn \kgl_nostar: { \par } + \cs_set_protected:Nn \kgl_star: { \c_space_tl } + \cs_set_protected:Nn \kgl_nostar: { \par } } + \DeclareOption{ nopar } { - \cs_set:Nn \kgl_star: { \par } - \cs_set:Nn \kgl_nostar: { \c_space_tl } + \cs_set_protected:Nn \kgl_star: { \par } + \cs_set_protected:Nn \kgl_nostar: { \c_space_tl } } + \DeclareOption{ numbers } - { \cs_set:Nn \kgl_number:n { #1\nobreakspace\textbullet\nobreakspace } } + { \cs_set_protected:Nn \kgl_number:n { #1\nobreakspace\textbullet\nobreakspace } } + +\bool_new:N \g_kgl_makeindex_bool +\bool_gset_false:N \g_kgl_makeindex_bool +\DeclareOption{ index } + { \bool_gset_true:N \g_kgl_makeindex_bool } + \cs_new_eq:NN \kgl_number:n \use_none:n \ExecuteOptions{par} \ProcessOptions \scan_stop: @@ -65,7 +73,7 @@ \int_new:N \l_kgl_start_int \int_new:N \l_kgl_end_int \seq_new:N \g_kgl_pars_seq -\seq_gput_right:Nx \g_kgl_pars_seq {This~is~the~Kant~lipsum~generator.} +\seq_new:N \g_kgl_words_seq \NewDocumentCommand{\kant}{s>{\SplitArgument{1}{-}}O{1-7}} { \group_begin: @@ -83,31 +91,39 @@ \cs_set_eq:NN \kgl_par: \prg_do_nothing: \cs_if_exist:NTF #1 { - \msg_error:nnx {kantlipsum}{already-defined} - {\token_to_str:N #1} + \msg_error:nnn {kantlipsum} {already-defined} {#1} + } + { + \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \g_kgl_pars_seq {#2} } + \cs_new:Npx #1 { \l_tmpa_tl } } - { \cs_new:Npx #1 { \kgl_use:n {#2} } } \group_end: } -\cs_new:Nn \kgl_process:nn +\cs_new_protected:Nn \kgl_process:nn { \int_set:Nn \l_kgl_start_int {#1} \IfNoValueTF{#2} { \int_set:Nn \l_kgl_end_int {#1} } { \int_set:Nn \l_kgl_end_int {#2} } } -\cs_new:Nn \kgl_print: +\cs_new_protected:Nn \kgl_print: { - \prg_stepwise_function:nnnN + \int_step_function:nnnN {\l_kgl_start_int} {1} {\l_kgl_end_int} \kgl_use:n } \cs_new:Nn \kgl_use:n { \kgl_number:n {#1} + \bool_if:NT \g_kgl_makeindex_bool + { + \use:x { \exp_not:N \index{ \seq_item:Nn \g_kgl_words_seq {#1} } } + } \seq_item:Nn \g_kgl_pars_seq {#1} } -\cs_new:Nn \kgl_newpara:n +\cs_new_protected:Nn \kgl_newpara:n { \seq_gput_right:Nn \g_kgl_pars_seq {#1\kgl_par:} } +\cs_new_protected:Nn \kgl_newword:n + { \seq_gput_right:Nn \g_kgl_words_seq {#1} } \group_begin: \char_set_catcode_space:n {`\ } \kgl_newpara:n {As any dedicated reader can clearly see, the Ideal of @@ -2464,7 +2480,7 @@ section, to avoid all misapprehension, it is necessary to explain that metaphysics, on the contrary, occupies part of the sphere of the thing in itself concerning the existence of our synthetic judgements in -general. } +general.} \kgl_newpara:n {As is evident upon close examination, I assert that, so far as regards metaphysics, our knowledge proves the validity of, @@ -3017,9 +3033,173 @@ and time; still, the noumena, in the case of necessity, constitute the whole content of philosophy.} +\kgl_newword:n {Ideal} +\kgl_newword:n {noumena} +\kgl_newword:n {Aristotle} +\kgl_newword:n {transcendental} +\kgl_newword:n {metaphysics} +\kgl_newword:n {reason} +\kgl_newword:n {science} +\kgl_newword:n {necessity} +\kgl_newword:n {Categories} +\kgl_newword:n {philosophy} +\kgl_newword:n {knowledge} +\kgl_newword:n {regress} +\kgl_newword:n {paralogism} +\kgl_newword:n {empirical} +\kgl_newword:n {space} +\kgl_newword:n {manifold} +\kgl_newword:n {understanding} +\kgl_newword:n {aesthetic} +\kgl_newword:n {noumena} +\kgl_newword:n {sphere} +\kgl_newword:n {time} +\kgl_newword:n {practical reason} +\kgl_newword:n {perception} +\kgl_newword:n {things in themselves} +\kgl_newword:n {doctrine} +\kgl_newword:n {regress} +\kgl_newword:n {mystery} +\kgl_newword:n {existence} +\kgl_newword:n {contradiction} +\kgl_newword:n {a priori} +\kgl_newword:n {natural causes} +\kgl_newword:n {analysis} +\kgl_newword:n {apperception} +\kgl_newword:n {Antinomies} +\kgl_newword:n {Transcendental Deduction} +\kgl_newword:n {phenomena} +\kgl_newword:n {formal logic} +\kgl_newword:n {soul} +\kgl_newword:n {misapprehension} +\kgl_newword:n {elsewhere} +\kgl_newword:n {theology} +\kgl_newword:n {employment} +\kgl_newword:n {logic} +\kgl_newword:n {practical reason} +\kgl_newword:n {theoretical sciences} +\kgl_newword:n {a posteriori} +\kgl_newword:n {mystery} +\kgl_newword:n {philosophy} +\kgl_newword:n {things in themselves} +\kgl_newword:n {experience} +\kgl_newword:n {contradictory} +\kgl_newword:n {Categories} +\kgl_newword:n {perceptions} +\kgl_newword:n {Galileo} +\kgl_newword:n {apperception} +\kgl_newword:n {empirical objects} +\kgl_newword:n {judgements} +\kgl_newword:n {phenomena} +\kgl_newword:n {power} +\kgl_newword:n {hypothetical principles} +\kgl_newword:n {transcendental logic} +\kgl_newword:n {doctrine} +\kgl_newword:n {understanding} +\kgl_newword:n {totality} +\kgl_newword:n {manifold} +\kgl_newword:n {inductive judgements} +\kgl_newword:n {Transcendental Deduction} +\kgl_newword:n {analytic unity} +\kgl_newword:n {Hume} +\kgl_newword:n {canon} +\kgl_newword:n {knowledge} +\kgl_newword:n {universal} +\kgl_newword:n {section} +\kgl_newword:n {body} +\kgl_newword:n {ignorance} +\kgl_newword:n {sense perceptions} +\kgl_newword:n {natural reason} +\kgl_newword:n {exception} +\kgl_newword:n {ampliative judgements} +\kgl_newword:n {experience} +\kgl_newword:n {Categories} +\kgl_newword:n {analysis} +\kgl_newword:n {philosophy} +\kgl_newword:n {apperception} +\kgl_newword:n {paralogism} +\kgl_newword:n {ignorance} +\kgl_newword:n {true} +\kgl_newword:n {space} +\kgl_newword:n {Ideal} +\kgl_newword:n {accordance} +\kgl_newword:n {regress} +\kgl_newword:n {experience} +\kgl_newword:n {a priori} +\kgl_newword:n {disjunctive} +\kgl_newword:n {soul} +\kgl_newword:n {understanding} +\kgl_newword:n {analytic unity} +\kgl_newword:n {phenomena} +\kgl_newword:n {practical reason} +\kgl_newword:n {cause} +\kgl_newword:n {manuals} +\kgl_newword:n {dedicated reader} +\kgl_newword:n {a posteriori} +\kgl_newword:n {employment} +\kgl_newword:n {natural theology} +\kgl_newword:n {manifold} +\kgl_newword:n {transcendental aesthetic} +\kgl_newword:n {close} +\kgl_newword:n {full} +\kgl_newword:n {Aristotle} +\kgl_newword:n {clue} +\kgl_newword:n {me} +\kgl_newword:n {account} +\kgl_newword:n {things} +\kgl_newword:n {sense} +\kgl_newword:n {intelligible} +\kgl_newword:n {understanding} +\kgl_newword:n {Categories} +\kgl_newword:n {never} +\kgl_newword:n {apperception} +\kgl_newword:n {Ideal} +\kgl_newword:n {need} +\kgl_newword:n {space} +\kgl_newword:n {virtue} +\kgl_newword:n {Hume} +\kgl_newword:n {still} +\kgl_newword:n {whatsoever} +\kgl_newword:n {even} +\kgl_newword:n {sphere} +\kgl_newword:n {position} +\kgl_newword:n {ignorance} +\kgl_newword:n {word} +\kgl_newword:n {phenomena} +\kgl_newword:n {theology} +\kgl_newword:n {mystery} +\kgl_newword:n {Categories} +\kgl_newword:n {perception} +\kgl_newword:n {power} +\kgl_newword:n {experience} +\kgl_newword:n {never-ending} +\kgl_newword:n {analytic} +\kgl_newword:n {itself} +\kgl_newword:n {a priori} +\kgl_newword:n {rule} +\kgl_newword:n {Transcendental Deduction} +\kgl_newword:n {empirical conditions} +\kgl_newword:n {knowledge} +\kgl_newword:n {disjunctive} +\kgl_newword:n {transcendental} +\kgl_newword:n {science} +\kgl_newword:n {falsified} +\kgl_newword:n {reader} +\kgl_newword:n {blind} +\kgl_newword:n {employment} +\kgl_newword:n {discipline} +\kgl_newword:n {function} +\kgl_newword:n {careful} +\kgl_newword:n {Aristotle} +\kgl_newword:n {Categories} +\kgl_newword:n {part} +\kgl_newword:n {noumena} +\kgl_newword:n {doubt} +\kgl_newword:n {duck} +\kgl_newword:n {Kant} \group_end: -\msg_info:nnx{kantlipsum}{how-many} - { \int_eval:n {\seq_length:N \g_kgl_pars_seq - 1} } +\msg_info:nnx {kantlipsum} {how-many} + { \int_eval:n {\seq_count:N \g_kgl_pars_seq} } %% %% %% End of file `kantlipsum.sty'. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/kantlipsum.tlpobj new/tlpkg/tlpobj/kantlipsum.tlpobj --- old/tlpkg/tlpobj/kantlipsum.tlpobj 2011-12-25 04:20:50.000000000 +0100 +++ new/tlpkg/tlpobj/kantlipsum.tlpobj 2012-10-18 04:27:07.000000000 +0200 @@ -1,15 +1,15 @@ name kantlipsum category Package -revision 24935 +revision 27994 shortdesc Generate sentences in Kant's style. relocated 1 longdesc The package spits out sentences in Kantian style; the text is longdesc provided by the Kant generator for Python by Mark Pilgrim, longdesc described in the book "Dive into Python". The package is longdesc modelled on lipsum, and may be used for similar purposes. -runfiles size=46 +runfiles size=47 RELOC/tex/latex/kantlipsum/kantlipsum.sty catalogue-ctan /macros/latex/contrib/kantlipsum -catalogue-date 2011-12-24 01:22:03 +0100 +catalogue-date 2012-03-12 20:30:51 +0100 catalogue-license lppl1.3 catalogue-version 0.5 ++++++ keyreader.doc.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/keyreader/README new/doc/latex/keyreader/README --- old/doc/latex/keyreader/README 2012-01-19 23:47:43.000000000 +0100 +++ new/doc/latex/keyreader/README 2012-11-06 23:34:41.000000000 +0100 @@ -6,7 +6,11 @@ VERSION -Version 0.4b, January 2012 +Version 0.5b, 2012/11/06 + +LOCATION ON CTAN + +macros/latex/contrib/keyreader SUMMARY @@ -16,7 +20,7 @@ It provides a compact and robust interface to the xkeyval package. The xkeyval package's commands for setting keys are made more robust, in the sense that outer braces in key values are preserved throughout -parsing and unbalanced conditionals can be parsed as part of a key's +parsing and unbalanced conditionals can be parsed as part of a key's value. In the case of choice keys defined by the command \krddefinekeys, each admissible value of the key can be associated with a callback, unlike in the xkeyval package. @@ -26,6 +30,10 @@ package is based, has been quite stable for some years (its inherent shortcomings not withstanding). +RELATED PACKAGES + +xkeyval, ltxkeys, skeyval + LICENSE Copyright (c) 2010-2012 Ahmed Musa diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/keyreader/keyreader-example1.tex new/doc/latex/keyreader/keyreader-example1.tex --- old/doc/latex/keyreader/keyreader-example1.tex 1970-01-01 01:00:00.000000000 +0100 +++ new/doc/latex/keyreader/keyreader-example1.tex 2012-11-06 23:34:41.000000000 +0100 @@ -0,0 +1,118 @@ +\documentclass{article} +\usepackage{keyreader}[2012/11/01] +\usepackage{xcolor} +\usepackage{graphicx} +\makeatletter + +% Choice keys with braced default: +\krddefinekeys[JKV]{jorg}{% + choice/key1/{A/X}/{ + A/X.do=\def\currcolor{blue}, + A/Y.do=\def\currcolor{green}, + B/X.do=\def\currcolor{red}, + B/Y.do=\def\currcolor{magenta} + } + /\def\val{Value of key1: #1} + ; + choice/align/justified/{ + center.do=\def\curralign##1{\hfil##1\hfil}, + right.do=\def\curralign##1{\hfill##1}, + left.do=\def\curralign##1{##1\hfill}, + justified.do=\let\curralign\@iden + } + ; +} +\krdpresetkeys[JKV]{jorg}{key1=A/X,align=justified} +\newcommand\jorgcommand[2][]{% + \krdsetkeys[JKV]{jorg}{#1}% + \endgraf\bigskip + \parbox{\hsize}{\centering\textbf{\textcolor{\currcolor}{\val}}}% + \endgraf + \parbox{\hsize}{\curralign{\textcolor{\currcolor}{#2}}}% +} + +% Shadow box: +\newdimen\shadowsize +\krddefinekeys*[KV]{ebox}[mp@]{% + bool/frame/true; + bool+/shadow/true// + \mp@shadowtrue + \@@warning{Invalid value for 'shadow': 'true' assumed} + ; + cmd/framecolor/black; + cmd/shadecolor/white; + cmd/shadowcolor/gray; + cmd/framesize/.4pt; + cmd/boxsize/.1\columnwidth; + cmd/shadowsize/1pt; + choice+/align/center/ + center.do=\let\mp@alignright\hfil\let\mp@alignleft\hfil, + right.do=\let\mp@alignright\hfill\let\mp@alignleft\relax, + left.do=\let\mp@alignright\relax\let\mp@alignleft\hfill, + justified.do=\let\mp@alignright\relax\let\mp@alignleft\relax + // + \let\mp@alignright\hfil\let\mp@alignleft\hfil + \@@warning{Invalid value for 'align'; 'center' used} + ; +} +\savevaluekeys[KV]{ebox}{frame,framecolor,framesize} +\krdpresetkeys[KV]{ebox}{% + frame,framecolor=black,shadecolor=white,framesize=0.5pt,boxsize,align +} +\krdpostsetkeys[KV]{ebox}{% + shadow=\usevalue{frame},shadowcolor=\usevalue{framecolor}!40, + shadowsize=\usevalue{framesize}*4 +} +\newcommand*\ebox[2][]{% + \krdsetkeys[KV]{ebox}{#1}% + \begingroup + \ifmp@frame + \fboxrule=\dimexpr\mp@framesize\relax + \else + \fboxrule=0pt + \fi + \ifmp@shadow + \shadowsize=\dimexpr\mp@shadowsize\relax + \else + \shadowsize=0pt + \fi + \setbox0=\hbox{% + \fcolorbox{\mp@framecolor}{\mp@shadecolor}{% + \hbox to\mp@boxsize{% + \mp@alignright #2\mp@alignleft + }% + }% + }% + \hskip\shadowsize + \color{\mp@shadowcolor}% + \rule[-\dp0]{\wd0}{\the\dimexpr\ht0+\dp0\relax}% + \llap{\raisebox{\shadowsize}{\box0\hskip\shadowsize}}% + \endgroup +} +\makeatother + +\begin{document} +\parindent-60pt +% Shadow boxes: +\scalebox{2}{% + \ebox[shadecolor=brown!70]{ebox1}% + \ebox[framecolor=magenta,boxsize=2cm,align=right]{ebox2}% + \ebox[shadow=false,framesize=1pt,framecolor=red,boxsize=1.5cm,align=left]{ebox3}% + \ebox[framesize=1pt,framecolor=green,shadowcolor=blue]{ebox4}% + \ebox[frame=false,shadow,shadowcolor=yellow,framesize=.5pt]{ebox5}% +} + +% Choice keys: +\def\name#1{\texttt{\textcolor{black}{#1}}} +\def\atext{% + \name{choice} keys of the \name{keyreader} package. +} +\jorgcommand[key1=A/X,align=justified]{\atext} +\jorgcommand[key1=A/Y,align=center]{\atext} +\jorgcommand[key1=B/X,align=right]{\atext} +\jorgcommand[key1=B/Y,align=left]{\atext} +\jorgcommand{\atext} +% Invalid value for key1 ('x+y' not allowed): +% \jorgcommand[key1=x+y]{\atext} + +\end{document} Files old/doc/latex/keyreader/keyreader-guide.pdf and new/doc/latex/keyreader/keyreader-guide.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/keyreader/keyreader-guide.tex new/doc/latex/keyreader/keyreader-guide.tex --- old/doc/latex/keyreader/keyreader-guide.tex 2012-01-19 23:47:43.000000000 +0100 +++ new/doc/latex/keyreader/keyreader-guide.tex 2012-11-06 23:34:41.000000000 +0100 @@ -29,7 +29,7 @@ \title{} \titlenotes[t1,t2]{% The package is available at \url{\titleurltext}.\sep - This user manual corresponds to version~0.4b of the package. + This user manual corresponds to version~0.5 of the package. } \subtitle{} \titleurl{http://mirror.ctan.org/macros/latex/contrib/keyreader/} @@ -39,7 +39,8 @@ } \def\abstractname{\textsf{Summary}} \begin{abstract} - The \pkg'{keyreader} provides robustness and some extensions to the \pkg'{xkeyval}. It preserves braces in key values throughout parsing and saves estate when defining keys. Also, the command \fx{\krdsetkeys} allows unbalanced conditionals to be parsed as values of keys. Furthermore, when the command \fx{\krddefinekeys} is used, keys are initialized as soon as they are defined, and, unlike in the \pkg'{xkeyval}, admissible alternate values of choice keys can have individual callbacks. The looping macros of the \pkg'{xkeyval} are redefined, to increase robustness. The command \fx{\define@key} of the \pkg'{xkeyval} has had two of its subordinate commands redefined, to offset a complaint about the grabbing of the key's callback when defining keys with \fx{\define@key}. This user manual assumes that the reader is familiar with some of the functions and user interfaces of the \pkg'{xkeyval}. + \small + The \pkg{keyreader} bundle is platform independent \latex package that provides robustness and some extensions to the \pkg'{xkeyval}. However, it isn't completely independent of the \pkg'{xkeyval}. It preserves braces in key values throughout parsing and saves estate when defining keys. Also, the command \fx{\krdsetkeys} allows unbalanced conditionals to be parsed as values of keys. Furthermore, when the command \fx{\krddefinekeys} is used, keys are initialized as soon as they are defined, and, unlike in the \pkg'{xkeyval}, admissible alternate values of choice keys can have individual callbacks. The looping macros of the \pkg'{xkeyval} are redefined, to increase robustness. The command \fx{\define@key} of the \pkg'{xkeyval} has had two of its subordinate commands redefined, to offset a complaint about the grabbing of the key's callback when defining keys with \fx{\define@key}. This user manual assumes that the reader is familiar with some of the functions and user interfaces of the \pkg'{xkeyval}. The \fx{\krdkeys} command ... Unlike the \pkg'{xkeyval}, the \pkg'{keyreader} can be loaded before \hx{\documentclass} and this feature doesn't affect its ability to later filter class options-list for options that have values. \end{abstract} \let\licensename\relax @@ -68,13 +69,13 @@ The \pkg'{keyreader} predated the \pkg'{ltxkeys} and was developed to make key parsing by the \pkg'{xkeyval} robust (in the sense of preserving outer braces in key values throughout parsing and enabling the parsing of key values with unbalanced conditionals), as well as reduce the amount of typing that is required for defining several keys. To achieve robustness in key parsing, the \fx{\setkeys} command of the \pkg'{xkeyval} has been patched and renamed \fx{\krdsetkeys}. The \pkg'{xkeyval}'s \fx{\setkeys} remains unchanged, to avoid breaking existing codes that rely on it's current form. Some other low-level commands of \pkg'{xkeyval} have been patched and renamed. The \pkg'{keyreader} provides commands for compactly defining and setting all types of key (ordinary, command, boolean, and choice). Also, the \pkg'{keyreader} introduces the concept of callbacks for the alternate/admissible values of choice keys defined via the command \fx{\krddefinekeys}. Moreover, when \fx{\krddefinekeys} is used, keys are automatically set/initialized as soon as they are defined. This provides default definitions for the key macros and functions. Boolean keys are initialized with a value of \hx{false} irrespective of their default values. -The \pkg'{keyreader} has been used as a development platform for the \pkg'{ltxkeys} because the \pkg'{xkeyval}, on which the \pkg'{keyreader} is based, has been quite stable for some years, its inherent -shortcomings not withstanding. Has the user ever tried to pass to \pkg'{xkeyval}'s \fx{\setkeys} an unbalanced conditional as the value of a key? He/she will quickly be hit by the error message \quoted{! Incomplete \hx{\ifx}; all text was ignored after line \ldots}, or something similar. This limitation has been removed by the \pkg'{keyreader}. +The \pkg'{keyreader} has been used as a development platform for the \pkg'{ltxkeys} because the \pkg'{xkeyval}, on which the \pkg'{keyreader} is based, has been quite stable for some years, its inherent shortcomings not withstanding. Has the user ever tried to pass to \pkg'{xkeyval}'s \fx{\setkeys} an unbalanced conditional as the value of a key? He/she will quickly be hit by the error message \quoted{! Incomplete \hx{\ifx}; all text was ignored after line \ldots}, or something similar. This limitation has been removed by the \pkg'{keyreader}\footnote{But, in general, parsing unbalanced conditionals isn't advisable in \tex.}. -\docsection(sec:user-commands)<user commands>{User commands} +The packages in the \pkg{keyreader} bundle are ... -\docsubsection(sec:definingkeys){Defining keys} + +\docsection(sec:definingkeys){Defining keys} The syntax for defining keys is: @@ -83,7 +84,18 @@ \finish{newmacro} \fxim*{\krddefinekeys} -The optional \ang{kprefix} and mandatory \ang{kfamily} have unambiguous connotations. The optional \ang{mprefix} is the macro prefix, in the parlance of the \pkg'{xkeyval}. The default values of \ang{kprefix} and \ang{mprefix} are \ffx'{KRD,krdmp@}, respectively. +The optional \ang{kprefix} and mandatory \ang{kfamily} have unambiguous connotations. The optional \ang{mprefix} is the macro prefix, in the parlance of the \pkg'{xkeyval}. The default values of \ang{kprefix} and \ang{mprefix} are \ffx'{KV,krdmp}, respectively. + +\start'{macro}[Syntax of key keylist] +\krddefinekeys[<pref>]{<fam>}[<mp>]{ + ord/<key>/<dft>/<f1>; + cmd/<key>/<dft>/<f1>; + bool/<key>/<dft>/<f1>; + bool+/<key>/<dft>/<f1>/<f2>; + choice/<key>/<dft>/<nominations>/<f1>; + choice+/<key>/<dft>/<nominations>/<f1>/<f2>; +} +\finish{macro} In the case of ordinary, command and boolean keys, \ang{keylist} has the syntax @@ -126,7 +138,7 @@ Choice keys defined by \fx{\krddefinekeys} are of the \stform of choice keys (see the \pkg'{xkeyval} guide). Hence they will always convert the user input into lowercase before matching it against the alternate/admissible list of values specified at key definition time. The matching, as done by \fx{\krdsetkeys}, is catcode-agnostic. -\docsubsection(sec:settingkeys){Setting keys} +\docsection(sec:settingkeys){Setting keys} The command \fx{\krdsetkeys} is a more robust counterpart of the \pkg'{xkeyval}'s \fx{\setkeys}, in the sense that it preserves all outer braces in the values of keys and allows the parsing of key values with unbalanced conditionals. The new command \fx{\krdsetkeys} has the same syntax as the original \fx{\setkeys} of the \pkg'{xkeyval}, namely @@ -139,10 +151,33 @@ The command \fx{\krdsetkeys} isn't exactly \pkg'{xkeyval}'s \fx{\setkeys}, since the former is more robust and avoids the selective sanitization of \keyval list that is done by \fx{\setkeys}. The macro \fx{\krdsetkeys} \quoted{normalizes} the \keyval or comma-separated key list. Therefore, users of the \pkg'{keyreader} should always call the command \fx{\krdsetkeys} instead of \fx{\setkeys}. Both have the same user interface. The \fx{\setkeys} command of the \pkg'{xkeyval}'s remains unchanged. -The \pkg'{xkeyval}'s command \fxi{\setrmkeys}, which sets \quoted{remaining keys}, has also been modified to \fxi{\krdsetrmkeys}, while keeping \fx{\setrmkeys} unchanged. Users of the \pkg'{keyreader} should use \fx{\krdsetrmkeys} in place of \fx{\setrmkeys}. +The \pkg'{xkeyval}'s command \fxi{\setrmkeys}, which sets \quoted{remaining keys}, has been replaced by \fxi{\krdsetrmkeys}, while keeping \fx{\setrmkeys} unchanged. Users of the \pkg'{keyreader} should use \fx{\krdsetrmkeys} in place of \fx{\setrmkeys}. + +\start*+{example}[\ifkrdnovalue] +\krdordkey[KV]{fam}{keya}[default]{% + \ifkrdnovalue + \krd@err{No user value supplied for key `keya'} + {Key `KV/fam/keya' requires a user value.}% + \else + \edef\userinput{\unexpanded{#1}}% + \fi +} +\krdsetkeys[KV]{fam}{keya} +\krdsetkeys[KV]{fam}{keya=value} +\finish{example} + + +\docsection(sec:disable-keys)<disabling keys>{Disabling keys} + +The command \fxim{\krddisablekeys} has the same use syntax as the \fxi{\disable@keys} command of the \pkg'{xkeyval}, but will issue an error (instead of a warning) when an attempt is made to set a disabled key. + + +\docsection(sec:options-processing)<options processing>{Options processing} +The commands \ffxi'{\krdDeclareOption, \krdExecuteOptions, \krdProcessOptions} are replacements for \ffxi'{\DeclareOptionX, \ExecuteOptionsX, \ProcessOptionsX} of the \pkg'{xkeyval}. -\docsubsection(sec:examples)<examples>{Examples} + +\docsection(sec:examples)<examples>{Some examples} \start*+{example}[\krddefinekeys, \krdsetkeys] \krddefinekeys*[KV]{fam}[pnt@]{% @@ -154,8 +189,9 @@ center.do=\def\vcp@align{center}\def\w##1{#1##1}, left.do=\def\vcp@align{flushleft}, right.do=\def\vcp@align{flushright}, - justified.do=\def\vcp@align{relax}/ - \ifkrddef\else + justified.do=\def\vcp@align{relax} + / + \ifkrdindef\else \def\xa##1{#1##1} \fi; ord/keye/{keye-default}/\def\y##1{#1##1} @@ -163,9 +199,26 @@ \krdsetkeys[KV]{fam}[keyb]{keya={green},keyb=\@iden,keyc=false,keyd=left} |com(Setting keys with values having unbalanced conditionals:) \krdsetkeys[KV]{fam}{keye={\iffalse keye-value}} + +\krddefinekeys*[KV]{fam}[mp@]{% + ord/keya/default-a/\def\x##1{#1*##1}; + bool/keyb/true/; + bool+/keyc/true//\@latexerr{Invalid value for keyc}\@ehd; + cmd/keyd/black; + choice+/keye/center/ + center.do=\let\mp@alignright\hfil\let\mp@alignleft\hfil, + right.do=\let\mp@alignright\hfill\let\mp@alignleft\relax, + left.do=\let\mp@alignright\relax\let\mp@alignleft\hfill, + // + \let\mp@alignright\hfil\let\mp@alignleft\hfil + \@@warning{Invalid value for 'align'; 'center' assumed} + ; + ord/keyf/.na/\def\y##1{#1*##1}; |com(No default.) + bool+/keyg/true; |com(Will raise error when user input is invalid.) +} \finish{example} -The braces around \quoted{green}, the value of \fx{keya}, will be preserved throughout parsing. It should be remembered that keys are automatically set as soon as they are defined by \fx{\krddefinekeys}. The boolean \fx{\ifkrddef} is true when \fx{\krddefinekeys} is defining keys, and false otherwise. The essence of it is that since keys are set as soon as they are defined by \fx{\krddefinekeys}, some actions should not be executed at this time, until the keys are being set by the user. +The braces around \quoted{green}, the value of \fx{keya}, will be preserved throughout parsing. It should be remembered that keys are automatically set as soon as they are defined by \fx{\krddefinekeys}. The boolean \fx{\ifkrdindef} is true when \fx{\krddefinekeys} is defining keys, and false otherwise. The essence of it is that since keys are set as soon as they are defined by \fx{\krddefinekeys}, some actions should not be executed at this time, until the keys are being set by the user. Using the keys defined in the above example, let us make \qcomma and \qequal active and see how the \pkg'{keyreader} will deal with them. @@ -221,10 +274,10 @@ shadowsize=\usevalue{framesize}*4 } \newcommand*\ebox[2][]{% - \setkeys[KV]{ebox}{#1}% - |com(What happens if we use the following, instead of the above \setkeys?) + \krdsetkeys[KV]{ebox}{#1}% + |com(What happens if we use the following, instead of the above \krdsetkeys?) |com(Preset and postset keys wouldn't be set when `#1' is empty:) - |com(\krdifblank{#1}{}{\setkeys[KV]{ebox}{#1}}) + |com(\krdifblank{#1}{}{\krdsetkeys[KV]{ebox}{#1}}) \begingroup \ifmp@frame \fboxrule=\dimexpr\mp@framesize\relax @@ -264,28 +317,22 @@ \begin{figure}[h!] \caption{Output of \sref{example:1}\label{fig:1}} \centerline{% - \includegraphics[viewport=141 642 416 674,clip,scale=1] - {keyreader-example1}% + \includegraphics[viewport=141 642 416 674,clip,scale=1]{keyreader-example1}% } \end{figure} -\docsubsection(sec:disable-keys)<disabling keys>{Disabling keys} - -The command \fxim{\krddisablekeys} has the same use syntax as the \fxi{\disable@keys} command of the \pkg'{xkeyval}, but will issue an error (instead of a warning) when an attempt is made to set a disabled key. - - -\docsubsection(sec:options-processing)<options processing>{Options processing} - -The commands \ffxi'{\krdDeclareOption, \krdExecuteOptions, \krdProcessOptions} are aliases for -\ffxi'{\DeclareOptionX, \ExecuteOptionsX, \ProcessOptionsX} of the \pkg'{xkeyval}. - - \docsection(sec:version-hist){Version history} The following change history highlights significant changes that affect user utilities and interfaces; changes of technical nature are not documented in this section. \begin{versionhist} + \begin{version}{0.5b}{2012/11/06} + \item Choice keys can't have outer-braced default or user-supplied values. Outer-braced values may not have been given in the state pattern. Hence the outer braces are removed automatically internally before matching the value against the singleton. Also, key values are no longer converted into lowercase before matching against the state pattern. + \end{version} + \begin{version}{0.5}{2012/10/10} + \item The \pkg'{keyreader} can now be loaded before \fx{\documentclass}. + \end{version} \begin{version}{0.4b}{2012/01/14} \item The command \fx{\krdsetkeys} can now parse key values with unbalanced conditionals. \end{version} @@ -293,7 +340,7 @@ \item The key list in \fx{\krddefinekeys} shouldn't have been normalized with respect to forward slash (/). \end{version} \begin{version}{0.4}{2011/12/20} - \item Several of the former functions of the package have been transferred to the \pkg'{ltxkeys} with even more robustness. The package now provides mainly a compact and robust interface to the features of the \pkg'{xkeyval}. + \item Several of the former functions of the package have been transferred to the independent \pkg'{ltxkeys} with even more robustness. The package now provides mainly a compact and robust interface to the features of the \pkg'{xkeyval} for users of \pkg'{xkeyval}. \end{version} \begin{version}{0.3}{2011/03/26} \item Bug fix. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/keyreader.doc.tlpobj new/tlpkg/tlpobj/keyreader.doc.tlpobj --- old/tlpkg/tlpobj/keyreader.doc.tlpobj 2012-03-05 04:32:04.000000000 +0100 +++ new/tlpkg/tlpobj/keyreader.doc.tlpobj 2012-11-07 04:37:29.000000000 +0100 @@ -1,9 +1,10 @@ name keyreader.doc category Package -revision 25563 +revision 28195 shortdesc doc files of keyreader relocated 1 -docfiles size=67 +docfiles size=64 RELOC/doc/latex/keyreader/README + RELOC/doc/latex/keyreader/keyreader-example1.tex RELOC/doc/latex/keyreader/keyreader-guide.pdf RELOC/doc/latex/keyreader/keyreader-guide.tex ++++++ keyreader.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/keyreader/keyreader-guide.cfg new/tex/latex/keyreader/keyreader-guide.cfg --- old/tex/latex/keyreader/keyreader-guide.cfg 2012-01-19 23:47:43.000000000 +0100 +++ new/tex/latex/keyreader/keyreader-guide.cfg 1970-01-01 01:00:00.000000000 +0100 @@ -1,61 +0,0 @@ -\ProvidesFile{keyreader-guide.cfg}% - [2012/01/14 v0.0.3 Configuration file for keyreader-guide (AM)] - -\amltxoptions{% - geometryoptions = {left=3cm,right=3cm,top=2.5cm,% - bottom=2.5cm,includeheadfoot}, - reviewdocument = false, - parindent = false, - toc = false, - frontpagestyle = empty, - pretitleskip = 0ex, - posttitleskip = 1ex, - presuptitleskip = 0ex, - postsuptitleskip = 0ex, - presubtitleskip = 0ex, - postsubtitleskip = 0ex, - natbiboptions = {numbers,sort&compress}, - cmdcolor = xmagenta1, - stylecolor = xgreen1, - speccolor = teal, - sectionheadcolor = blue -} -\fancypagenos[% - textalign = center, - show-on-page-one = false, - show-page-numbers = true, - show-headrule = true, - show-footrule = false, - y-position = -.44\paperheight, - x-position = 0, - scale = 1, - angle = 0, - style = \textsc{Page~\thepage~of~\pageref{xwmlastpage}}, - left-header = The \textcolor{macrocolor}{keyreader} package, - right-header = \ttcl{black}{\today} -] - -\newwatermark -[page=1,fontfamily=phv,fontsize=11pt,fontseries=m,align=center, - coordunit=pc,width=.978\paperwidth,angle=0,scale=1,xpos=-.62,ypos=31.2]{% - \xwmcolorbox[framesep=5pt,framerule=2pt,fillcolor=white, - outerframecolor=Orange,innerframecolor=brown,textalign=justified, - width=.978\paperwidth]{% - \normalfont\small\color{black}\vspace*{-1ex}% - \parbox{.95\paperwidth}{% - \vspace*{2ex}% - \begin{center}% - \sffamily\bfseries - \scalebox{4}{The \textcolor{blue}{keyreader} Package\titleref{t1,t2}}% - \endgraf\vspace*{1ex}% - \scalebox{2}{A robust interface to \pkg'{xkeyval}}% - \endgraf\vspace*{1ex}% - {\normalsize\normalfont\sffamily - \copyright\ Ahmed Musa 2010-\number\year}% - \end{center}% - \vspace*{2ex}% - }% - }% -} - -\endinput diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/keyreader/keyreader.sty new/tex/latex/keyreader/keyreader.sty --- old/tex/latex/keyreader/keyreader.sty 2012-03-05 01:56:54.000000000 +0100 +++ new/tex/latex/keyreader/keyreader.sty 2012-11-06 23:34:41.000000000 +0100 @@ -1,6 +1,5 @@ %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% -% % -% This is file 'keyreader.sty', version 0.4b, January 2012. % +% This is file 'keyreader.sty', version 0.5b, 2012/11/06. % % % % This package and accompanying files may be distributed and/or % % modified under the conditions of the LaTeX Project Public License, % @@ -17,14 +16,14 @@ % purpose. % % % % Copyright (c) 2010-2012 Ahmed Musa (amusa22@gmail.com). % -% % %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% \ProvidesPackage{keyreader} - [2012/01/14 v0.4b Robust interfaces to xkeyval package (AM)] + [2012/11/06 v0.5b Robust interfaces to xkeyval package (AM)] +\newdimen\krdz@ \ifcase - \ifx\eTeXversion\@undefined\z@\else - \ifnum\eTeXversion<\tw@\z@\else\@ne\fi\fi + \ifx\eTeXversion\@undefined\krdz@\else + \ifnum\eTeXversion<\tw@\krdz@\else\@ne\fi\fi \PackageError{keyreader} {eTeX not loaded or old version} {This package requires eTeX version 2 or higher.}% @@ -38,7 +37,7 @@ \catcode044 12% , \def\reserved@a{\endgroup \def\do##1,{% - \ifx##1\end\else + \ifx\end##1\else \catcode##1\string=\the\catcode##1 % \expandafter\do \fi @@ -53,7 +52,7 @@ \catcode061 12% = \catcode044 12% , \def\do#1=#2,{% - \ifx#1\end\else + \ifx\end#1\else \edef\krd@restorecodes{% \krd@restorecodes \catcode#1=\the\catcode#1 % @@ -64,34 +63,67 @@ } \do 032=10,033=12,036=03,038=04,040=12,041=12,042=12,043=12,% 059=12,045=12,047=12,058=12,063=12,091=12,093=12,126=13,\end=,% + \AtEndOfPackage{% \krdAfterEndPackage{% \krd@restorecodes - \let\krd@restorecodes\@undefined + \let\krd@restorecodes\relax }% } -\RequirePackage{xkeyval}[2008/08/13] + +\ifx\XKeyValLoaded\endinput\else + \input xkeyval +\fi +\let\XKV@doxs\relax + +\let\krd@err\@latex@error +\def\krd@ehd{% + There is a problem here. Investigate it before + \MessageBreak proceeding. Try typing <return> + to proceed.\MessageBreak If that doesn't work, + type X <return> to quit. +} \def\@space{ } -\protected\def\krdnewlet#1{\@ifdefinable#1\relax\let#1} +\protected\def\krdnewlet#1{\@ifdefinable{#1}\relax\let#1= } \krdnewlet\krd@nil\relax \def\krd@nnil{\krd@nil} \def\krdswap#1#2{#2#1} \def\krd@quark{\@gobble\krd@quark} \newcount\krd@csvdepth -\newif\ifkrdloopbreak +\newif\ifkrd@foreach@break \newif\ifkrd@st -\newif\ifkrddef -\krdnewlet\krdloopbreak\krdloopbreaktrue +\newif\ifkrdindef +\long\def\krdifblank#1{% + \ifcat$\detokenize\expandafter{\@gobble#1.}$% + \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi +} + \begingroup -\catcode`\&=7 +\catcode`\&=8 +\gdef\krdifledbyspace#1{\krd@ifledbyspace&& \trim@nil} +\gdef\krd@ifledbyspace& #2\trim@nil{% + \krdifblank{#2}\@secondoftwo\@firstoftwo +} \gdef\krdtrimspace#1{\krd@trimspace@a.#1& &} \gdef\krd@trimspace@a#1 &{\krd@trimspace@b#1&} \gdef\krd@trimspace@b#1{% - \krdexpandonce{\romannumeral-`\q\expandafter\noexpand\@gobble#1}% + \krdexpandonce{% + \romannumeral-`\q + \expandafter\krdifledbyspace\expandafter{\@gobble#1}% + {\expandafter\noexpand\@gobble#1}{\expandafter\@space\@gobble#1}% + }% } \endgroup + +\def\krdzapspace#1{\krd@zapspace#1 \zap@nil} +\def\krd@zapspace#1 #2\zap@nil{% + \krdifblank{#2}{#1}{% + \krd@zapspace#1#2\zap@nil + }% +} + \protected\def\krdAfterEndPackage{% - \krdifcsndef{\@currname.\@currext-krd@endpkghook}{}{% + \krdifcsdef{\@currname.\@currext-krd@endpkghook}{}{% \@namedef{\@currname.\@currext-krd@endpkghook}{}% }% \expandafter\g@addto@macro @@ -119,7 +151,7 @@ \fi }% } -\newcommand*\krdifcsndef[1]{% +\newcommand*\krdifcsdef[1]{% \krdifblank{#1}{% \expandafter\@secondoftwo\@gobble }{% @@ -138,19 +170,15 @@ \ifx#1#2\krd@ifx@quark \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi } -\long\def\krdifblank#1{% - \ifcat$\detokenize\expandafter{\@gobble#1.}$% - \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi -} \def\krdifbool#1{% \krdifblank{#1}{% - \@secondoftwo + \krd@err{No boolean}\krd@ehd }{% - \krdifcsndef{if#1}{% + \krdifcsdef{if#1}{% \csname @\csname if#1\endcsname first\else second\fi oftwo\endcsname }{% - \@latex@error{Undefined boolean '#1'}\@ehc + \krd@err{Undefined boolean '#1'}\krd@ehd }% }% } @@ -164,14 +192,15 @@ \expandafter\krd@ifswitch@aux\romannumeral-`\q#1\krd@nil{% \if#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi }{% - \@latex@error{Invalid switch '#1'}\@ehc + \krd@err{Invalid switch '#1'}\krd@ehd }% }% } \krdifx\pdfstrcmp\@undefined{% \RequirePackage{pdftexcmds}% \krdifx\pdf@strcmp\@undefined{% - \cpt@err{Neither '\string\pdfstrcmp' nor '\string\pdf@strcmp' exists}\@ehc + \krd@err{Neither '\string\pdfstrcmp' nor + '\string\pdf@strcmp' exists}\krd@ehd }{% \let\krd@pdfstrcmp\pdf@strcmp }% @@ -182,6 +211,9 @@ \csname @\ifnum\krd@pdfstrcmp{\detokenize{#1}}% {\detokenize{#2}}=0first\else second\fi oftwo\endcsname } +\def\krdifcond#1\fi{% + \csname @#1first\else second\fi oftwo\endcsname +} % If we were to use \krdtrimspace for \krdifbraced, then the need % for double \romannumeral will cause problems of premature expansion. % We need the \romannumeral below to make \krdifbraced expandable: @@ -201,8 +233,29 @@ \def\krd@ifbraced@d#1\krd@nil#2{% \krdifstrcmp{#1}{#2}\@secondoftwo\@firstoftwo } +% \krdstripouterbraces{<nr>}<cmd> +\protected\def\krdstripouterbraces#1#2{% + \begingroup + \@tempcnta\krdz@ + \expandafter\krd@stripouterbraces#2\krd@stripbrace{#2}{#1}% +} +\protected\def\krd@stripouterbraces#1\krd@stripbrace#2#3{% + \advance\@tempcnta\@ne + \krdifcond\ifnum\@tempcnta=#3\fi{% + \edef#2{\unexpanded{#1}}% + \edef\x{\endgroup\krdaftergr#2}\x + }{% + \krd@stripouterbraces#1\krd@stripbrace{#2}{#3}% + }% +} + +\def\krdoxdetok#1{\detokenize\expandafter{#1}} +\def\krdusearg#1#2{% + \expandafter\krdswap\expandafter{\expandafter{#2}}{#1}% +} \def\krdexpandonce#1{\unexpanded\expandafter{#1}} -\def\krdnoexpandcsn#1{\krdexpandonce{\csname#1\endcsname}} +\def\krdnoexpandcs#1{\krdexpandonce{\csname#1\endcsname}} +\def\krdncsname{\expandafter\noexpand\csname} \protected\def\krdexpanded#1{% \begingroup \protected@edef\reserved@a{\endgroup#1}\reserved@a @@ -215,6 +268,16 @@ \protected\def\krdexpandsecondonce#1#2{% \krdexpanded{\unexpanded{#1}\krdexpandonce{#2}}% } +\def\krdaftergr#1{% + \edef\noexpand#1{\noexpand\unexpanded{\krdexpandonce{#1}}}% +} +\protected\def\krdifescaped#1{% + \begingroup + \escapechar92\relax + \edef\x{\expandafter\@car\string#1x\@nil}% + \expandafter\endgroup + \csname @\ifx\x\@backslashchar first\else second\fi oftwo\endcsname +} % Eg, % \newcount\nr\nr=\tw@ % \def\do#1{% @@ -224,6 +287,7 @@ % } % \edef\x{\krdfor{\cmda,\cmdb}} % \show\x -> \let\cmda\cmda@ii \let\cmdb\cmdb@ii +% \def\krdfor#1{\krd@for@a#1,\krd@nnil,\krd@nil} \def\krd@for@a#1,#2\krd@nil{% \krdifblank{#1}{% @@ -234,14 +298,16 @@ }% } % We redefine xkeyval's loops to increase robustness. -% We can't replace \@nil by \krd@nil here because xkeyval -% uses \@nil in calling these macros: +% We can't replace \@nil by \krd@nil here because xkeyval uses \@nil +% to terminate the loops. \protected\long\def\XKV@for@n#1#2#3{% \edef#2{\unexpanded{#1}}% \krdifx#2\@empty{}{% \XKV@f@r#2{#3}#1,\@nil,% }% } +\let\krdcommaloop\XKV@for@n +\let\krdecommaloop\XKV@for@o \protected\long\def\XKV@f@r#1#2#3,{% \edef#1{\unexpanded{#3}}% \krdifx#1\@nnil{}{#2\XKV@f@r#1{#2}}% @@ -277,64 +343,74 @@ \edef#1{\unexpanded{#2}}% \krdcsvnormalize#1% } -\def\krd@loopdo@stack{} -\protected\def\krd@pushloopdo{% - \global\advance\krd@csvdepth\@ne - \def\reserved@a##1{\expandafter\@gobble\string##1@% - \romannumeral\krd@csvdepth}% - \def\do##1{\let\noexpand##1\krdnoexpandcsn{\reserved@a{##1}}}% - \xdef\krd@loopdo@stack{% - \krdfor{\krd@loopdo,\ifkrdloopbreak,\krd@final@loopact,% - \krd@regular@loopact}% - {\krdexpandonce\krd@loopdo@stack}% - }% - \def\do##1{\let\krdnoexpandcsn{\reserved@a{##1}}\noexpand##1}% - \krdexpanded{% - \krdfor{\krd@loopdo,\ifkrdloopbreak,\krd@final@loopact,% - \krd@regular@loopact}% - }% +\protected\def\krd@pushmacros#1#2#3{% + \begingroup + \global\advance#2\@ne + \krdifdef#1{}{\def#1{}}% + \def\reserved@a##1{\expandafter\@gobble\string##1@\romannumeral#2}% + \def\do##1{\let\noexpand##1\krdnoexpandcs{\reserved@a{##1}}}% + \xdef#1{#3{\krdexpandonce#1}}% + \def\do##1{\let\krdnoexpandcs{\reserved@a{##1}}\noexpand##1}% + \krdexpanded{\endgroup#3}% } -\protected\def\krd@poploopdo{% +\protected\def\krd@popmacros#1#2{% \begingroup - \def\reserved@a##1##{\endgroup##1\gdef\krd@loopdo@stack}% - \expandafter\reserved@a\krd@loopdo@stack - \global\advance\krd@csvdepth\m@ne + \def\reserved@a##1##{\endgroup##1\gdef#1}% + \expandafter\reserved@a#1% + \global\advance#2\m@ne } + \protected\def\krd@testst#1{\@ifstar{\krd@sttrue#1}{\krd@stfalse#1}} -% \krdlistloop[<parser>]{<list>}<\if...>\fi<ini-code><final-code><reg-code> -% When the conditional <\if...> isn't true, the regular code <reg-code> -% will be executed for every member of the list. -% <final-code> will be executed when the conditional <\if...> is true. -% <ini-code> may be used to first turn <\if...> off before commencing -% the loop. \ifkrdloopbreak may be used as the conditional in <\if...>. -% Both <ini-code> and <final-code> can be empty (ie, {}). -% Use '#1' in <final-code> and <reg-code> to access the current element -% of the list. -\protected\def\krdlistloop{\krd@testst{\@testopt\krd@listloop,}} -\protected\def\krd@listloop[#1]#2#3\fi#4#5#6{% - \krd@pushloopdo - \edef\krd@csvarg{\krdifbool{krd@st}\krdexpandonce\unexpanded{#2}}% - \krdcsvnormalize[#1]\krd@csvarg - \def\krd@final@loopact##1{#5}% - \def\krd@regular@loopact##1{#6}% +% \krdforeach[<parser>] +% {<list>}<\if...>\fi{<ini-code>}{<final-code>}{<reg-code>} +% \krdforeach*[<parser>] +% {<listcmd>}<\if...>\fi{<ini-code>}{<final-code>}{<reg-code>} +% +% 1. When the conditional <\if...> isn't true, the regular code <reg-code> +% will be executed for every member of the list. +% 2. <final-code> will be executed when the conditional <\if...> is true. +% <ini-code> may be used to first turn <\if...> off before commencing +% the loop. \ifkrd@foreach@break may be used as the conditional in +% <\if...>. +% 3. Both <ini-code> and <final-code> can be empty (ie, {}). +% 4. Use '#1' in <final-code> and <reg-code> to access the current element +% of the list. +% +\protected\def\krdforeach{\krd@testst{\@testopt\krd@foreach,}} +\protected\def\krd@foreach[#1]#2#3\fi#4#5#6{% + \krd@pushmacros\krd@foreach@stack\krd@csvdepth{% + \do\krd@foreach@do\do\krd@foreach@final\do\krd@foreach@regular + \do\stopforeach + }% + \edef\krd@foreach@item{\krdifbool{krd@st}\krdexpandonce\unexpanded{#2}}% + \krdcsvnormalize[#1]\krd@foreach@item + \def\krd@foreach@final##1{#5}% + \def\krd@foreach@regular##1{#6}% + \krd@foreach@breakfalse + \let\stopforeach\krd@foreach@breaktrue % Initial code: #4\relax - \def\krd@loopdo##1#1##2\krd@nnil{% - \edef\krd@csvarg{\krdexpandonce{\@gobble##1}}% - \krdifx\krd@csvarg\krd@nnil{}{% - #3\relax - \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi - {% - \expandafter\krd@final@loopact\expandafter{\krd@csvarg}\relax + \def\krd@foreach@do##1#1##2\krd@nnil{% + \edef\krd@foreach@item{\krdexpandonce{\@gobble##1}}% + \krdifx\krd@foreach@item\krd@nnil{% + \krd@foreach@breakfalse + }{% + \krdifcond#3\fi{% + \expandafter\krd@foreach@final\expandafter{\krd@foreach@item}\relax }{% - \expandafter\krd@regular@loopact\expandafter{\krd@csvarg}\relax - \krd@loopdo.##2\krd@nnil + \expandafter\krd@foreach@regular\expandafter{\krd@foreach@item}\relax + \krdifbool{krd@foreach@break}{% + \krd@foreach@breakfalse + }{% + \krd@foreach@do.##2\krd@nnil + }% }% }% }% - \expandafter\krd@loopdo\expandafter.\krd@csvarg#1\krd@nil#1\krd@nnil - \krd@poploopdo + \expandafter\krd@foreach@do\expandafter + .\krd@foreach@item#1\krd@nil#1\krd@nnil + \krd@popmacros\krd@foreach@stack\krd@csvdepth } \protected\def\krdaddtolist{\krd@testst{\@testopt{\krd@addtolist{e}},}} \protected\def\krdgaddtolist{\krd@testst{\@testopt{\krd@addtolist{x}},}} @@ -461,16 +537,85 @@ \def\krd@remleadparser#1##1\krd@nil{\noexpand##1}% \def\krd@parserequalerr##1#1=##2\krd@nil{% \krdifblank{##2}{}{% - \@latex@error{There is '#1=' in your key-value list}\@ehc + \krd@err{There is '#1=' in your key-value list}\krd@ehd }% }% } \endgroup \krd@setupnormalize{,} + +% Filter class options to remove '=' and option values. Do this +% retroactively if this package was loaded before \documentclass. +% The keyreader package can be loaded before \documentclass. +\protected\def\XKV@filterclassoptions{% + \XKV@sgfalse + \ifx\@classoptionslist\@undefined\else + \ifx\@classoptionslist\relax\else + \ifx\@classoptionslist\@empty\else + \XKV@sgtrue + \fi + \fi + \fi + \ifXKV@sg + \let\XKV@filterclassoptions\relax + \let\XKV@origclassoptionslist\@classoptionslist + \let\XKV@classoptionslist\@classoptionslist + \def\@classoptionslist{}% + \XKV@for@o\XKV@classoptionslist\XKV@tempa{% + \@expandtwoargs\in@{=}{\krdoxdetok\XKV@tempa}% + \ifin@\else + \edef\@classoptionslist{% + \@classoptionslist\ifx\@classoptionslist\@empty\else,\fi + \unexpanded\expandafter{\XKV@tempa}% + }% + \fi + }% + \fi +} +\def\XKV@getdocumentclass{% + \let\XKV@documentclass\@undefined + \XKV@sgfalse + \ifdefined\@filelist + \ifx\@filelist\@gobble\else + \ifx\@filelist\relax\else + \ifx\@filelist\@empty\else + \XKV@sgtrue + \fi + \fi + \fi + \fi + \ifXKV@sg + \def\XKV@tempb{00}% + \XKV@whilist\@filelist\XKV@tempa\if\XKV@tempb\fi{% + \filename@parse\XKV@tempa + \ifx\filename@ext\@clsextension + \edef\XKV@tempa{\filename@area\filename@base.\filename@ext}% + \XKV@ifundefined{opt@\XKV@tempa}{}{% + \let\XKV@documentclass\XKV@tempa + \def\XKV@tempb{01}% + }% + \fi + }% + \fi +} +\XKV@getdocumentclass +\ifdefined\XKV@documentclass + \XKV@filterclassoptions +\else + \let\XKV@documentclass\@empty + \let\XKV@classoptionslist\@empty + \xdef\@popfilename{% + \unexpanded\expandafter{\@popfilename}% + \noexpand\XKV@filterclassoptions + }% +\fi + % Redefine \XKV@define@key to heed a complaint about the grabbing % of the callback: \protected\def\XKV@define@key#1{% - \@ifnextchar[{\XKV@d@fine@k@y{#1}}{% + \@ifnextchar[{% + \XKV@d@fine@k@y{#1}% + }{% \begingroup \toks1{\endgroup\@namedef{\XKV@header#1}####1}% \def\reserved@a{\the\toks\expandafter1\expandafter{\the\toks0}}% @@ -489,13 +634,13 @@ \begingroup\expandafter\endgroup\expandafter\XKV@tempa\expandafter {\expandafter\edef\csname#1#2\endcsname{\unexpanded{##1}}#4}% } -% Allow macro prefix (mp@) for choice keys: +% Allow macro prefix (default: mp@) for choice keys: \protected\def\define@choicekey{% \XKV@testopta{\XKV@testoptb {\@testopt\XKV@define@choicekey{choice\XKV@header}}}% } \def\XKV@define@choicekey[#1]#2{% - \def\XKV@macropf{#1#2}% + \edef\XKV@macropf{\krdtrimspace{#1}\krdtrimspace{#2}}% \@testopt{\XKV@d@fine@choicekey{#2}}{}% } \def\XKV@d@fine@choicekey#1[#2]#3{% @@ -505,11 +650,16 @@ \@ifnextchar[{\XKV@d@fine@ch@icekey{#1}}{\XKV@d@fine@ch@ic@key{#1}}% } \def\XKV@d@fine@ch@icekey#1[#2]{% - \XKV@define@default{#1}{#2}% + \edef\krd@default{\krdtrimspace{#2}}% + % Choice keys shouldn't have braced values: + \krdstripouterbraces{2}\krd@default + \krdexpanded{% + \noexpand\XKV@define@default{#1}{\krdexpandonce\krd@default}% + }% \XKV@d@fine@ch@ic@key{#1}% } \def\XKV@d@fine@ch@ic@key#1{% - \edef\reserved@a{\krdnoexpandcsn{\XKV@header#1}}% + \edef\reserved@a{\krdnoexpandcs{\XKV@header#1}}% \krdifbool{XKV@pl}{% \expandafter\XKV@d@f@ne@ch@ic@k@y\reserved@a }{% @@ -520,7 +670,7 @@ \def\XKV@d@f@ne@ch@ic@k@y#1#2#3{\XKV@d@f@n@@ch@ic@k@y#1{{#2}{#3}}} \def\XKV@d@f@n@@ch@ic@k@y#1#2{% \edef#1##1{% - \edef\krdnoexpandcsn{\XKV@macropf}{\noexpand\unexpanded{##1}}% + \edef\krdnoexpandcs{\XKV@macropf}{\noexpand\unexpanded{##1}}% \ifXKV@st\noexpand\XKV@sttrue\else\noexpand\XKV@stfalse\fi \ifXKV@pl\noexpand\XKV@pltrue\else\noexpand\XKV@plfalse\fi \noexpand\XKV@checkchoice[\the\XKV@tempa@toks]{##1}{\the\XKV@toks}% @@ -551,7 +701,7 @@ \expandafter\XKV@g@tkeyname\XKV@tempa=\@nil\XKV@tempa \XKV@addtolist@x\XKV@naa\XKV@tempa }% - \ifnum\XKV@depth=\z@\let\XKV@rm\@empty\fi + \ifnum\XKV@depth=\krdz@\let\XKV@rm\@empty\fi \expandafter\XKV@usepresetkeys\expandafter{\krd@na}{preseth}% \krdexpandsecond\krd@s@tkeys {{\krdexpandonce\XKV@resb}{\krdexpandonce\krd@na}}% @@ -593,7 +743,8 @@ \krdexpandargonce{\KV@@sp@def\XKV@tkey}\XKV@tkey \krdifx\XKV@tkey\@empty{% \krdifblank{#2}{}{% - \XKV@err{No key specified for value '\the\XKV@toks'}% + \krd@err{No key specified for value + \MessageBreak '\the\XKV@toks'}\krd@ehd }% }{% \@expandtwoargs\in@{,\XKV@tkey,}{,\XKV@na,}% @@ -628,7 +779,8 @@ \krdifbool{XKV@st}{% \XKV@addtolist@o\XKV@rm\CurrentOption }{% - \XKV@err{Key '\XKV@tkey' undefined in families '\XKV@fams'}% + \krd@err{Key '\XKV@tkey' is undefined in + families \MessageBreak '\XKV@fams'}\krd@ehd }% }% }{% @@ -642,7 +794,7 @@ }% } % When the key default value has doubled hash characters, -% then xkeyval's definition of \XKV@default fails: +% xkeyval's definition of \XKV@default fails: \protected\def\XKV@default#1#2\@nil{% \edef\XKV@tempa{\expandafter\@gobble\string#1}% \edef\XKV@tempb{\XKV@header\XKV@tkey}% @@ -654,7 +806,7 @@ }% \csname\XKV@header\XKV@tkey @default\endcsname \expandafter\endgroup\the\toks@ - \krdifcsndef{XKV@\XKV@header save}{% + \krdifcsdef{XKV@\XKV@header save}{% \expandafter\XKV@testsavekey\csname XKV@\XKV@header save\endcsname\XKV@tkey }{}% @@ -673,6 +825,32 @@ \XKV@srstate{}{@\romannumeral\XKV@depth}% }% } +\protected\def\XKV@replacepointers#1{% + \let\XKV@tempa\@empty + \let\XKV@resa\@empty + \XKV@r@placepointers#1\usevalue\@nil +} +\def\XKV@r@placepointers#1\usevalue#2{% + \XKV@addtomacro@n\XKV@tempa{#1}% + \edef\XKV@tempb{\unexpanded{#2}}% + \ifx\XKV@tempb\@nnil\else\XKV@afterfi + \XKV@ifundefined{XKV@\XKV@header#2@value}{% + \krd@err{No value has been recorded for key + \MessageBreak '#2'; pointer not replaced}\krd@ehd + \XKV@r@placepointers + }{% + \@expandtwoargs\in@{,\detokenize{#2},}{,\krdoxdetok\XKV@resa,}% + \ifin@\XKV@afterelsefi + \krd@err{Possible back linking of pointers; + \MessageBreak pointer replacement terminated}\krd@ehd + \else\XKV@afterfi + \XKV@addtolist@x\XKV@resa{#2}% + \expandafter\expandafter\expandafter\XKV@r@placepointers + \csname XKV@\XKV@header#2@value\endcsname + \fi + }% + \fi +} \protected\def\krdsetrmkeys{\XKV@testopta{\XKV@testoptc\krd@setrmkeys}} \protected\def\krd@setrmkeys[#1]{% \krdexpandargonce{\krd@setkeys[#1]}\XKV@rm @@ -686,30 +864,39 @@ \protected\def\krdpostsetkeys{\@testopt\krd@postsetkeys{KV}} \protected\def\krd@postsetkeys[#1]#2#3{\presetkeys[#1]{#2}{}{#3}} \protected\def\krd@disabledkey@err#1{% - \@latex@error{Key '#1' has been disabled} + \krd@err{Key '#1' has been disabled} {You can't set or reset key '#1' at this\MessageBreak late stage. Perhaps you should have set it \MessageBreak earlier in \string\documentclass\@space or \string\usepackage}% } \protected\def\krddisablekeys{\XKV@testoptb\krd@disablekeys} \protected\def\krd@disablekeys#1{% - \def\krd@tempa{#1}% - \krdcsvnormalize\krd@tempa - \XKV@for@o\krd@tempa\krd@tempa{% - \krdifcsndef{\XKV@header\krd@tempa}{}{% - \@latex@warning@no@line{Key '\krd@tempa' is undefined: + \def\XKV@tempa{#1}% + \krdcsvnormalize\XKV@tempa + \XKV@for@o\XKV@tempa\XKV@tempa{% + \krdifcsdef{\XKV@header\XKV@tempa}{}{% + \@latex@warning@no@line{Key '\XKV@tempa' is undefined: couldn't be disabled}% }% - \krdifcsndef{\XKV@header\krd@tempa @default}{% - \edef\krd@tempb{\noexpand\XKV@define@key{\krd@tempa}[]}% + \krdifcsdef{\XKV@header\XKV@tempa @default}{% + \edef\XKV@tempb{\noexpand\XKV@define@key{\XKV@tempa}[]}% }{% - \edef\krd@tempb{\noexpand\XKV@define@key{\krd@tempa}}% + \edef\XKV@tempb{\noexpand\XKV@define@key{\XKV@tempa}}% }% - \krdexpandarg{\expandafter\krd@tempb\expandafter}% - {\krd@disabledkey@err{\krd@tempa}}% + \krdexpandarg{\expandafter\XKV@tempb\expandafter}% + {\krd@disabledkey@err{\XKV@tempa}}% }% } \edef\krd@hashchar{\string#} + +% \krddefinekeys[<pref>]{<fam>}[<mp>]{ +% ord/<key>/<dft>/<f1>; +% cmd/<key>/<dft>/<f1>; +% bool/<key>/<dft>/<f1>; +% bool+/<key>/<dft>/<f1>/<f2>; +% choice/<key>/<dft>/<alt>/<f1>; +% choice+/<key>/<dft>/<alt>/<f1>/<f2>; +% } \protected\def\krddefinekeys{% \begingroup \endlinechar\m@ne @@ -720,146 +907,211 @@ } \protected\def\krd@d@finekeys#1#2[#3]#4{% \expandafter\endgroup - \ifkrd@st - \def\krd@keyst{00}% - \else - \def\krd@keyst{01}% - \fi - \krddeftrue + \edef\krd@keyst{0\ifkrd@st0\else1\fi}% + \krdindeftrue \begingroup - \edef\key@prefix{\krdtrimspace{#1}}% - \edef\key@family{\krdtrimspace{#2}}% - \edef\macro@prefix{\krdtrimspace{#3}}% + \edef\krd@prefix{\krdtrimspace{#1}}% + \edef\krd@family{\krdtrimspace{#2}}% + \edef\krd@macpref{\krdtrimspace{#3}}% \toks@{}% \def\krd@rej{^?^}% - \def\key@vals{}% - \def\krd@altlista{}% - \def\krd@altlistb{}% + \def\krd@defna{.na}% + \def\krd@vals{}% + \let\krduserinput\relax + \let\krdorder\relax \def\krd@splita##1/##2/{\krd@splitb##1/##2/.}% - \def\krd@splitb##1/##2/##3/##4/##5/##6\krd@nil{% - \edef\key@type{\krdtrimspace{##1}}% - \edef\key@name{\krdtrimspace{##2}}% + \def\krd@splitb##1/##2/##3/##4/##5/##6/##7/##8/##9\krd@nil{% + \edef\krd@type{\krdzapspace{##1}}% + \edef\krd@name{\krdtrimspace{##2}}% + \edef\krd@default{\krdusearg\krdtrimspace{\@gobble##3}}% + \edef\krd@itemfour{\krdtrimspace{##4}}% + \edef\krd@itemfive{\krdtrimspace{##5}}% + \edef\krd@itemsix{\krdtrimspace{##6}}% \@expandtwoargs\in@{\krd@hashchar}{\detokenize{##2}}% \ifin@ - \@latex@error{Bad key name '\detokenize{##2}'}\@ehc + \krd@err{Bad key name '\detokenize{##2}'}\krd@ehd \fi \if\krd@keyst - \krdifcsndef{\key@prefix @\key@family @##2}{% - \@latex@error{Key '##2' already exists in - family '\key@family'}\@ehc + \krdifcsdef{\krd@prefix @\krd@family @##2}{% + \krd@err{Key '##2' already exists in + family '\krd@family'}\krd@ehd }{}% \fi - \@expandtwoargs\in@{,\detokenize\expandafter{\key@type},}% - {,\detokenize{ord,cmd,bool,choice},}% + \@expandtwoargs\in@ + {,\krdoxdetok\krd@type,} + {,\detokenize{ord,cmd,bool,bool+,choice,choice+},}% \ifin@\else - \@latex@error{Unknown key type '\key@type'}\@ehc + \krd@err{Unknown key type '\krd@type'}\krd@ehd \fi - \edef\key@default{\expandafter\krdtrimspace\expandafter{\@gobble##3}}% - \edef\krd@resa{\krdtrimspace{##4}}% - \edef\krd@resb{\krdtrimspace{##5}}% - \@expandtwoargs\in@{,\detokenize\expandafter{\key@default},}% - {,\detokenize{true,false},}% - \edef\key@vals{% - \ifx\key@vals\@empty\else\krdexpandonce\key@vals,\fi - \ifx\key@default\krd@rej\else - \key@name=\ifin@ false\else\krdexpandonce\key@default\fi + % ord{0}cmd{1}bool{2}bool+{3}choice{4}choice+{5} + \krdusearg\krd@gettypenr{\krd@type}% + \ifnum\krd@typenr>\thr@@ + \krdstripouterbraces{2}\krd@default + \ifcase0% + \ifx\krd@itemfour\@empty\else + \ifx\krd@itemfour\krd@rej\else + \ifx\krd@itemfour\krd@defna\else 1\fi\fi\fi\relax + \krd@err{Empty nominations for choice key \krd@name}\krd@ehd + \else + \krd@getaltlist{##4}% \fi - }% - \def\reserved@a####1{% - \def\reserved@a########1####1########2########3\krd@nil{% - \def\key@typenr{########2}% - \ifx\key@typenr\krd@nnil - \@latex@error{Invalid key type '####1'}\@ehc + \fi + \@expandtwoargs\in@ + {,\krdoxdetok\krd@default,}{,\detokenize{true,false},}% + \edef\krd@vals{% + \ifx\krd@vals\@empty\else\krdexpandonce\krd@vals,\fi + \ifx\krd@default\krd@rej\else + \ifx\krd@default\krd@defna\else + \krd@name=\ifin@ false\else\krdexpandonce\krd@default\fi \fi - }% - \reserved@a ord{0}cmd{1}bool{2}choice{3}####1{\krd@nil}\krd@nil + \fi }% - \expandafter\reserved@a\expandafter{\key@type}% - \ifnum\key@typenr=\thr@@ - \edef\reserved@a{\unexpanded{##4}}% - \krdifx\reserved@a\@empty{% - \@latex@error{Empty alternate list for choice key \key@name}\@ehc - }{% - \krdifx\reserved@a\krd@rej{% - \@latex@error{Empty alternate list for choice key \key@name}\@ehc - }{% - \krd@getaltlist{##4}% - }% - }% - \fi \krdexpanded{% \toks@{\the\toks@ - \krdnoexpandcsn{define@\ifnum\key@typenr>\z@\key@type\fi key}% - \ifnum\key@typenr=\thr@@*\fi - \ifnum\key@typenr>\@ne+\fi - [\key@prefix]{\key@family}% - \ifnum\key@typenr>\z@[\macro@prefix]\fi - {\key@name}% - \ifnum\key@typenr=\thr@@ - [\unexpanded{\krduserinput\krdorder}]% - {\krdexpandonce\krd@altlista}% + \krdncsname define@\krd@typefordef key\endcsname + \if\krd@plustype+\fi + [\krd@prefix]{\krd@family}% + \ifnum\krd@typenr>\krdz@[\krd@macpref]\fi + {\krd@name}% + \ifnum\krd@typenr>\thr@@ + [\krduserinput\krdorder]{\krdexpandonce\krd@altlist@a}% \fi - \krdifx\key@default\krd@rej{}{% - [{\expandafter\krdifbraced\expandafter{\key@default}% - {{{\krdexpandonce\key@default}}}{\krdexpandonce\key@default}}]% - }% - {% - \ifnum\key@typenr=\thr@@ - \krdifx\krd@resb\krd@rej{}{\unexpanded{##5}}% - \krd@executealt{########1}{\krdexpandonce\krd@altlistb}% + \ifx\krd@default\krd@rej\else + \ifx\krd@default\krd@defna\else + [{\krdexpandonce\krd@default}]% + \fi + \fi + {% callback-1 + \ifnum\krd@typenr>\thr@@ + \ifx\krd@itemfive\krd@rej\else + \ifx\krd@itemfive\krd@defna\else + \krdexpandonce\krd@itemfive + \fi + \fi + \krd@executealt{########1}{\krdexpandonce\krd@altlist@b}% \else - \krdifx\krd@resa\krd@rej{}{\unexpanded{##4}}% + \ifx\krd@itemfour\krd@rej\else + \ifx\krd@itemfour\krd@defna\else + \krdexpandonce\krd@itemfour + \fi + \fi \fi }% - \ifnum\key@typenr>\@ne{\noexpand\krd@keyvalerr}\fi + \if\krd@plustype + {% callback-2 + \ifnum\krd@typenr>\thr@@ + \ifx\krd@itemsix\krd@rej + \noexpand\krd@keyvalerr + \else + \ifx\krd@itemsix\krd@defna + \noexpand\krd@keyvalerr + \else + \krdexpandonce\krd@itemsix + \fi + \fi + \else + \ifx\krd@itemfive\krd@rej + \noexpand\krd@keyvalerr + \else + \ifx\krd@itemfive\krd@defna + \noexpand\krd@keyvalerr + \else + \krdexpandonce\krd@itemfive + \fi + \fi + \fi + }% + \fi }% }% }% - \edef\key@list{\unexpanded{#4}}% - \krdlistloop*[;]\key@list\ifx\end\@undefined\fi{}{}{% - \krd@splita##1/^?^/^?^/^?^/^?^/\krd@nil + \edef\krd@list{\unexpanded{#4}}% + % Don't normalize for slash, since double slash (meaning, eg, + % "no value") will be made one slash. + \krdforeach*[;]\krd@list\if01\fi{}{}{% + \krd@splita##1/^?^/^?^/^?^/^?^/^?^/^?^/^?^/\krd@nil }% \krdexpanded{\endgroup \the\toks@ - \noexpand\krdsetkeys[\key@prefix]% - {\key@family}{\krdexpandonce\key@vals}% + \noexpand\krdsetkeys[\krd@prefix]% + {\krd@family}{\krdexpandonce\krd@vals}% + }% + \krdindeffalse +} +\protected\def\krd@gettypenr#1{% + \def\reserved@a##1#1##2##3\krd@nil{% + \def\krd@typenr{##2}% + \ifx\krd@typenr\krd@nnil + \krd@err{Invalid key type '#1'}\krd@ehd + \else + \edef\krd@typefordef{% + % Using \numexpr will remove \relax, which is needed + % to stop \ifcase's search for number. + \ifcase\numexpr\krd@typenr\relax\or + cmd\or bool\or bool\or choice\or choice\fi + }% + \fi }% - \krddeffalse + \reserved@a ord{0}cmd{1}bool{2}bool+{3}choice{4}choice+{5}% + #1{\krd@nil}\krd@nil + \@expandtwoargs\in@{+\relax}{\krdoxdetok\krd@type\relax}% + \edef\krd@plustype{0\ifin@ 0\else 1\fi}% } \protected\def\krd@keyvalerr{% \krd@getinnoval - \@latex@error{Erroneous value '\krd@ival' for key or option - \MessageBreak'\XKV@tkey'}{Invalid key value encountered.}% + \krd@err{Erroneous value '\krd@ival' + \MessageBreak for key or option '\XKV@tkey'} + {Invalid value for key '\XKV@tkey'.}% } \protected\def\krd@getaltlist#1{% - \def\krd@g@taltlist##1.do=##2\krd@nil{% - \edef\krd@tempa{\krdtrimspace{##1}}% - \edef\krd@tempb{\detokenize\expandafter{\krd@tempa}{\krdtrimspace{##2}}}% - \krdaddtolist*\krd@altlista\krd@tempa - \krdaddtolist*\krd@altlistb\krd@tempb - }% - \krdlistloop[,]{#1}\ifx\end\@undefined\fi{}{}{% - \@expandtwoargs\in@{\detokenize{.do=}}{\detokenize{##1}}% - \krdifbool{in@}{% - \krd@g@taltlist##1\krd@nil - }{% - \krd@g@taltlist##1.do=\krd@nil + \begingroup + \def\krd@altlist@a{}% + \def\krd@altlist@b{}% + \def\krd@g@taltlist##1.do=##2.do=##3\krd@nil{% + \edef\XKV@tempa{\krdtrimspace{##1}}% + \krdstripouterbraces{2}\XKV@tempa + \edef\XKV@tempb{\krdoxdetok\XKV@tempa{\krdtrimspace{##2}}}% + \def\@do####1####2{% + \edef####1{% + \krdexpandonce####1\ifx####1\@empty\else,\fi + \krdexpandonce####2% + }% }% + \@do\krd@altlist@a\XKV@tempa + \@do\krd@altlist@b\XKV@tempb + }% + \def\do##1{% + \krd@g@taltlist##1.do=.do=\krd@nil + }% + \krdfor{#1}% + \ifx\krd@altlist@a\@empty + \krd@err{No nominations for choice key}\@ehd + \def\krd@altlist@b{}% + \fi + \krdexpanded{\endgroup + \krdaftergr\krd@altlist@a\krdaftergr\krd@altlist@b }% } \protected\def\krd@executealt#1#2{% \edef\reserved@a{\krdtrimspace{#1}}% - \edef\reserved@a{\detokenize\expandafter{\reserved@a}}% - \krdexpandsecond{\def\reserved@a##1}\reserved@a##2##3\krd@nil{% - \edef\reserved@a{\unexpanded{##2}}% - \krdifx\reserved@a\krd@nnil{% - \@latex@error{No alternate list match for key '\XKV@tkey'}\@ehc - }{% - ##2% + \krdstripouterbraces{2}\reserved@a + \edef\reserved@a{\krdoxdetok\reserved@a}% + % There may be parameters characters in #2. So hide #2 in a macro: + \edef\reserved@b{\unexpanded{#2}}% + \def\reserved@c##1{% + \def\reserved@a####1##1####2####3\krd@nil{% + \edef\reserved@a{\unexpanded{####2}}% + \krdifx\reserved@a\krd@nnil{% + \krd@err{No choice match for key '\XKV@tkey'}\krd@ehd + }{% + ####2% + }% }% + \expandafter\reserved@a\reserved@b#1{\krd@nil}\krd@nil }% - \reserved@a#2#1{\krd@nil}\krd@nil + \krdusearg\reserved@c\reserved@a } +\def\krd@lengthofival{20} \protected\def\krd@getinnoval{% \begingroup \def\reserved@a##1=##2=##3\krd@nil{% @@ -870,12 +1122,12 @@ \def\krd@ival{???}% }{% \def\krd@ival{}% - \@tempcnta\z@ + \@tempcnta\krdz@ \def\do##1{% \def\reserved@a{##1}% \krdifx\reserved@a\krd@nnil{}{% \advance\@tempcnta\@ne - \ifnum\@tempcnta<20\relax + \ifnum\@tempcnta<\krd@lengthofival\relax \edef\krd@ival{\krd@ival##1}% \expandafter\do \else @@ -890,11 +1142,84 @@ \def\noexpand\krd@ival{\krd@ival}% }% } +\def\XKV@testopte#1{% + \XKV@ifstar{\XKV@sttrue\XKV@t@stopte#1}{\XKV@stfalse\XKV@t@stopte#1}% +} +\def\XKV@t@stopte#1{\@testopt{\XKV@t@st@pte#1}{KV}} +\def\XKV@t@st@pte#1[#2]{% + \XKV@makepf{#2}% + \@ifnextchar<{\XKV@@t@st@pte#1}% + {\XKV@@t@st@pte#1<\@currname.\@currext>}% +} +\def\XKV@@t@st@pte#1<#2>{% + \XKV@sp@deflist\XKV@fams{#2}% + \@testopt#1{}% +} +\def\DeclareOptionX{% + \let\@fileswith@pti@ns\@badrequireerror + \XKV@ifstar\XKV@dox\XKV@d@x +} +\long\def\XKV@dox#1{\XKV@toks{#1}\edef\XKV@doxs{\the\XKV@toks}} +\def\XKV@d@x{\@testopt\XKV@@d@x{KV}} +\def\XKV@@d@x[#1]{% + \@ifnextchar<{\XKV@@@d@x[#1]}{\XKV@@@d@x[#1]<\@currname.\@currext>}% +} +\def\XKV@@@d@x[#1]<#2>#3{\@testopt{\define@key[#1]{#2}{#3}}{}} +\def\ExecuteOptionsX{\XKV@stfalse\XKV@plfalse\XKV@t@stopte\XKV@setkeys} +\def\ProcessOptionsX{\XKV@plfalse\XKV@testopte\XKV@pox} +\def\XKV@pox[#1]{% + \let\XKV@tempa\@empty + \XKV@inpoxtrue + \let\@fileswith@pti@ns\@badrequireerror + \edef\XKV@testclass{\@currname.\@currext}% + \ifx\XKV@testclass\XKV@documentclass + \let\@unusedoptionlist\XKV@classoptionslist + \XKV@ifundefined{ver@xkvltxp.sty}{}{% + \@onelevel@sanitize\@unusedoptionlist + }% + \else + \ifXKV@st + \def\XKV@tempb##1,{% + \def\CurrentOption{##1}% + \ifx\CurrentOption\@nnil\else + \XKV@g@tkeyname##1=\@nil\CurrentOption + \XKV@key@if@ndefined{\CurrentOption}{}{% + \XKV@useoption{##1}% + \XKV@addtolist@n\XKV@tempa{##1}% + }% + \expandafter\XKV@tempb + \fi + }% + \expandafter\XKV@tempb\XKV@classoptionslist,\@nil,% + \fi + \fi + \expandafter\XKV@addtolist@o\expandafter + \XKV@tempa\csname opt@\@currname.\@currext\endcsname + \def\XKV@tempb{\XKV@setkeys[#1]}% + \expandafter\XKV@tempb\expandafter{\XKV@tempa}% + \let\XKV@doxs\relax + \let\XKV@rm\@empty + \XKV@inpoxfalse + \let\@fileswith@pti@ns\@@fileswith@pti@ns + \AtEndOfPackage{\let\@unprocessedoptions\relax}% +} +\def\XKV@useoption#1{% + \def\XKV@resa{#1}% + \XKV@ifundefined{ver@xkvltxp.sty}{}{% + \@onelevel@sanitize\XKV@resa + }% + \@expandtwoargs\@removeelement{\XKV@resa}% + {\@unusedoptionlist}\@unusedoptionlist +} \krdnewlet\krdDeclareOption\DeclareOptionX \krdnewlet\krdExecuteOptions\ExecuteOptionsX \krdnewlet\krdProcessOptions\ProcessOptionsX +\krdDeclareOption[KV]<keyreader>{lengthofival}[20]{% + \edef\krd@lengthofival{\number#1}% +} \krdDeclareOption*{\PackageWarning{keyreader}{Unknown option '\CurrentOption' ignored}} +\krdExecuteOptions[KV]<keyreader>{lengthofival} \krdProcessOptions[KV]<keyreader>\relax \endinput diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/keyreader.tlpobj new/tlpkg/tlpobj/keyreader.tlpobj --- old/tlpkg/tlpobj/keyreader.tlpobj 2012-03-05 04:32:05.000000000 +0100 +++ new/tlpkg/tlpobj/keyreader.tlpobj 2012-11-07 04:37:29.000000000 +0100 @@ -1,6 +1,6 @@ name keyreader category Package -revision 25563 +revision 28195 shortdesc A robust interface to xkeyval. relocated 1 longdesc The package provides a robust interface to controlling keys in @@ -9,10 +9,9 @@ longdesc author's ltxkeys package, which was assumed to be a replacement longdesc for keyreader. Since keyreader has remained a favourite with longdesc users, it has been reinstated. -runfiles size=8 - RELOC/tex/latex/keyreader/keyreader-guide.cfg +runfiles size=10 RELOC/tex/latex/keyreader/keyreader.sty catalogue-ctan /macros/latex/contrib/keyreader -catalogue-date 2012-01-19 11:04:21 +0100 +catalogue-date 2012-11-06 20:07:31 +0100 catalogue-license lppl1.3 -catalogue-version 0.4b +catalogue-version 0.5b ++++++ knuth.doc.tar.xz ++++++ /work/SRC/openSUSE:Factory/texlive-specs-k/knuth.doc.tar.xz /work/SRC/openSUSE:Factory/.texlive-specs-k.new/knuth.doc.tar.xz differ: char 1472135, line 6115 ++++++ knuth.source.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/source/generic/knuth/errata/errorlog.tex new/source/generic/knuth/errata/errorlog.tex --- old/source/generic/knuth/errata/errorlog.tex 2009-09-28 17:26:51.000000000 +0200 +++ new/source/generic/knuth/errata/errorlog.tex 2013-05-28 23:56:03.000000000 +0200 @@ -2896,6 +2896,16 @@ R790. Don't allow end-template except at end of template (Roth). @325,1131 * 30 September 2002 Q791. Improve rounding of glue during output (M. F. Bridgland). @625,634 +* 18 March 2008 +F792. Forgot to goto the proper error recovery (DRF). @395 +E793. Avoid a case of dirty Pascal and speed up inner loop. @1035 +R794. Forget reference to last_glue in format file (DRF). @1335 +R795. Glue reference not updated after overflow error (DRF). @1236 +B796. Muglue in \leaders had wrong units; now disallowed (DRF). @1078 +E797. Speedup of ligatures and kerns at end of a word (DRF). @1039 +R798. Another sanity check of TFM files for security (DRF). @365 +I799. Give better size data for unmagnified insertions. @986 + \relax \bye diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/knuth.source.tlpobj new/tlpkg/tlpobj/knuth.source.tlpobj --- old/tlpkg/tlpobj/knuth.source.tlpobj 2011-08-04 04:19:49.000000000 +0200 +++ new/tlpkg/tlpobj/knuth.source.tlpobj 2013-05-29 03:52:29.000000000 +0200 @@ -1,6 +1,6 @@ name knuth.source category Package -revision 23389 +revision 30780 shortdesc source files of knuth relocated 1 srcfiles size=156 ++++++ koma-script.tar.xz ++++++ ++++ 40646 lines of diff (skipped) ++++++ kpathsea.doc.tar.xz ++++++ ++++ 43356 lines of diff (skipped) ++++++ kpathsea.post ++++++ if test -s %{_texmfconfdir}/web2c/fmtutil.cnf.rpmnew ; then old=$(mktemp ${TMPDIR-${TEMP-${TMP-/tmp}}}/pool-old.XXXXXXXX) || exit -2 new=$(mktemp ${TMPDIR-${TEMP-${TMP-/tmp}}}/pool-new.XXXXXXXX) || exit -2 sed -rn '\@^TEXMFMAIN\s*=@p;\@Part 3:@,${\@^[a-z]@p}' < %{_texmfconfdir}/web2c/fmtutil.cnf.rpmnew > $new sed -rn '\@^TEXMFMAIN\s*=@p;\@Part 3:@,${\@^[a-z]@p}' < %{_texmfconfdir}/web2c/fmtutil.cnf > $old if ! cmp -s $new $old; then mv %{_texmfconfdir}/web2c/fmtutil.cnf %{_texmfconfdir}/web2c/fmtutil.cnf.rpmold mv %{_texmfconfdir}/web2c/fmtutil.cnf.rpmnew %{_texmfconfdir}/web2c/fmtutil.cnf > /var/run/texlive/run-fmtutil.refresh fi rm -f $new $old fi ++++++ kpathsea.tar.xz ++++++ ++++ 9490 lines of diff (skipped) ++++++ kpathsea_cnf.dif ++++++ --- /var/tmp/diff_new_pack.QjIO85/_old 2013-09-12 14:17:58.000000000 +0200 +++ /var/tmp/diff_new_pack.QjIO85/_new 2013-09-12 14:17:58.000000000 +0200 @@ -1,23 +1,23 @@ ---- texmf/web2c/fmtutil.cnf -+++ texmf/web2c/fmtutil.cnf 2011-09-13 15:40:39.608426212 +0000 +--- texmf-dist/web2c/fmtutil.cnf ++++ texmf-dist/web2c/fmtutil.cnf 2013-06-28 11:29:31.937439149 +0000 @@ -45,11 +45,11 @@ amstex pdftex - -translate-file=cp227.tc # from context: - cont-en pdftex cont-usr.tex -8bit *cont-en.ini - cont-en xetex cont-usr.tex -8bit *cont-en.ini --#! cont-de pdftex cont-usr.tex -8bit *cont-de.ini --#! cont-fr pdftex cont-usr.tex -8bit *cont-fr.ini --#! cont-it pdftex cont-usr.tex -8bit *cont-it.ini --#! cont-nl pdftex cont-usr.tex -8bit *cont-nl.ini --#! cont-ro pdftex cont-usr.tex -8bit *cont-ro.ini -+cont-de pdftex cont-usr.tex -8bit *cont-de.ini -+cont-fr pdftex cont-usr.tex -8bit *cont-fr.ini -+cont-it pdftex cont-usr.tex -8bit *cont-it.ini -+cont-nl pdftex cont-usr.tex -8bit *cont-nl.ini -+cont-ro pdftex cont-usr.tex -8bit *cont-ro.ini + cont-en pdftex cont-usr.tex -8bit *cont-en.mkii + cont-en xetex cont-usr.tex -8bit *cont-en.mkii +-#! cont-de pdftex cont-usr.tex -8bit *cont-de.mkii +-#! cont-fr pdftex cont-usr.tex -8bit *cont-fr.mkii +-#! cont-it pdftex cont-usr.tex -8bit *cont-it.mkii +-#! cont-nl pdftex cont-usr.tex -8bit *cont-nl.mkii +-#! cont-ro pdftex cont-usr.tex -8bit *cont-ro.mkii ++cont-de pdftex cont-usr.tex -8bit *cont-de.mkii ++cont-fr pdftex cont-usr.tex -8bit *cont-fr.mkii ++cont-it pdftex cont-usr.tex -8bit *cont-it.mkii ++cont-nl pdftex cont-usr.tex -8bit *cont-nl.mkii ++cont-ro pdftex cont-usr.tex -8bit *cont-ro.mkii # # from cslatex: - cslatex pdftex - -etex -translate-file=cp227.tcx cslatex.ini -@@ -63,8 +63,8 @@ pdfcsplain pdftex - -etex -translate-fil + cslatex pdftex - -etex cslatex.ini +@@ -65,8 +65,8 @@ pdfcsplain pdftex - -etex -enc csplain-u eplain pdftex language.dat -translate-file=cp227.tcx *eplain.ini # # from jadetex: @@ -28,7 +28,7 @@ # # from latex-bin: latex pdftex language.dat -translate-file=cp227.tcx *latex.ini -@@ -117,5 +117,11 @@ xetex xetex language.def -etex xetex.ini +@@ -124,5 +124,5 @@ xetex xetex language.def -etex xetex.ini xelatex xetex language.dat -etex xelatex.ini # # from xmltex: @@ -36,14 +36,8 @@ -pdfxmltex pdftex language.dat *pdfxmltex.ini +xmltex pdftex language.dat -translate-file=cp227.tcx *xmltex.ini +pdfxmltex pdftex language.dat -translate-file=cp227.tcx *pdfxmltex.ini -+ -+# formats for MusixTeX/MusicTeX -+musixtex pdftex - -translate-file=cp227.tcx &etex musixtex.ins -+pdfmusixtex pdftex - -translate-file=cp227.tcx &pdfetex pdfmusixtex.ins -+#! musictex pdftex - -translate-file=cp227.tcx &etex musictex.ins -+#! pdfmusictex pdftex - -translate-file=cp227.tcx &pdfetex pdfmusictex.ins ---- texmf/web2c/mktex.opt -+++ texmf/web2c/mktex.opt 2013-02-25 17:27:24.873444507 +0100 +--- texmf-dist/web2c/mktex.opt ++++ texmf-dist/web2c/mktex.opt 2012-05-14 13:26:00.034911495 +0200 @@ -37,10 +37,11 @@ if test "$DOSISH" = "no"; then SEP=':'; # TEMPDIR needs to be unique to each process because of the possibility of two # people running dvips (or whatever) simultaneously. @@ -120,21 +114,19 @@ # Cache values that may be useful for recursive calls. export MT_MKTEX_OPT MT_MKTEX_CNF ---- texmf/web2c/texmf.cnf -+++ texmf/web2c/texmf.cnf 2012-04-25 14:16:47.365727641 +0000 -@@ -53,31 +53,34 @@ TEXMFROOT = $SELFAUTOPARENT - - % The tree containing runtime files related to the specific - % distribution and version. --TEXMFMAIN = $TEXMFROOT/texmf -+TEXMFMAIN = /usr/lib/texmf +--- texmf-dist/web2c/texmf.cnf ++++ texmf-dist/web2c/texmf.cnf 2013-06-28 11:08:21.805439369 +0000 +@@ -54,32 +54,32 @@ + TEXMFROOT = $SELFAUTOPARENT - % The main tree of packages, distribution-agnostic: + % The main tree of distributed packages and programs: -TEXMFDIST = $TEXMFROOT/texmf-dist +TEXMFDIST = /usr/share/texmf -+ -+% Our documentation-only tree, arranged by language: -+TEXMFDOC = ${TEXMFDIST}/doc;${TEXMFMAIN}/doc + + % We used to have a separate /texmf tree with some core programs and files. + % Keep the variable name. +-TEXMFMAIN = $TEXMFDIST ++TEXMFMAIN = /usr/share/texmf % Local additions to the distribution trees. -TEXMFLOCAL = $TEXMFROOT/../texmf-local @@ -156,38 +148,41 @@ +TEXMFHOME = $HOME/texmf % TEXMFVAR, where texconfig/updmap/fmtutil store cached runtime data. --TEXMFVAR = ~/.texlive2011/texmf-var +-TEXMFVAR = ~/.texlive2013/texmf-var +TEXMFVAR = ${TEXMFSYSVAR} % TEXMFCONFIG, where texconfig/updmap/fmtutil store configuration data. --TEXMFCONFIG = ~/.texlive2011/texmf-config +-TEXMFCONFIG = ~/.texlive2013/texmf-config +TEXMFCONFIG = ${TEXMFSYSCONFIG} - % List all the texmf trees. - % -@@ -92,7 +95,7 @@ TEXMFCONFIG = ~/.texlive2011/texmf-confi - % versions should take precedence over those -- although it is generally - % a source of confusion to have different versions of a package - % installed, whatever the trees, so try to avoid it. --TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFMAIN,!!$TEXMFLOCAL,!!$TEXMFDIST} -+TEXMF = {$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFMAIN,!!$TEXMFLOCAL,!!$TEXMFDIST} + % List all the texmf trees. For an explanation of what they are, see the + % TeX Live manual. +@@ -91,7 +91,7 @@ TEXMFCONFIG = ~/.texlive2013/texmf-confi + % should take precedence over distribution files -- although it is + % generally a source of confusion to have different versions of a + % package installed, whatever the trees, so try to avoid it. +-TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFDIST} ++TEXMF = {$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFDIST} % Where to look for ls-R files. There need not be an ls-R in the % directories in this path, but if there is one, Kpathsea will use it. -@@ -100,18 +103,17 @@ TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHO +@@ -99,13 +99,13 @@ TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHO % does not create ls-R files in the non-!! elements -- because if an % ls-R is present, it will be used, and the disk will not be searched. % This is arguably a bug in kpathsea. --TEXMFDBS = {!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFMAIN,!!$TEXMFLOCAL,!!$TEXMFDIST} +-TEXMFDBS = {!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFDIST} +TEXMFDBS = $TEXMF;$VARTEXFONTS % The system trees. These are the trees that are shared by all users. % If a tree appears in this list, the mktex* scripts will use % VARTEXFONTS for generated files, if the original tree isn't writable; % otherwise the current working directory is used. --SYSTEXMF = $TEXMFSYSVAR;$TEXMFMAIN;$TEXMFLOCAL;$TEXMFDIST -+SYSTEXMF = $TEXMFSYSCONFIG;$TEXMFSYSVAR;$TEXMFMAIN;$TEXMFLOCAL;$TEXMFDIST +-SYSTEXMF = $TEXMFSYSVAR;$TEXMFLOCAL;$TEXMFDIST ++SYSTEXMF = $TEXMFSYSCONFIG;$TEXMFSYSVAR;$TEXMFLOCAL;$TEXMFDIST + % First writable tree here is used by Lua(La)TeX for the font cache. + % LuaLaTeX uses the value here, while ConTeXt uses the same variable but +@@ -116,7 +116,6 @@ TEXMFCACHE = $TEXMFSYSVAR;$TEXMFVAR % Where generated fonts may be written. This tree is used when the sources % were found in a system tree and either that tree wasn't writable, or the % varfonts feature was enabled in MT_FEATURES in mktex.cnf. @@ -195,7 +190,7 @@ % On some systems, there will be a system tree which contains all the font % files that may be created as well as the formats. For example -@@ -122,7 +124,7 @@ VARTEXFONTS = $TEXMFVAR/fonts +@@ -127,7 +126,7 @@ VARTEXFONTS = $TEXMFVAR/fonts % % Remove $VARTEXFONTS from TEXMFDBS if the VARTEXFONTS directory is below % one of the TEXMF directories (avoids overlapping ls-R files). @@ -204,7 +199,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Usually you will not need to edit any of the following variables. -@@ -130,7 +132,7 @@ VARTEXFONTS = $TEXMFVAR/fonts +@@ -135,7 +134,7 @@ VARTEXFONTS = $TEXMFVAR/fonts % WEB2C is for Web2C specific files. The current directory may not be % a good place to look for them. @@ -213,7 +208,7 @@ % TEXINPUTS is for TeX input files -- i.e., anything to be found by \input % or \openin, including .sty, .eps, etc. We specify paths for all known -@@ -171,23 +173,23 @@ TEXINPUTS.elatex = .;$TEXMF/tex/{ +@@ -176,23 +175,23 @@ TEXINPUTS.elatex = .;$TEXMF/tex/{ TEXINPUTS.etex = .;$TEXMF/tex/{plain,generic,}// % pdfTeX. @@ -250,7 +245,7 @@ % LuaTeX. TEXINPUTS.lualatex = .;$TEXMF/tex/{lualatex,latex,luatex,generic,}// -@@ -229,18 +231,18 @@ BSTINPUTS.pbibtex = .;$TEXMF/{pbib +@@ -234,18 +233,18 @@ BSTINPUTS.pbibtex = .;$TEXMF/{pbib TEXINPUTS.context = .;$TEXMF/tex/{context,plain,generic}// % jadetex. @@ -275,7 +270,7 @@ % Earlier entries override later ones, so put this generic one last. TEXINPUTS = .;$TEXMF/tex/{$progname,generic,}// -@@ -259,13 +261,13 @@ MPINPUTS = .;$TEXMF/metapost// +@@ -264,13 +263,13 @@ MPINPUTS = .;$TEXMF/metapost// % We repeat the same definition three times because of the way fmtutil % is implemented; if we use ${TEXFORMATS}, the mpost/mf/etc. formats % will not be found. @@ -293,7 +288,7 @@ MFPOOL = ${TEXPOOL} MPPOOL = ${TEXPOOL} -@@ -293,7 +295,7 @@ GFFONTS = .;$TEXMF/fonts/gf/$MAKETEX_MOD +@@ -298,7 +297,7 @@ GFFONTS = .;$TEXMF/fonts/gf/$MAKETEX_MOD GLYPHFONTS = .;$TEXMF/fonts % A place to puth everything that doesn't fit the other font categories. @@ -302,7 +297,7 @@ % font name map files. This isn't just fonts/map// because ConTeXt % wants support for having files with the same name in the different -@@ -375,8 +377,8 @@ MPSUPPORT = .;$TEXMF/metapost/support +@@ -380,8 +379,8 @@ MPSUPPORT = .;$TEXMF/metapost/support % For xdvi to find mime.types and .mailcap, if they do not exist in % ~. These are single directories, not paths. % (But the default mime.types, at least, may well suffice.) @@ -312,35 +307,78 @@ +MAILCAPLIBDIR = /etc % Default settings for the fontconfig library as used by the Windows - % versions of xetex/xdvipdfmx. On Unixish systems, fontconfig ignores -@@ -463,7 +465,8 @@ RUBYINPUTS = .;$TEXMF/scripts/{$progna - % - % For security reasons, it is better not to include . in this path. + % versions of xetex/xdvipdfmx. Not used by xetex on Unixish systems. +@@ -485,33 +484,34 @@ RUBYINPUTS = .;$TEXMF/scripts/{$progna + % since we don't want to scatter ../'s throughout the value. Hence we + % explicitly list every directory. Arguably more understandable anyway. % --TEXMFCNF = {$SELFAUTOLOC,$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c} +-TEXMFCNF = {\ +-$SELFAUTOLOC,\ +-$SELFAUTOLOC/share/texmf-local/web2c,\ +-$SELFAUTOLOC/share/texmf-dist/web2c,\ +-$SELFAUTOLOC/share/texmf/web2c,\ +-$SELFAUTOLOC/texmf-local/web2c,\ +-$SELFAUTOLOC/texmf-dist/web2c,\ +-$SELFAUTOLOC/texmf/web2c,\ +-\ +-$SELFAUTODIR,\ +-$SELFAUTODIR/share/texmf-local/web2c,\ +-$SELFAUTODIR/share/texmf-dist/web2c,\ +-$SELFAUTODIR/share/texmf/web2c,\ +-$SELFAUTODIR/texmf-local/web2c,\ +-$SELFAUTODIR/texmf-dist/web2c,\ +-$SELFAUTODIR/texmf/web2c,\ +-\ +-$SELFAUTOPARENT/../texmf-local/web2c,\ +-$SELFAUTOPARENT,\ +-\ +-$SELFAUTOPARENT/share/texmf-local/web2c,\ +-$SELFAUTOPARENT/share/texmf-dist/web2c,\ +-$SELFAUTOPARENT/share/texmf/web2c,\ +-$SELFAUTOPARENT/texmf-local/web2c,\ +-$SELFAUTOPARENT/texmf-dist/web2c,\ +-$SELFAUTOPARENT/texmf/web2c\ +-} +TEXMFCNF = /etc/texmf;/etc/texmf/web2c;/var/lib/texmf/web2c;$TEXMF/web2c -+ - - % kpathsea 3.5.3 and later sets these at runtime. To avoid empty - % expansions from binaries linked against an earlier version of the -@@ -642,9 +645,9 @@ BIBTEX_CSFILE = 88591lat.csf - % For some xy-pic samples, you may need as much as 700000 words of memory. - % For the vast majority of documents, 60000 or less will do. ++%TEXMFCNF = {\ ++%$SELFAUTOLOC,\ ++%$SELFAUTOLOC/share/texmf-local/web2c,\ ++%$SELFAUTOLOC/share/texmf-dist/web2c,\ ++%$SELFAUTOLOC/share/texmf/web2c,\ ++%$SELFAUTOLOC/texmf-local/web2c,\ ++%$SELFAUTOLOC/texmf-dist/web2c,\ ++%$SELFAUTOLOC/texmf/web2c,\ ++%\ ++%$SELFAUTODIR,\ ++%$SELFAUTODIR/share/texmf-local/web2c,\ ++%$SELFAUTODIR/share/texmf-dist/web2c,\ ++%$SELFAUTODIR/share/texmf/web2c,\ ++%$SELFAUTODIR/texmf-local/web2c,\ ++%$SELFAUTODIR/texmf-dist/web2c,\ ++%$SELFAUTODIR/texmf/web2c,\ ++%\ ++%$SELFAUTOGRANDPARENT/texmf-local/web2c,\ ++%$SELFAUTOPARENT,\ ++%\ ++%$SELFAUTOPARENT/share/texmf-local/web2c,\ ++%$SELFAUTOPARENT/share/texmf-dist/web2c,\ ++%$SELFAUTOPARENT/share/texmf/web2c,\ ++%$SELFAUTOPARENT/texmf-local/web2c,\ ++%$SELFAUTOPARENT/texmf-dist/web2c,\ ++%$SELFAUTOPARENT/texmf/web2c\ ++%} % --main_memory = 3000000 % words of inimemory available; also applies to inimf&mp --extra_mem_top = 0 % extra high memory for chars, tokens, etc. --extra_mem_bot = 0 % extra low memory for boxes, glue, breakpoints, etc. -+main_memory = 3500000 % words of inimemory available; also applies to inimf&mp -+extra_mem_top = 0 % extra high memory for chars, tokens, etc. (has to be 0 for omega) -+extra_mem_bot = 0 % extra low memory for boxes, glue, breakpoints, etc. (has to be 0 for omega) - - % ConTeXt needs lots of memory. - extra_mem_top.context = 2000000 -@@ -728,3 +731,33 @@ max_strings.pbibtex = 35307 + % For reference, here is the old brace-using definition: + %TEXMFCNF = {$SELFAUTOLOC,$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c} +@@ -780,3 +780,37 @@ max_strings.pbibtex = 35307 line_length.gftype = 500 max_rows.gftype = 8191 max_cols.gftype = 8191 + ++% Guess input encoding (SJIS vs. Unicode, etc.) in pTeX and friends? ++% Default is 0, to not guess. ++guess_input_kanji_encoding = 0 ++ +% These are xmltex specific +main_memory.xmltex = 1500000 +param_size.xmltex = 1500 ++++++ kpfonts.doc.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/kpfonts.doc.tlpobj new/tlpkg/tlpobj/kpfonts.doc.tlpobj --- old/tlpkg/tlpobj/kpfonts.doc.tlpobj 2011-04-05 04:21:22.000000000 +0200 +++ new/tlpkg/tlpobj/kpfonts.doc.tlpobj 2013-04-10 21:03:50.000000000 +0200 @@ -1,6 +1,6 @@ name kpfonts.doc category Package -revision 21964 +revision 29803 shortdesc doc files of kpfonts relocated 1 docfiles size=567 ++++++ kpfonts.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/kpfonts.tlpobj new/tlpkg/tlpobj/kpfonts.tlpobj --- old/tlpkg/tlpobj/kpfonts.tlpobj 2011-04-05 04:21:23.000000000 +0200 +++ new/tlpkg/tlpobj/kpfonts.tlpobj 2013-04-10 21:03:51.000000000 +0200 @@ -1,6 +1,6 @@ name kpfonts category Package -revision 21964 +revision 29803 shortdesc A complete set of fonts for text and mathematics. relocated 1 longdesc The family contains text fonts in roman, sans-serif and @@ -1935,6 +1935,6 @@ RELOC/tex/latex/kpfonts/ujkpsyd.fd RELOC/tex/latex/kpfonts/ujkpsydw.fd catalogue-ctan /fonts/kpfonts -catalogue-date 2010-12-31 19:35:04 +0100 +catalogue-date 2012-07-05 15:28:28 +0200 catalogue-license gpl catalogue-version 3.31 ++++++ texlive-specs.tar.xz ++++++ ++++ 335945 lines of diff (skipped) -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org