From 0053a5222ec78ba41126c246eafd8cdb02f9a56a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 11 May 2015 21:37:36 +0000 Subject: context/11may15 git-svn-id: svn://tug.org/texlive/trunk@37341 c570f23f-e606-0410-a88d-b1316a301751 --- .../lexers/data/scite-context-data-context.lua | 2 +- .../context/lexers/scite-context-lexer-lua.lua | 19 +- .../context/lexers/scite-context-lexer-tex.lua | 22 +- .../scite/context/lexers/scite-context-lexer.lua | 229 ++++++++++++++--- .../context/scite-context-data-context.properties | 28 +-- Master/texmf-dist/doc/man/man1/context.man1.pdf | Bin 7742 -> 7742 bytes Master/texmf-dist/doc/man/man1/luatools.man1.pdf | Bin 5105 -> 5105 bytes Master/texmf-dist/doc/man/man1/mtx-babel.man1.pdf | Bin 3672 -> 3672 bytes Master/texmf-dist/doc/man/man1/mtx-base.man1.pdf | Bin 5124 -> 5124 bytes Master/texmf-dist/doc/man/man1/mtx-cache.man1.pdf | Bin 3694 -> 3694 bytes Master/texmf-dist/doc/man/man1/mtx-chars.man1.pdf | 16 +- Master/texmf-dist/doc/man/man1/mtx-check.man1.pdf | Bin 3554 -> 3554 bytes Master/texmf-dist/doc/man/man1/mtx-colors.man1.pdf | Bin 3442 -> 3442 bytes .../texmf-dist/doc/man/man1/mtx-context.man1.pdf | Bin 7742 -> 7742 bytes Master/texmf-dist/doc/man/man1/mtx-epub.man1.pdf | Bin 3826 -> 3826 bytes Master/texmf-dist/doc/man/man1/mtx-fcd.man1.pdf | Bin 3959 -> 3959 bytes Master/texmf-dist/doc/man/man1/mtx-flac.man1.pdf | Bin 3668 -> 3668 bytes Master/texmf-dist/doc/man/man1/mtx-fonts.man1.pdf | Bin 4213 -> 4213 bytes Master/texmf-dist/doc/man/man1/mtx-grep.man1.pdf | Bin 3545 -> 3545 bytes .../texmf-dist/doc/man/man1/mtx-interface.man1.pdf | Bin 4105 -> 4105 bytes .../texmf-dist/doc/man/man1/mtx-metapost.man1.pdf | 16 +- .../texmf-dist/doc/man/man1/mtx-metatex.man1.pdf | Bin 3630 -> 3630 bytes .../texmf-dist/doc/man/man1/mtx-modules.man1.pdf | Bin 3760 -> 3760 bytes .../texmf-dist/doc/man/man1/mtx-package.man1.pdf | Bin 3568 -> 3568 bytes .../texmf-dist/doc/man/man1/mtx-patterns.man1.pdf | Bin 4137 -> 4137 bytes Master/texmf-dist/doc/man/man1/mtx-pdf.man1.pdf | Bin 3695 -> 3695 bytes Master/texmf-dist/doc/man/man1/mtx-plain.man1.pdf | Bin 3709 -> 3709 bytes .../texmf-dist/doc/man/man1/mtx-profile.man1.pdf | 16 +- Master/texmf-dist/doc/man/man1/mtx-rsync.man1.pdf | Bin 3638 -> 3638 bytes Master/texmf-dist/doc/man/man1/mtx-scite.man1.pdf | Bin 3752 -> 3752 bytes Master/texmf-dist/doc/man/man1/mtx-server.man1.pdf | 16 +- .../texmf-dist/doc/man/man1/mtx-texworks.man1.pdf | Bin 3557 -> 3557 bytes Master/texmf-dist/doc/man/man1/mtx-timing.man1.pdf | Bin 3679 -> 3679 bytes Master/texmf-dist/doc/man/man1/mtx-tools.man1.pdf | Bin 3995 -> 3995 bytes Master/texmf-dist/doc/man/man1/mtx-unzip.man1.pdf | Bin 3597 -> 3597 bytes Master/texmf-dist/doc/man/man1/mtx-update.man1.pdf | Bin 5029 -> 5029 bytes Master/texmf-dist/doc/man/man1/mtx-watch.man1.pdf | Bin 3867 -> 3867 bytes .../texmf-dist/doc/man/man1/mtx-youless.man1.pdf | Bin 3858 -> 3858 bytes Master/texmf-dist/doc/man/man1/mtxrun.man1.pdf | Bin 7216 -> 7216 bytes Master/texmf-dist/doc/man/man1/texexec.man1.pdf | Bin 4713 -> 4713 bytes Master/texmf-dist/doc/man/man1/texmfstart.man1.pdf | Bin 7216 -> 7216 bytes Master/texmf-dist/scripts/context/lua/mtx-flac.lua | 42 ++-- Master/texmf-dist/tex/context/base/back-exp.lua | 118 ++++++--- Master/texmf-dist/tex/context/base/back-exp.mkiv | 6 + Master/texmf-dist/tex/context/base/char-ini.lua | 3 + Master/texmf-dist/tex/context/base/char-tex.lua | 10 + Master/texmf-dist/tex/context/base/char-utf.lua | 14 +- Master/texmf-dist/tex/context/base/cont-new.mkiv | 2 +- .../tex/context/base/context-version.pdf | Bin 4188 -> 4174 bytes Master/texmf-dist/tex/context/base/context.mkiv | 4 +- Master/texmf-dist/tex/context/base/core-uti.lua | 2 +- Master/texmf-dist/tex/context/base/font-odv.lua | 18 +- Master/texmf-dist/tex/context/base/lpdf-tag.lua | 56 ++++- Master/texmf-dist/tex/context/base/lpdf-wid.lua | 44 +++- Master/texmf-dist/tex/context/base/lxml-ini.lua | 7 +- Master/texmf-dist/tex/context/base/lxml-ini.mkiv | 8 +- Master/texmf-dist/tex/context/base/lxml-tex.lua | 16 ++ Master/texmf-dist/tex/context/base/m-visual.mkiv | 4 +- Master/texmf-dist/tex/context/base/math-fen.mkiv | 12 + Master/texmf-dist/tex/context/base/math-ini.lua | 37 +-- Master/texmf-dist/tex/context/base/math-ini.mkiv | 226 ++++++++++++++--- Master/texmf-dist/tex/context/base/mult-def.mkiv | 6 + Master/texmf-dist/tex/context/base/mult-low.lua | 2 +- Master/texmf-dist/tex/context/base/publ-aut.lua | 269 +++++++++++--------- Master/texmf-dist/tex/context/base/publ-dat.lua | 7 + .../texmf-dist/tex/context/base/publ-imp-apa.mkvi | 275 ++++++++++----------- .../texmf-dist/tex/context/base/publ-imp-aps.mkvi | 268 ++++++++++---------- .../tex/context/base/publ-imp-author.mkvi | 10 +- .../texmf-dist/tex/context/base/publ-imp-cite.mkvi | 13 - .../tex/context/base/publ-imp-default.mkvi | 36 ++- .../texmf-dist/tex/context/base/publ-imp-list.mkvi | 6 +- Master/texmf-dist/tex/context/base/publ-ini.lua | 275 ++++++++++++++++----- Master/texmf-dist/tex/context/base/publ-ini.mkiv | 86 ++++++- Master/texmf-dist/tex/context/base/publ-sor.lua | 184 +++++++++----- Master/texmf-dist/tex/context/base/spac-ali.mkiv | 4 + .../texmf-dist/tex/context/base/status-files.pdf | Bin 24439 -> 24469 bytes Master/texmf-dist/tex/context/base/status-lua.pdf | Bin 250844 -> 251107 bytes Master/texmf-dist/tex/context/base/tabl-ntb.mkiv | 80 +++--- Master/texmf-dist/tex/context/base/x-asciimath.lua | 56 +++-- .../texmf-dist/tex/context/interface/cont-cs.xml | 1 + .../texmf-dist/tex/context/interface/cont-de.xml | 1 + .../texmf-dist/tex/context/interface/cont-en.xml | 1 + .../texmf-dist/tex/context/interface/cont-fr.xml | 1 + .../texmf-dist/tex/context/interface/cont-it.xml | 1 + .../texmf-dist/tex/context/interface/cont-nl.xml | 1 + .../texmf-dist/tex/context/interface/cont-pe.xml | 1 + .../texmf-dist/tex/context/interface/cont-ro.xml | 1 + .../generic/context/luatex/luatex-fonts-merged.lua | 2 +- 88 files changed, 1750 insertions(+), 830 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/context/data/scite/context/lexers/data/scite-context-data-context.lua b/Master/texmf-dist/context/data/scite/context/lexers/data/scite-context-data-context.lua index 0dc4c4af000..0fe56100b94 100644 --- a/Master/texmf-dist/context/data/scite/context/lexers/data/scite-context-data-context.lua +++ b/Master/texmf-dist/context/data/scite/context/lexers/data/scite-context-data-context.lua @@ -1,4 +1,4 @@ return { - ["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "plussixteen", "plushundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "spaceasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vcentergroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "vadjustgroupcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathsupdisplay", "mathsupnormal", "mathsupcramped", "mathsubnormal", "mathsubcombined", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "setupdocument", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar" }, + ["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "plussixteen", "plushundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "spaceasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vcentergroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "vadjustgroupcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathsupdisplay", "mathsupnormal", "mathsupcramped", "mathsubnormal", "mathsubcombined", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "setupdocument", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "everystoptext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar" }, ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "strippedcsname", "checkedstrippedcsname", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthsargumenttrue", "sixthargumentfalse", "sixtsargumenttrue", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "dontcomplain", "forgetall", "donetrue", "donefalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "reqno", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchcounter", "globalscratchcounter", "scratchdimen", "globalscratchdimen", "scratchskip", "globalscratchskip", "scratchmuskip", "globalscratchmuskip", "scratchtoks", "globalscratchtoks", "scratchbox", "globalscratchbox", "normalbaselineskip", "normallineskip", "normallineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "tracingall", "tracingnone", "loggingall", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "everyendpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "nbsp", "obeyspaces", "obeylines", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "glet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protected", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "dowith", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "newmacro", "setnewmacro", "newfraction", "newsignal", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "begstrut", "endstrut", "lineheight", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "uncramped", "cramped", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "carryoverpar", "assumelongusagecs", "Umathbotaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "lefttoright", "righttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "nobreak", "allowbreak", "goodbreak" }, } \ No newline at end of file diff --git a/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer-lua.lua b/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer-lua.lua index 3d5d18fc80c..9bee7484510 100644 --- a/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer-lua.lua +++ b/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer-lua.lua @@ -165,6 +165,7 @@ lexer.embed_lexer(lualexer, stringlexer, token("quote",longtwostart), token("str local integer = P("-")^-1 * (patterns.hexadecimal + patterns.decimal) local number = token("number", patterns.float + integer) + * (token("error",R("AZ","az","__")^1))^0 -- officially 127-255 are ok but not utf so useless @@ -197,12 +198,20 @@ local gotolabel = token("keyword", P("::")) * (spacing + shortcomment)^0 * token("keyword", P("::")) -local p_keywords = exact_match(keywords) -local p_functions = exact_match(functions) -local p_constants = exact_match(constants) +----- p_keywords = exact_match(keywords) +----- p_functions = exact_match(functions) +----- p_constants = exact_match(constants) +----- p_internals = P("__") +----- * exact_match(internals) + +local p_finish = #(1-R("az","AZ","__")) +local p_keywords = lexer.helpers.utfchartabletopattern(keywords) * p_finish -- exact_match(keywords) +local p_functions = lexer.helpers.utfchartabletopattern(functions) * p_finish -- exact_match(functions) +local p_constants = lexer.helpers.utfchartabletopattern(constants) * p_finish -- exact_match(constants) local p_internals = P("__") - * exact_match(internals) -local p_csnames = just_match(csnames) + * lexer.helpers.utfchartabletopattern(internals) * p_finish -- exact_match(internals) + +local p_csnames = lexer.helpers.utfchartabletopattern(csnames) * p_finish -- just_match(csnames) local keyword = token("keyword", p_keywords) local builtin = token("plain", p_functions) local constant = token("data", p_constants) diff --git a/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer-tex.lua b/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer-tex.lua index b109630ce8f..ad73f42179d 100644 --- a/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer-tex.lua +++ b/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer-tex.lua @@ -214,10 +214,16 @@ local p_rest = any local p_preamble = knownpreamble local p_comment = commentline -local p_command = backslash * knowncommand -local p_constant = backslash * exact_match(constants) -local p_helper = backslash * exact_match(helpers) -local p_primitive = backslash * exact_match(primitives) +----- p_command = backslash * knowncommand +----- p_constant = backslash * exact_match(constants) +----- p_helper = backslash * exact_match(helpers) +----- p_primitive = backslash * exact_match(primitives) + +local p_command = backslash * lexer.helpers.utfchartabletopattern(currentcommands) * #(1-cstoken) +local p_constant = backslash * lexer.helpers.utfchartabletopattern(constants) * #(1-cstoken) +local p_helper = backslash * lexer.helpers.utfchartabletopattern(helpers) * #(1-cstoken) +local p_primitive = backslash * lexer.helpers.utfchartabletopattern(primitives) * #(1-cstoken) + local p_ifprimitive = P("\\if") * cstoken^1 local p_csname = backslash * (cstoken^1 + P(1)) local p_grouping = S("{$}") @@ -422,7 +428,10 @@ local metafunenvironment = metafuncall -- ( P("use") + P("reusable") + P("un local startmetafun = P("\\start") * metafunenvironment local stopmetafun = P("\\stop") * metafunenvironment -- todo match start -local xmlmacro = token("embedded", P("\\xml") * R("az")^1) +----- subsystem = token("embedded", P("\\xml") * R("az")^1 + (P("\\st") * (P("art") + P("op")) * P("xmlsetups"))) +local subsystemtags = P("xml") + P("btx") -- will be pluggable or maybe even a proper list of valid commands +local subsystemmacro = P("\\") * (subsystemtags * R("az")^1 + (R("az")-subsystemtags)^1 * subsystemtags * R("az")^1) +local subsystem = token("embedded", subsystemmacro) local openargument = token("special", P("{")) local closeargument = token("special", P("}")) @@ -446,12 +455,13 @@ contextlexer._rules = { { "text", text }, -- non words { "comment", comment }, { "constant", constant }, - { "xmlmacro", xmlmacro }, + -- { "subsystem", subsystem }, { "callers", callers }, { "helper", helper }, { "command", command }, { "primitive", primitive }, { "ifprimitive", ifprimitive }, + { "subsystem", subsystem }, { "reserved", reserved }, { "csname", csname }, -- { "whatever", specialword }, -- not yet, crashes diff --git a/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer.lua b/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer.lua index 6335af91151..4d401ac7b0a 100644 --- a/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer.lua +++ b/Master/texmf-dist/context/data/scite/context/lexers/scite-context-lexer.lua @@ -13,6 +13,8 @@ local info = { -- todo: make sure we can run in one state .. copies or shared? -- todo: auto-nesting +if lpeg.setmaxstack then lpeg.setmaxstack(1000) end + local log = false local trace = false local detail = false @@ -200,11 +202,13 @@ local inspect = false -- can save some 15% (maybe easier on scintilla) -- reload the word lists each time. (In the past I assumed a shared instance and took -- some precautions.) +-- todo: make sure we don't overload context definitions when used in context + local lpeg = require("lpeg") local global = _G local find, gmatch, match, lower, upper, gsub, sub, format = string.find, string.gmatch, string.match, string.lower, string.upper, string.gsub, string.sub, string.format -local concat = table.concat +local concat, sort = table.concat, table.sort local type, next, setmetatable, rawset, tonumber, tostring = type, next, setmetatable, rawset, tonumber, tostring local R, P, S, V, C, Cp, Cs, Ct, Cmt, Cc, Cf, Cg, Carg = lpeg.R, lpeg.P, lpeg.S, lpeg.V, lpeg.C, lpeg.Cp, lpeg.Cs, lpeg.Ct, lpeg.Cmt, lpeg.Cc, lpeg.Cf, lpeg.Cg, lpeg.Carg local lpegmatch = lpeg.match @@ -263,7 +267,9 @@ end local lexers = { } local context = { } +local helpers = { } lexers.context = context +lexers.helpers = helpers local patterns = { } context.patterns = patterns -- todo: lexers.patterns @@ -279,6 +285,21 @@ if resolvers then -- todo: set report end +local function sortedkeys(hash) -- simple version, good enough for here + local t, n = { }, 0 + for k, v in next, hash do + t[#t+1] = k + local l = #tostring(k) + if l > n then + n = l + end + end + sort(t) + return t, n +end + +helpers.sortedkeys = sortedkeys + local usedlexers = { } local parent_lexer = nil @@ -548,19 +569,6 @@ end context.toproperty = toproperty context.tostyles = tostyles -local function sortedkeys(hash) - local t, n = { }, 0 - for k, v in next, hash do - t[#t+1] = k - local l = #tostring(k) - if l > n then - n = l - end - end - table.sort(t) - return t, n -end - -- If we had one instance/state of Lua as well as all regular libraries -- preloaded we could use the context base libraries. So, let's go poor- -- mans solution now. @@ -1834,43 +1842,194 @@ do context.utfchar = utfchar - -- a helper from l-lpeg: + -- -- the next one is good enough for use here but not perfect (see context for a + -- -- better one) + -- + -- local function make(t) + -- local p + -- for k, v in next, t do + -- if not p then + -- if next(v) then + -- p = P(k) * make(v) + -- else + -- p = P(k) + -- end + -- else + -- if next(v) then + -- p = p + P(k) * make(v) + -- else + -- p = p + P(k) + -- end + -- end + -- end + -- return p + -- end + -- + -- function lpeg.utfchartabletopattern(list) + -- local tree = { } + -- for i=1,#list do + -- local t = tree + -- for c in gmatch(list[i],".") do + -- if not t[c] then + -- t[c] = { } + -- end + -- t = t[c] + -- end + -- end + -- return make(tree) + -- end + + helpers.utfcharpattern = P(1) * R("\128\191")^0 -- unchecked but fast + + local p_false = P(false) + local p_true = P(true) local function make(t) - local p - for k, v in next, t do - if not p then - if next(v) then - p = P(k) * make(v) - else - p = P(k) + local function making(t) + local p = p_false + local keys = sortedkeys(t) + for i=1,#keys do + local k = keys[i] + if k ~= "" then + local v = t[k] + if v == true then + p = p + P(k) * p_true + elseif v == false then + -- can't happen + else + p = p + P(k) * making(v) + end end - else - if next(v) then - p = p + P(k) * make(v) + end + if t[""] then + p = p + p_true + end + return p + end + local p = p_false + local keys = sortedkeys(t) + for i=1,#keys do + local k = keys[i] + if k ~= "" then + local v = t[k] + if v == true then + p = p + P(k) * p_true + elseif v == false then + -- can't happen else - p = p + P(k) + p = p + P(k) * making(v) end end end return p end - function lpeg.utfchartabletopattern(list) + local function collapse(t,x) + if type(t) ~= "table" then + return t, x + else + local n = next(t) + if n == nil then + return t, x + elseif next(t,n) == nil then + -- one entry + local k = n + local v = t[k] + if type(v) == "table" then + return collapse(v,x..k) + else + return v, x .. k + end + else + local tt = { } + for k, v in next, t do + local vv, kk = collapse(v,k) + tt[kk] = vv + end + return tt, x + end + end + end + + function helpers.utfchartabletopattern(list) local tree = { } - for i=1,#list do - local t = tree - for c in gmatch(list[i],".") do - if not t[c] then - t[c] = { } + local n = #list + if n == 0 then + for s in next, list do + local t = tree + local p, pk + for c in gmatch(s,".") do + if t == true then + t = { [c] = true, [""] = true } + p[pk] = t + p = t + t = false + elseif t == false then + t = { [c] = false } + p[pk] = t + p = t + t = false + else + local tc = t[c] + if not tc then + tc = false + t[c] = false + end + p = t + t = tc + end + pk = c + end + if t == false then + p[pk] = true + elseif t == true then + -- okay + else + t[""] = true + end + end + else + for i=1,n do + local s = list[i] + local t = tree + local p, pk + for c in gmatch(s,".") do + if t == true then + t = { [c] = true, [""] = true } + p[pk] = t + p = t + t = false + elseif t == false then + t = { [c] = false } + p[pk] = t + p = t + t = false + else + local tc = t[c] + if not tc then + tc = false + t[c] = false + end + p = t + t = tc + end + pk = c + end + if t == false then + p[pk] = true + elseif t == true then + -- okay + else + t[""] = true end - t = t[c] end end + collapse(tree,"") + -- inspect(tree) return make(tree) end - patterns.invisibles = lpeg.utfchartabletopattern { + patterns.invisibles = helpers.utfchartabletopattern { utfchar(0x00A0), -- nbsp utfchar(0x2000), -- enquad utfchar(0x2001), -- emquad @@ -1895,7 +2054,7 @@ do end --- The following helpers are not used, partyally replace by other mechanism and +-- The following helpers are not used, partially replaced by other mechanisms and -- when needed I'll first optimize them. I only made them somewhat more readable. function lexers.delimited_range(chars, single_line, no_escape, balanced) -- unchanged diff --git a/Master/texmf-dist/context/data/scite/context/scite-context-data-context.properties b/Master/texmf-dist/context/data/scite/context/scite-context-data-context.properties index 6cd49449ce0..717b08c80db 100644 --- a/Master/texmf-dist/context/data/scite/context/scite-context-data-context.properties +++ b/Master/texmf-dist/context/data/scite/context/scite-context-data-context.properties @@ -51,20 +51,20 @@ stopproduct product startproject stopproject project \ starttext stoptext startnotext stopnotext startdocument \ stopdocument documentvariable setupdocument startmodule stopmodule \ usemodule usetexmodule useluamodule setupmodule currentmoduleparameter \ -moduleparameter everystarttext startTEXpage stopTEXpage enablemode \ -disablemode preventmode definemode globalenablemode globaldisablemode \ -globalpreventmode pushmode popmode typescriptone typescripttwo \ -typescriptthree mathsizesuffix mathordcode mathopcode mathbincode \ -mathrelcode mathopencode mathclosecode mathpunctcode mathalphacode \ -mathinnercode mathnothingcode mathlimopcode mathnolopcode mathboxcode \ -mathchoicecode mathaccentcode mathradicalcode constantnumber constantnumberargument \ -constantdimen constantdimenargument constantemptyargument continueifinputfile luastringsep \ -!!bs !!es lefttorightmark righttoleftmark breakablethinspace \ -nobreakspace nonbreakablespace narrownobreakspace zerowidthnobreakspace ideographicspace \ -ideographichalffillspace twoperemspace threeperemspace fourperemspace fiveperemspace \ -sixperemspace figurespace punctuationspace hairspace zerowidthspace \ -zerowidthnonjoiner zerowidthjoiner zwnj zwj optionalspace \ -asciispacechar +moduleparameter everystarttext everystoptext startTEXpage stopTEXpage \ +enablemode disablemode preventmode definemode globalenablemode \ +globaldisablemode globalpreventmode pushmode popmode typescriptone \ +typescripttwo typescriptthree mathsizesuffix mathordcode mathopcode \ +mathbincode mathrelcode mathopencode mathclosecode mathpunctcode \ +mathalphacode mathinnercode mathnothingcode mathlimopcode mathnolopcode \ +mathboxcode mathchoicecode mathaccentcode mathradicalcode constantnumber \ +constantnumberargument constantdimen constantdimenargument constantemptyargument continueifinputfile \ +luastringsep !!bs !!es lefttorightmark righttoleftmark \ +breakablethinspace nobreakspace nonbreakablespace narrownobreakspace zerowidthnobreakspace \ +ideographicspace ideographichalffillspace twoperemspace threeperemspace fourperemspace \ +fiveperemspace sixperemspace figurespace punctuationspace hairspace \ +zerowidthspace zerowidthnonjoiner zerowidthjoiner zwnj zwj \ +optionalspace asciispacechar keywordclass.context.helpers=\ startsetups stopsetups startxmlsetups stopxmlsetups \ diff --git a/Master/texmf-dist/doc/man/man1/context.man1.pdf b/Master/texmf-dist/doc/man/man1/context.man1.pdf index 4a870f4d93c..703d9ac786f 100644 Binary files a/Master/texmf-dist/doc/man/man1/context.man1.pdf and b/Master/texmf-dist/doc/man/man1/context.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/luatools.man1.pdf b/Master/texmf-dist/doc/man/man1/luatools.man1.pdf index edb9a4ff1da..2c9c4bd9a73 100644 Binary files a/Master/texmf-dist/doc/man/man1/luatools.man1.pdf and b/Master/texmf-dist/doc/man/man1/luatools.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-babel.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-babel.man1.pdf index 3a3f1240877..024f2edcf68 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-babel.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-babel.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-base.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-base.man1.pdf index 3b800e5b76a..8be70ab105b 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-base.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-base.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-cache.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-cache.man1.pdf index 41de3ad1cc3..397a8930a85 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-cache.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-cache.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-chars.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-chars.man1.pdf index 9bf40c36318..a3c9ab98880 100644 --- a/Master/texmf-dist/doc/man/man1/mtx-chars.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/mtx-chars.man1.pdf @@ -63,12 +63,12 @@ endobj - -2015-05-09T00:36:00+02:00 -2015-05-09T00:36:00+02:00 + +2015-05-11T23:36:51+02:00 +2015-05-11T23:36:51+02:00 groff version 1.22.3 - -Untitled + +Untitled @@ -78,8 +78,8 @@ endstream endobj 2 0 obj <>endobj xref 0 14 @@ -99,7 +99,7 @@ xref 0000001555 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R -/ID [] +/ID [<74DB89008A1EDF9001362DB8FDE03A2E><74DB89008A1EDF9001362DB8FDE03A2E>] >> startxref 3132 diff --git a/Master/texmf-dist/doc/man/man1/mtx-check.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-check.man1.pdf index 483b3760674..2c2ff4df5a8 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-check.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-check.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-colors.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-colors.man1.pdf index 13e06c8ff5d..dffaf341aea 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-colors.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-colors.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-context.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-context.man1.pdf index cbde2db055f..621f6bd3d11 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-context.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-context.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-epub.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-epub.man1.pdf index f4cae8b546b..d2b1be3a50e 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-epub.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-epub.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-fcd.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-fcd.man1.pdf index 8294de3db7e..43aa7669a94 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-fcd.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-fcd.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-flac.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-flac.man1.pdf index 0075be364a2..74e1737d6d1 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-flac.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-flac.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-fonts.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-fonts.man1.pdf index c82b7cea58b..99dd70da231 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-fonts.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-fonts.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-grep.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-grep.man1.pdf index a5964088d30..8edb091adae 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-grep.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-grep.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-interface.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-interface.man1.pdf index 2eba4805423..af99945435c 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-interface.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-interface.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-metapost.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-metapost.man1.pdf index cbea2f24e09..36bdf71261b 100644 --- a/Master/texmf-dist/doc/man/man1/mtx-metapost.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/mtx-metapost.man1.pdf @@ -66,12 +66,12 @@ endobj - -2015-05-09T00:35:57+02:00 -2015-05-09T00:35:57+02:00 + +2015-05-11T23:36:48+02:00 +2015-05-11T23:36:48+02:00 groff version 1.22.3 - -Untitled + +Untitled @@ -81,8 +81,8 @@ endstream endobj 2 0 obj <>endobj xref 0 15 @@ -103,7 +103,7 @@ xref 0000001681 00000 n trailer << /Size 15 /Root 1 0 R /Info 2 0 R -/ID [] +/ID [<4B9E6FC950F108BC8D31A75FC7D18D4C><4B9E6FC950F108BC8D31A75FC7D18D4C>] >> startxref 3258 diff --git a/Master/texmf-dist/doc/man/man1/mtx-metatex.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-metatex.man1.pdf index 80cbb48fb31..f7b6e95796a 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-metatex.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-metatex.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-modules.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-modules.man1.pdf index 7521e89e55a..ac8123220f4 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-modules.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-modules.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-package.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-package.man1.pdf index 861f73daa2b..f3e682f398b 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-package.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-package.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-patterns.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-patterns.man1.pdf index 64d53938344..f081aa823b7 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-patterns.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-patterns.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-pdf.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-pdf.man1.pdf index 7ae8559db87..2f369ab55db 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-pdf.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-pdf.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-plain.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-plain.man1.pdf index d53f8d648c7..d4569fa6854 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-plain.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-plain.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-profile.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-profile.man1.pdf index 23d36d005ca..8b39b382420 100644 --- a/Master/texmf-dist/doc/man/man1/mtx-profile.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/mtx-profile.man1.pdf @@ -72,12 +72,12 @@ endobj - -2015-05-09T00:35:58+02:00 -2015-05-09T00:35:58+02:00 + +2015-05-11T23:36:49+02:00 +2015-05-11T23:36:49+02:00 groff version 1.22.3 - -Untitled + +Untitled @@ -87,8 +87,8 @@ endstream endobj 2 0 obj <>endobj xref 0 16 @@ -110,7 +110,7 @@ xref 0000001640 00000 n trailer << /Size 16 /Root 1 0 R /Info 2 0 R -/ID [] +/ID [] >> startxref 3217 diff --git a/Master/texmf-dist/doc/man/man1/mtx-rsync.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-rsync.man1.pdf index c4ab06f3360..31c6949c1a2 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-rsync.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-rsync.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-scite.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-scite.man1.pdf index 3d881ad0d5a..e1a3c8d3d99 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-scite.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-scite.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-server.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-server.man1.pdf index f24c21adec0..b8d88b229ab 100644 --- a/Master/texmf-dist/doc/man/man1/mtx-server.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/mtx-server.man1.pdf @@ -69,12 +69,12 @@ endobj - -2015-05-09T00:36:01+02:00 -2015-05-09T00:36:01+02:00 + +2015-05-11T23:36:53+02:00 +2015-05-11T23:36:53+02:00 groff version 1.22.3 - -Untitled + +Untitled @@ -84,8 +84,8 @@ endstream endobj 2 0 obj <>endobj xref 0 15 @@ -106,7 +106,7 @@ xref 0000001722 00000 n trailer << /Size 15 /Root 1 0 R /Info 2 0 R -/ID [<862DA362506A94265B2B8A494C0EDB8F><862DA362506A94265B2B8A494C0EDB8F>] +/ID [] >> startxref 3299 diff --git a/Master/texmf-dist/doc/man/man1/mtx-texworks.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-texworks.man1.pdf index b90383bfd3d..15bb74291d3 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-texworks.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-texworks.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-timing.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-timing.man1.pdf index e197a74936f..880e26cd8f3 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-timing.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-timing.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-tools.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-tools.man1.pdf index 6b58b62eda6..12e5164a68f 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-tools.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-tools.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-unzip.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-unzip.man1.pdf index 1cf5e694863..30b84208aed 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-unzip.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-unzip.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-update.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-update.man1.pdf index d9071fa0ab6..92c9c8ad05c 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-update.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-update.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-watch.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-watch.man1.pdf index 311c2cdd85c..a1e76baf5d4 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-watch.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-watch.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtx-youless.man1.pdf b/Master/texmf-dist/doc/man/man1/mtx-youless.man1.pdf index 4ba227af1d3..34a51ef01e7 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtx-youless.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtx-youless.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/mtxrun.man1.pdf b/Master/texmf-dist/doc/man/man1/mtxrun.man1.pdf index 213944aa9d5..218b4842840 100644 Binary files a/Master/texmf-dist/doc/man/man1/mtxrun.man1.pdf and b/Master/texmf-dist/doc/man/man1/mtxrun.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/texexec.man1.pdf b/Master/texmf-dist/doc/man/man1/texexec.man1.pdf index a1a0ffd9007..9ddafff6875 100644 Binary files a/Master/texmf-dist/doc/man/man1/texexec.man1.pdf and b/Master/texmf-dist/doc/man/man1/texexec.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/texmfstart.man1.pdf b/Master/texmf-dist/doc/man/man1/texmfstart.man1.pdf index 89d81bc4a6a..0501cc38531 100644 Binary files a/Master/texmf-dist/doc/man/man1/texmfstart.man1.pdf and b/Master/texmf-dist/doc/man/man1/texmfstart.man1.pdf differ diff --git a/Master/texmf-dist/scripts/context/lua/mtx-flac.lua b/Master/texmf-dist/scripts/context/lua/mtx-flac.lua index 4e01abc997f..eb3b485911d 100644 --- a/Master/texmf-dist/scripts/context/lua/mtx-flac.lua +++ b/Master/texmf-dist/scripts/context/lua/mtx-flac.lua @@ -107,29 +107,34 @@ function flac.savecollection(pattern,filename) local music = { } table.sort(files) for i=1,#files do - local data = flac.getmetadata(files[i]) + local name = files[i] + local data = flac.getmetadata(name) if data then local tags = data.tags local info = data.info - local artist = tags.artist or "no-artist" - local album = tags.album or "no-album" - local albums = music[artist] - if not albums then - albums = { } - music[artist] = albums - end - local albumx = albums[album] - if not albumx then - albumx = { - year = tags.date, - tracks = { }, + if tags and info then + local artist = tags.artist or "no-artist" + local album = tags.album or "no-album" + local albums = music[artist] + if not albums then + albums = { } + music[artist] = albums + end + local albumx = albums[album] + if not albumx then + albumx = { + year = tags.date, + tracks = { }, + } + albums[album] = albumx + end + albumx.tracks[tonumber(tags.tracknumber) or 0] = { + title = tags.title, + length = math.round((info.samples_in_stream/info.sample_rate_in_hz)), } - albums[album] = albumx + else + flac.report("unable to read file",name) end - albumx.tracks[tonumber(tags.tracknumber) or 0] = { - title = tags.title, - length = math.round((info.samples_in_stream/info.sample_rate_in_hz)), - } end end -- inspect(music) @@ -153,6 +158,7 @@ function flac.savecollection(pattern,filename) return ya < yb end end) + nofalbums = nofalbums + #list for nofalbums=1,#list do local album = list[nofalbums] local data = albums[album] diff --git a/Master/texmf-dist/tex/context/base/back-exp.lua b/Master/texmf-dist/tex/context/base/back-exp.lua index 9e127cb095c..33b6aa1e8ea 100644 --- a/Master/texmf-dist/tex/context/base/back-exp.lua +++ b/Master/texmf-dist/tex/context/base/back-exp.lua @@ -68,6 +68,7 @@ local attributes = attributes local variables = interfaces.variables local v_yes = variables.yes local v_no = variables.no +local v_hidden = variables.hidden local implement = interfaces.implement @@ -202,6 +203,8 @@ local p_attribute = lpeg.replacer(attribentities) local p_stripper = lpeg.patterns.stripper local p_escaped = lpeg.patterns.xml.escaped +local f_tagid = formatters["%s-%04i"] + -- local alignmapping = { -- flushright = "right", -- middle = "center", @@ -1002,10 +1005,10 @@ end do - local automathrows = true directives.register("backend.export.math.autorows", function(v) automathrows = v end) - local automathapply = true directives.register("backend.export.math.autoapply", function(v) automathapply = v end) - local automathnumber = true directives.register("backend.export.math.autonumber", function(v) automathnumber = v end) - local automathstrip = true directives.register("backend.export.math.autostrip", function(v) automathstrip = v end) + local automathrows = true directives.register("export.math.autorows", function(v) automathrows = v end) + local automathapply = true directives.register("export.math.autoapply", function(v) automathapply = v end) + local automathnumber = true directives.register("export.math.autonumber", function(v) automathnumber = v end) + local automathstrip = true directives.register("export.math.autostrip", function(v) automathstrip = v end) local functions = mathematics.categories.functions @@ -1838,7 +1841,7 @@ do result[#result+1] = "

\n" end - local function emptytag(result,element,nature,di) -- currently only break but at some point + local function emptytag(result,embedded,element,nature,di) -- currently only break but at some point local a = di.attributes -- we might add detail etc if a then -- happens seldom if nature == "display" then @@ -1859,7 +1862,7 @@ do end end - local function begintag(result,element,nature,di,skip) + local function begintag(result,embedded,element,nature,di,skip) local index = di.n local fulltag = di.fulltag local specification = specifications[fulltag] or { } -- we can have a dummy @@ -1882,6 +1885,13 @@ do elseif skip then -- ignore else + + -- if embedded then + -- if element == "math" then + -- embedded[f_tagid(element,index)] = #result+1 + -- end + -- end + local n = 0 local r = { } -- delay this if detail then @@ -1991,7 +2001,7 @@ do end end - local function endtag(result,element,nature,di,skip) + local function endtag(result,embedded,element,nature,di,skip) if skip == "comment" then if show_comment then if nature == "display" and (inline == 0 or inline == 1) then @@ -2022,10 +2032,18 @@ do inline = inline - 1 result[#result+1] = f_end_inline(namespaced[element]) end + + -- if embedded then + -- if element == "math" then + -- local id = f_tagid(element,di.n) -- index) + -- local tx = concat(result,"",embedded[id],#result) + -- embedded[id] = "" .. "\n" .. tx + -- end + -- end end end - local function flushtree(result,data,nature) + local function flushtree(result,embedded,data,nature) local nofdata = #data for i=1,nofdata do local di = data[i] @@ -2033,7 +2051,7 @@ do -- whatever else local content = di.content --- also optimize for content == "" : trace that first + -- also optimize for content == "" : trace that first if content then -- already has breaks local content = lpegmatch(p_entity,content) @@ -2057,23 +2075,23 @@ do if not element then -- skip elseif element == "break" then -- or element == "pagebreak" - emptytag(result,element,nature,di) + emptytag(result,embedded,element,nature,di) elseif element == "" or di.skip == "ignore" then -- skip else if di.before then - flushtree(result,di.before,nature) + flushtree(result,embedded,di.before,nature) end local natu = di.nature local skip = di.skip if di.breaknode then - emptytag(result,"break","display",di) + emptytag(result,embedded,"break","display",di) end - begintag(result,element,natu,di,skip) - flushtree(result,di.data,natu) - endtag(result,element,natu,di,skip) + begintag(result,embedded,element,natu,di,skip) + flushtree(result,embedded,di.data,natu) + endtag(result,embedded,element,natu,di,skip) if di.after then - flushtree(result,di.after,nature) + flushtree(result,embedded,di.after,nature) end end end @@ -2976,14 +2994,15 @@ local htmltemplate = [[ return concat(result,"\n\n") end - local function allcontent(tree) - local result = { } - flushtree(result,tree.data,"display") -- we need to collect images + local function allcontent(tree,embed) + local result = { } + local embedded = embed and { } + flushtree(result,embedded,tree.data,"display") -- we need to collect images result = concat(result) -- no need to lpeg .. fast enough result = gsub(result,"\n *\n","\n") result = gsub(result,"\n +([^< ])","\n%1") - return result + return result, embedded end -- local xhtmlpreamble = [[ @@ -3217,6 +3236,9 @@ local htmltemplate = [[ local addsuffix = file.addsuffix local joinfile = file.join + local embedfile = false directives.register("export.embed",function(v) embedfile = v end) + local embedmath = false + local function stopexport(v) starttiming(treehash) @@ -3359,9 +3381,39 @@ local htmltemplate = [[ end end - local result = allcontent(tree) + local result, embedded = allcontent(tree,embedmath) -- embedfile is for testing - local results = concat { + local attach = backends.nodeinjections.attachfile + + if embedfile and attach then + -- only for testing + attach { + data = concat{ wholepreamble(true), result }, + name = file.basename(xmlfilename), + registered = "export", + title = "raw xml export", + method = v_hidden, + mimetype = "application/mathml+xml", + } + end + -- if embedmath and attach then + -- local refs = { } + -- for k, v in sortedhash(embedded) do + -- attach { + -- data = v, + -- file = file.basename(k), + -- name = file.addsuffix(k,"xml"), + -- registered = k, + -- reference = k, + -- title = "xml export snippet: " .. k, + -- method = v_hidden, + -- mimetype = "application/mathml+xml", + -- } + -- refs[k] = 0 + -- end + -- end + + result = concat { wholepreamble(true), x_styles, -- adds to files result, @@ -3372,7 +3424,7 @@ local htmltemplate = [[ -- we're now ready for saving the result in the xml file report_export("saving xml data in %a",xmlfilename) - io.savedata(xmlfilename,results) + io.savedata(xmlfilename,result) report_export("saving css image definitions in %a",imagefilename) io.savedata(imagefilename,wrapups.allusedimages(basename)) @@ -3387,7 +3439,7 @@ local htmltemplate = [[ report_export("saving xhtml variant in %a",xhtmlfilename) - local xmltree = cleanxhtmltree(xml.convert(results)) + local xmltree = cleanxhtmltree(xml.convert(result)) xml.save(xmltree,xhtmlfilename) @@ -3465,8 +3517,6 @@ local htmltemplate = [[ end end - - local function startexport(v) if v and not exporting then report_export("enabling export to xml") @@ -3477,8 +3527,15 @@ local htmltemplate = [[ enableaction("math", "noads.handlers.tags") -- appendaction("finalizers","lists","builders.paragraphs.tag") -- enableaction("finalizers","builders.paragraphs.tag") - luatex.registerstopactions(function() stopexport(v) end) - exporting = true + luatex.registerstopactions(structurestags.finishexport) + exporting = v + end + end + + function structurestags.finishexport() + if exporting then + stopexport(exporting) + exporting = false end end @@ -3515,6 +3572,11 @@ implement { } } +implement { + name = "finishexport", + actions = structurestags.finishexport, +} + implement { name = "settagitemgroup", actions = structurestags.setitemgroup, diff --git a/Master/texmf-dist/tex/context/base/back-exp.mkiv b/Master/texmf-dist/tex/context/base/back-exp.mkiv index bddb6de4d92..a4ebe38aafa 100644 --- a/Master/texmf-dist/tex/context/base/back-exp.mkiv +++ b/Master/texmf-dist/tex/context/base/back-exp.mkiv @@ -240,6 +240,12 @@ \doifsomething{\backendparameter\c!export}\dosynchronizeexport \to \everystarttext +% better (before pdf gets closed, so we can embed), but it needs testing: + +\appendtoks + \clf_finishexport +\to \everystoptext + \appendtoks \doifsomething{\backendparameter\c!export}\dosynchronizeexport % in case it is done inside \starttext \to \everysetupdocument diff --git a/Master/texmf-dist/tex/context/base/char-ini.lua b/Master/texmf-dist/tex/context/base/char-ini.lua index c6192cc9bc1..4559fa28c49 100644 --- a/Master/texmf-dist/tex/context/base/char-ini.lua +++ b/Master/texmf-dist/tex/context/base/char-ini.lua @@ -828,6 +828,9 @@ local categories = allocate() characters.categories = categories -- lazy table setmetatableindex(categories, function(t,u) if u then local c = data[u] c = c and c.category or u t[u] = c return c end end) +-- todo: overloads (these register directly in the tables as number and string) e.g. for greek +-- todo: for string do a numeric lookup in the table itself + local lccodes = allocate() characters.lccodes = lccodes -- lazy table local uccodes = allocate() characters.uccodes = uccodes -- lazy table local shcodes = allocate() characters.shcodes = shcodes -- lazy table diff --git a/Master/texmf-dist/tex/context/base/char-tex.lua b/Master/texmf-dist/tex/context/base/char-tex.lua index 62bb6a04107..2093c6d6c68 100644 --- a/Master/texmf-dist/tex/context/base/char-tex.lua +++ b/Master/texmf-dist/tex/context/base/char-tex.lua @@ -286,6 +286,13 @@ local commandmapping = allocate { texcharacters.commandmapping = commandmapping +local ligaturemapping = allocate { + ["''"] = "”", + ["``"] = "“", + ["--"] = "–", + ["---"] = "—", +} + -- local achar = R("az","AZ") + P("ı") + P("\\i") -- -- local spaces = P(" ")^0 @@ -355,6 +362,9 @@ local function toutfpattern() hash["{\\"..k.."}"] = v hash["{\\"..k.." }"] = v end + for k, v in next, ligaturemapping do + hash[k] = v + end untex = utfchartabletopattern(hash) / hash end return untex diff --git a/Master/texmf-dist/tex/context/base/char-utf.lua b/Master/texmf-dist/tex/context/base/char-utf.lua index 9ed861be097..381602ededb 100644 --- a/Master/texmf-dist/tex/context/base/char-utf.lua +++ b/Master/texmf-dist/tex/context/base/char-utf.lua @@ -478,11 +478,15 @@ function utffilters.addgrapheme(result,first,second) -- can be U+ 0x string or u end end -interfaces.implement { - name = "addgrapheme", - actions = utffilters.addgrapheme, - arguments = { "string", "string", "string" } -} +if interfaces then -- eventually this goes to char-ctx.lua + + interfaces.implement { + name = "addgrapheme", + actions = utffilters.addgrapheme, + arguments = { "string", "string", "string" } + } + +end -- -- diff --git a/Master/texmf-dist/tex/context/base/cont-new.mkiv b/Master/texmf-dist/tex/context/base/cont-new.mkiv index fc87c486305..7aaabd8b0bf 100644 --- a/Master/texmf-dist/tex/context/base/cont-new.mkiv +++ b/Master/texmf-dist/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2015.05.04 19:00} +\newcontextversion{2015.05.10 20:08} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/Master/texmf-dist/tex/context/base/context-version.pdf b/Master/texmf-dist/tex/context/base/context-version.pdf index 298f490b5d0..2c9b4c63eac 100644 Binary files a/Master/texmf-dist/tex/context/base/context-version.pdf and b/Master/texmf-dist/tex/context/base/context-version.pdf differ diff --git a/Master/texmf-dist/tex/context/base/context.mkiv b/Master/texmf-dist/tex/context/base/context.mkiv index 9a2ae1bde83..3b70cecc2aa 100644 --- a/Master/texmf-dist/tex/context/base/context.mkiv +++ b/Master/texmf-dist/tex/context/base/context.mkiv @@ -39,7 +39,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2015.05.04 19:00} +\edef\contextversion{2015.05.10 20:08} \edef\contextkind {beta} %D For those who want to use this: @@ -464,7 +464,7 @@ \loadmarkfile{anch-bar} %loadmarkfile{anch-snc} % when needed this one will be redone -\loadmarkfile{math-ini} +\loadmarkfile{math-ini} % way after font-pre ! \loadmarkfile{math-pln} \loadmarkfile{math-for} \loadmarkfile{math-def} % also saves some meanings diff --git a/Master/texmf-dist/tex/context/base/core-uti.lua b/Master/texmf-dist/tex/context/base/core-uti.lua index 346dec89e9e..a4b74768053 100644 --- a/Master/texmf-dist/tex/context/base/core-uti.lua +++ b/Master/texmf-dist/tex/context/base/core-uti.lua @@ -38,7 +38,7 @@ local report_passes = logs.reporter("job","passes") job = job or { } local job = job -job.version = 1.29 +job.version = 1.30 job.packversion = 1.02 -- some day we will implement loading of other jobs and then we need diff --git a/Master/texmf-dist/tex/context/base/font-odv.lua b/Master/texmf-dist/tex/context/base/font-odv.lua index ca1b9ddf0c8..2ef1aabe7ea 100644 --- a/Master/texmf-dist/tex/context/base/font-odv.lua +++ b/Master/texmf-dist/tex/context/base/font-odv.lua @@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['font-odv'] = { license = "see context related readme files" } +-- One day I'll speed this up ... char swapping and properties. + -- A few remarks: -- -- This code is a partial rewrite of the code that deals with devanagari. The data and logic @@ -155,18 +157,26 @@ replace_all_nbsp = function(head) -- delayed definition return replace_all_nbsp(head) end -local fontprocesses = fonts.hashes.processes local xprocesscharacters = nil -xprocesscharacters = function(head,font) - xprocesscharacters = nodes.handlers.nodepass - return xprocesscharacters(head,font) +if context then + xprocesscharacters = function(head,font) + xprocesscharacters = nodes.handlers.characters + return xprocesscharacters(head,font) + end +else + xprocesscharacters = function(head,font) + xprocesscharacters = nodes.handlers.nodepass -- generic + return xprocesscharacters(head,font) + end end local function processcharacters(head,font) return tonut(xprocesscharacters(tonode(head))) end +-- local fontprocesses = fonts.hashes.processes +-- -- function processcharacters(head,font) -- local processors = fontprocesses[font] -- for i=1,#processors do diff --git a/Master/texmf-dist/tex/context/base/lpdf-tag.lua b/Master/texmf-dist/tex/context/base/lpdf-tag.lua index dbe4d3f1ee7..79ccfe07596 100644 --- a/Master/texmf-dist/tex/context/base/lpdf-tag.lua +++ b/Master/texmf-dist/tex/context/base/lpdf-tag.lua @@ -90,9 +90,23 @@ local lasttaginchain = structurestags.lastinchain local usedmapping = { } --- local tagsplitter = structurestags.patterns.splitter +----- tagsplitter = structurestags.patterns.splitter -local add_ids = false -- true +-- local embeddedtags = false -- true will id all, for tracing +-- local f_tagid = formatters["%s-%04i"] +-- local embeddedfilelist = pdfarray() -- /AF crap +-- +-- directives.register("structures.tags.embedmath",function(v) +-- if not v then +-- -- only enable +-- elseif embeddedtags == true then +-- -- already all tagged +-- elseif embeddedtags then +-- embeddedtags.math = true +-- else +-- embeddedtags = { math = true } +-- end +-- end) -- function codeinjections.maptag(original,target,kind) -- mapping[original] = { target, kind or "inline" } @@ -110,7 +124,7 @@ local function finishstructure() } -- we need to split names into smaller parts (e.g. alphabetic or so) -- we already have code for that somewhere - if add_ids then + if #names > 0 then local kids = pdfdictionary { Limits = pdfarray { names[1], names[#names-1] }, Names = names, @@ -130,7 +144,7 @@ local function finishstructure() Type = pdfconstant("StructTreeRoot"), K = pdfreference(pdfflushobject(structure_kids)), ParentTree = pdfreference(pdfflushobject(parent_ref,parenttree)), - IDTree = (add_ids and pdfreference(pdfflushobject(idtree))) or nil, + IDTree = #names > 0 and pdfreference(pdfflushobject(idtree)) or nil, RoleMap = rolemap, } pdfflushobject(structure_ref,structuretree) @@ -140,6 +154,7 @@ local function finishstructure() Marked = pdfboolean(true), -- UserProperties = pdfboolean(true), -- Suspects = pdfboolean(true), + -- AF = #embeddedfilelist > 0 and pdfreference(pdfflushobject(embeddedfilelist)) or nil, } addtocatalog("MarkInfo",pdfreference(pdfflushobject(markinfo))) -- @@ -203,6 +218,24 @@ local function makeelement(fulltag,parent) local userdata = specification.userdata -- usedmapping[tag] = true + -- + -- specification.attribute is unique + -- + local id = nil + -- local af = nil + -- if embeddedtags then + -- local tagname = specification.tagname + -- local tagindex = specification.tagindex + -- if embeddedtags == true or embeddedtags[tagname] then + -- id = f_tagid(tagname,tagindex) + -- af = job.fileobjreferences.collected[id] + -- if af then + -- local r = pdfreference(af) + -- af = pdfarray { r } + -- -- embeddedfilelist[#embeddedfilelist+1] = r + -- end + -- end + -- end -- local k = pdfarray() local r = pdfreserveobject() @@ -210,7 +243,7 @@ local function makeelement(fulltag,parent) local d = pdfdictionary { Type = pdf_struct_element, S = pdfconstant(t), - ID = (add_ids and fulltag) or nil, + ID = id, T = detail and detail or nil, P = parent.pref, Pg = pageref, @@ -218,15 +251,22 @@ local function makeelement(fulltag,parent) A = a and makeattribute(a) or nil, -- Alt = " Who cares ", -- ActualText = " Hi Hans ", + AF = af, } local s = pdfreference(pdfflushobject(d)) - if add_ids then - names[#names+1] = fulltag + if id then + names[#names+1] = id names[#names+1] = s end local kids = parent.kids kids[#kids+1] = s - local e = { tag = t, pref = s, kids = k, knum = r, pnum = pagenum } + local e = { + tag = t, + pref = s, + kids = k, + knum = r, + pnum = pagenum + } elements[fulltag] = e return e end diff --git a/Master/texmf-dist/tex/context/base/lpdf-wid.lua b/Master/texmf-dist/tex/context/base/lpdf-wid.lua index 895bbd3ffb2..22971c2b710 100644 --- a/Master/texmf-dist/tex/context/base/lpdf-wid.lua +++ b/Master/texmf-dist/tex/context/base/lpdf-wid.lua @@ -177,10 +177,27 @@ local function analyzetransparency(transparencyvalue) end -- Attachments +local nofattachments = 0 +local attachments = { } +local filestreams = { } +local referenced = { } +local ignorereferenced = true -- fuzzy pdf spec .. twice in attachment list, can become an option +local tobesavedobjrefs = utilities.storage.allocate() +local collectedobjrefs = utilities.storage.allocate() + +local fileobjreferences = { + collected = collectedobjrefs, + tobesaved = tobesavedobjrefs, +} + +job.fileobjreferences = fileobjreferences -local nofattachments, attachments, filestreams, referenced = 0, { }, { }, { } +local function initializer() + collectedobjrefs = job.fileobjreferences.collected or { } + tobesavedobjrefs = job.fileobjreferences.tobesaved or { } +end -local ignorereferenced = true -- fuzzy pdf spec .. twice in attachment list, can become an option +job.register('job.fileobjreferences.collected', tobesavedobjrefs, initializer) local function flushembeddedfiles() if next(filestreams) then @@ -209,6 +226,7 @@ function codeinjections.embedfile(specification) local hash = specification.hash or filename local keepdir = specification.keepdir -- can change local usedname = specification.usedname + local filetype = specification.filetype if filename == "" then filename = nil end @@ -246,11 +264,20 @@ function codeinjections.embedfile(specification) end end end - usedname = usedname ~= "" and usedname or filename + -- needs to cleaned up: + usedname = usedname ~= "" and usedname or filename or name local basename = keepdir == true and usedname or file.basename(usedname) -local basename = gsub(basename,"%./","") - local savename = file.addsuffix(name ~= "" and name or basename,"txt") -- else no valid file - local a = pdfdictionary { Type = pdfconstant("EmbeddedFile") } + local basename = gsub(basename,"%./","") + local savename = name ~= "" and name or basename + if not filetype or filetype == "" then + filetype = name and (filename and file.suffix(filename)) or "txt" + end + savename = file.addsuffix(savename,filetype) -- type is mandate for proper working in viewer + local mimetype = specification.mimetype + local a = pdfdictionary { + Type = pdfconstant("EmbeddedFile"), + Subtype = mimetype and mimetype ~= "" and pdfconstant(mimetype) or nil, + } local f if data then f = pdfflushstreamobject(data,a) @@ -265,6 +292,7 @@ local basename = gsub(basename,"%./","") UF = pdfstring(savename), EF = pdfdictionary { F = pdfreference(f) }, Desc = title ~= "" and pdfunicode(title) or nil, + -- AFRelationship = pdfconstant("Source"), -- some day maybe, not mandate } local r = pdfreference(pdfflushobject(d)) filestreams[hash] = r @@ -318,6 +346,10 @@ function nodeinjections.attachfile(specification) aref = codeinjections.embedfile(specification) attachments[registered] = aref end + local reference = specification.reference + if reference and aref then + tobesavedobjrefs[reference] = aref[1] + end if not aref then report_attachment("skipping attachment, registered %a",registered) -- already reported diff --git a/Master/texmf-dist/tex/context/base/lxml-ini.lua b/Master/texmf-dist/tex/context/base/lxml-ini.lua index 2f63c857f70..115403395e5 100644 --- a/Master/texmf-dist/tex/context/base/lxml-ini.lua +++ b/Master/texmf-dist/tex/context/base/lxml-ini.lua @@ -46,6 +46,7 @@ implement { name = "xmlattribute", actions = lxml.attribute, implement { name = "xmlattributedef", actions = lxml.attribute, arguments = { "string", "string", "string", "string" } } implement { name = "xmlchainatt", actions = lxml.chainattribute, arguments = { "string", "'/'", "string" } } implement { name = "xmlchainattdef", actions = lxml.chainattribute, arguments = { "string", "'/'", "string", "string" } } +implement { name = "xmlrefatt", actions = lxml.refatt, arguments = { "string", "string" } } implement { name = "xmlchecknamespace", actions = xml.checknamespace, arguments = { "lxmlid", "string", "string" } } implement { name = "xmlcommand", actions = lxml.command, arguments = { "string", "string", "string" } } implement { name = "xmlconcat", actions = lxml.concat, arguments = { "string", "string", "string" } } -- \detokenize{#3} @@ -92,7 +93,7 @@ implement { name = "xmlregisterns", actions = xml.registerns, implement { name = "xmlremapname", actions = xml.remapname, arguments = { "lxmlid", "string","string","string" } } implement { name = "xmlremapnamespace", actions = xml.renamespace, arguments = { "lxmlid", "string", "string" } } implement { name = "xmlsave", actions = lxml.save, arguments = { "string", "string" } } -implement { name = "xmlsetfunction", actions = lxml.setaction, arguments = { "string", "string", "string" } } +--------- { name = "xmlsetfunction", actions = lxml.setaction, arguments = { "string", "string", "string" } } implement { name = "xmlsetsetup", actions = lxml.setsetup, arguments = { "string", "string", "string" } } implement { name = "xmlsnippet", actions = lxml.snippet, arguments = { "string", "string" } } implement { name = "xmlstrip", actions = lxml.strip, arguments = { "string", "string" } } @@ -135,3 +136,7 @@ implement { name = "xmlsetcommandtonone", actions = lxml.setcommandtonone, implement { name = "xmlstarttiming", actions = function() statistics.starttiming(lxml) end } implement { name = "xmlstoptiming", actions = function() statistics.stoptiming (lxml) end } + +-- kind of special (3rd argument is a function) + +commands.xmlsetfunction = lxml.setaction diff --git a/Master/texmf-dist/tex/context/base/lxml-ini.mkiv b/Master/texmf-dist/tex/context/base/lxml-ini.mkiv index 5ef4245a236..fab644fdb27 100644 --- a/Master/texmf-dist/tex/context/base/lxml-ini.mkiv +++ b/Master/texmf-dist/tex/context/base/lxml-ini.mkiv @@ -40,6 +40,7 @@ %def\xmlattributedef #1#2#3#4{\clf_xmlattributedef {#1}{#2}{#3}{#4}} %def\xmlchainatt #1#2{\clf_xmlchainatt {#1}{#2}} %def\xmlchainattdef #1#2#3{\clf_xmlchainattdef {#1}{#2}{#3}} +%def\xmlrefatt #1#2{\clf_xmlrefatt {#1}{#2}} %def\xmlchecknamespace #1#2#3{\clf_xmlchecknamespace {#1}{#2}{#3}} % element %def\xmlcommand #1#2#3{\clf_xmlcommand {#1}{#2}{#3}} \def\xmlconcat #1#2#3{\clf_xmlconcat {#1}{#2}{\detokenize{#3}}} @@ -110,6 +111,7 @@ \let\xmlattributedef \clf_xmlattributedef \let\xmlchainatt \clf_xmlchainatt \let\xmlchainattdef \clf_xmlchainattdef +\let\xmlrefatt \clf_xmlrefatt \let\xmlchecknamespace \clf_xmlchecknamespace \let\xmlcommand \clf_xmlcommand % \xmlconcat @@ -156,7 +158,7 @@ \let\xmlremapname \clf_xmlremapname % element \let\xmlremapnamespace \clf_xmlremapnamespace % document \let\xmlsave \clf_xmlsave -\let\xmlsetfunction \clf_xmlsetfunction +%let\xmlsetfunction \clf_xmlsetfunction \let\xmlsetsetup \clf_xmlsetsetup \let\xmlsnippet \clf_xmlsnippet \let\xmlstrip \clf_xmlstrip @@ -175,6 +177,10 @@ \def\xmlinfo #1{\hbox{\ttxx[\clf_xmlinfo{#1}]}} \def\xmlshow #1{\startpacked\ttx\xmlverbatim{#1}\stoppacked} +% we need to pass the last argument as function, so + +\def\xmlsetfunction#1#2#3{\ctxcommand{xmlsetfunction("#1",\!!bs#2\!!es,#3)}} + % goodie: \unexpanded\def\xmlprettyprint#1#2% diff --git a/Master/texmf-dist/tex/context/base/lxml-tex.lua b/Master/texmf-dist/tex/context/base/lxml-tex.lua index 9e540fe7c69..550a06a1855 100644 --- a/Master/texmf-dist/tex/context/base/lxml-tex.lua +++ b/Master/texmf-dist/tex/context/base/lxml-tex.lua @@ -1597,6 +1597,22 @@ function lxml.att(id,a,default) end end +function lxml.refatt(id,a) + local e = getid(id) + if e then + local at = e.at + if at then + local str = at[a] + if str and str ~= "" then + str = gsub(str,"^#+","") + if str ~= "" then + contextsprint(notcatcodes,str) + end + end + end + end +end + function lxml.name(id) -- or remapped name? -> lxml.info, combine local e = getid(id) if e then diff --git a/Master/texmf-dist/tex/context/base/m-visual.mkiv b/Master/texmf-dist/tex/context/base/m-visual.mkiv index 3c57691ec64..d502159669a 100644 --- a/Master/texmf-dist/tex/context/base/m-visual.mkiv +++ b/Master/texmf-dist/tex/context/base/m-visual.mkiv @@ -192,8 +192,8 @@ {\dimen0\zeropoint \getrandomcount\scratchcounter{3}{6}% \dorecurse\scratchcounter - {\getrandomdimen\scratchdimen{1em}{3em}% - \mathinner{\red\fakerule\scratchdimen}% + {\getrandomdimen\scratchdimen{0.5em}{1.5em}% + \mathord{\red\fakerule\scratchdimen}% \ifnum\recurselevel<\scratchcounter+\fi \advance\scratchdimen\dimen0}% =\mathinner{\red\fakerule\scratchdimen}} diff --git a/Master/texmf-dist/tex/context/base/math-fen.mkiv b/Master/texmf-dist/tex/context/base/math-fen.mkiv index 33afbf675ae..ee82d89d19b 100644 --- a/Master/texmf-dist/tex/context/base/math-fen.mkiv +++ b/Master/texmf-dist/tex/context/base/math-fen.mkiv @@ -131,6 +131,9 @@ \definemathfence [angle] [\c!left="27E8,\c!right="27E9] \definemathfence [doubleangle] [\c!left="27EA,\c!right="27EB] \definemathfence [solidus] [\c!left="2044,\c!right="2044] +\definemathfence [ceil] [\c!left="2308,\c!right="2309] +\definemathfence [floor] [\c!left="230A,\c!right="230B] + \definemathfence [nothing] \definemathfence [mirrored] % \v!mirrored @@ -158,6 +161,8 @@ \unexpanded\def\Ltriplebar {\math_fenced_fenced_start{triplebar}} \unexpanded\def\Rtriplebar {\math_fenced_fenced_stop{triplebar}} \unexpanded\def\Lsolidus {\math_fenced_fenced_start{solidus}} \unexpanded\def\Rsolidus {\math_fenced_fenced_stop{solidus}} \unexpanded\def\Lnothing {\math_fenced_fenced_start{nothing}} \unexpanded\def\Rnothing {\math_fenced_fenced_stop{nothing}} +\unexpanded\def\Lfloor {\math_fenced_fenced_start{floor}} \unexpanded\def\Rfloor {\math_fenced_fenced_stop{floor}} +\unexpanded\def\Lceil {\math_fenced_fenced_start{ceil}} \unexpanded\def\Rceil {\math_fenced_fenced_stop{ceil}} \unexpanded\def\Lparentmirrored {\math_fenced_fenced_stop{mirroredparenthesis}} \unexpanded\def\Rparentmirrored {\math_fenced_fenced_start{mirroredparenthesis}} \unexpanded\def\Lbracketmirrored {\math_fenced_fenced_stop{mirroredbracket}} \unexpanded\def\Rbracketmirrored {\math_fenced_fenced_start{mirroredbracket}} @@ -264,6 +269,11 @@ \expandafter\let\csname\??mathleft \meaning /\endcsname\Rsolidusmirrored \expandafter\let\csname\??mathleft \meaning .\endcsname\Rnothingmirrored +\expandafter\let\csname\??mathleft \meaning ⌊\endcsname\Lfloor +\expandafter\let\csname\??mathright\meaning ⌋\endcsname\Rfloor +\expandafter\let\csname\??mathleft \meaning ⌈\endcsname\Lceil +\expandafter\let\csname\??mathright\meaning ⌉\endcsname\Rceil + % todo paren parent \let\lbrack\lbracket @@ -278,6 +288,8 @@ %installmathfencepair \lbar \Lbar \rbar \Rbar \installmathfencepair \vert \Lbar \vert \Rbar \installmathfencepair \solidus \Lsolidus \solidus \Rsolidus +\installmathfencepair \lfloor \Lfloor \rfloor \Rfloor +\installmathfencepair \lceil \Lceil \rceil \Rceil \unexpanded\def\{{\mathortext\lbrace \letterleftbrace } % or maybe a chardef \unexpanded\def\}{\mathortext\rbrace \letterrightbrace } % or maybe a chardef diff --git a/Master/texmf-dist/tex/context/base/math-ini.lua b/Master/texmf-dist/tex/context/base/math-ini.lua index 88159e10746..e6a35c39ee7 100644 --- a/Master/texmf-dist/tex/context/base/math-ini.lua +++ b/Master/texmf-dist/tex/context/base/math-ini.lua @@ -655,24 +655,27 @@ local noffunctions = 1000 -- offset categories.functions = functions implement { - name = "taggedmathfunction", - arguments = { "string", "string", "string" }, - actions = function(tag,label,apply) - local delta = toboolean(apply) and 1000 or 0 - if toboolean(label) then - local n = functions[tag] - if not n then - noffunctions = noffunctions + 1 - functions[noffunctions] = tag - functions[tag] = noffunctions - texsetattribute(a_mathcategory,noffunctions + delta) - else - texsetattribute(a_mathcategory,n + delta) - end - context.mathlabeltext(tag) + name = "tagmfunctiontxt", + arguments = { "string", "conditional" }, + actions = function(tag,apply) + local delta = apply and 1000 or 0 + texsetattribute(a_mathcategory,1000 + delta) + end +} + +implement { + name = "tagmfunctionlab", + arguments = { "string", "conditional" }, + actions = function(tag,apply) + local delta = apply and 1000 or 0 + local n = functions[tag] + if not n then + noffunctions = noffunctions + 1 + functions[noffunctions] = tag + functions[tag] = noffunctions + texsetattribute(a_mathcategory,noffunctions + delta) else - texsetattribute(a_mathcategory,1000 + delta) - context(tag) + texsetattribute(a_mathcategory,n + delta) end end } diff --git a/Master/texmf-dist/tex/context/base/math-ini.mkiv b/Master/texmf-dist/tex/context/base/math-ini.mkiv index 2d6090c03b9..d18c66812c0 100644 --- a/Master/texmf-dist/tex/context/base/math-ini.mkiv +++ b/Master/texmf-dist/tex/context/base/math-ini.mkiv @@ -184,12 +184,103 @@ \definemathematics[\v!default] % not needed, but nicer when nesting back to normal -% Normally this is applied to only one character. +% Now we redefine \type {\mathematics} and \type {\m}: + +\unexpanded\def\mathematics + {\doifelsenextoptionalcs\math_m_yes\math_m_nop} + +\def\math_m_yes[#1]#2% + {\relax + \ifmmode + #2% + \else + \normalstartimath + \edef\currentmathematics{#1}% check for valid + \the\everyswitchmathematics\relax + #2% + \normalstopimath + \fi} + +\def\math_m_nop#1% + {\relax + \ifmmode + #1% + \else + \normalstartimath + #1% + \normalstopimath + \fi} + +\let\m\mathematics + +\newmuskip\defaultthickmuskip \defaultthickmuskip 5mu plus 5mu +\newmuskip\defaultmedmuskip \defaultmedmuskip 4mu plus 2mu minus 4mu +\newmuskip\defaultthinmuskip \defaultthinmuskip 3mu + +\newmuskip\halfthickmuskip \halfthickmuskip 2.5mu plus 2.5mu +\newmuskip\halfmedmuskip \halfmedmuskip 2.0mu plus 1.0mu minus 2.0mu +\newmuskip\halfthinmuskip \halfthinmuskip 1.5mu + +\newcount \defaultrelpenalty \defaultrelpenalty 500 +\newcount \defaultbinoppenalty \defaultbinoppenalty 700 + + +\startsetups math:spacing:default + \thickmuskip \defaultthickmuskip + \medmuskip \defaultmedmuskip + \thinmuskip \defaultthinmuskip + \relpenalty \defaultrelpenalty + \binoppenalty \defaultbinoppenalty +\stopsetups + +\startsetups math:spacing:half + \thickmuskip \halfthickmuskip + \medmuskip \halfmedmuskip + \thinmuskip \halfthinmuskip + \relpenalty \defaultrelpenalty + \binoppenalty \defaultbinoppenalty +\stopsetups + +\startsetups math:spacing:tight + \ifcase\raggedstatus + \thickmuskip \halfthickmuskip + \medmuskip \halfmedmuskip + \thinmuskip \halfthinmuskip + \else + \thickmuskip 1\halfthickmuskip + \medmuskip 1\halfmedmuskip + \thinmuskip 1\halfthinmuskip + \fi + \relpenalty \defaultrelpenalty + \binoppenalty \maxdimen +\stopsetups + +\startsetups math:spacing:fixed + \ifcase\raggedstatus + \thickmuskip \halfthickmuskip + \medmuskip \halfmedmuskip + \thinmuskip \halfthinmuskip + \else + \thickmuskip 1\halfthickmuskip + \medmuskip 1\halfmedmuskip + \thinmuskip 1\halfthinmuskip + \fi + \relpenalty \maxdimen + \binoppenalty \maxdimen +\stopsetups + +% \dorecurse{80}{test \m[i:tight]{\red \fakeformula} test } + +\definemathematics[i:default][\c!setups=math:spacing:equal] +\definemathematics[i:half] [\c!setups=math:spacing:half] +\definemathematics[i:tight] [\c!setups=math:spacing:tight] +\definemathematics[i:fixed] [\c!setups=math:spacing:fixed] + +% Normally the next is applied to only one character. % % $ABC$ $\cal ABC$ $\mathaltcal ABC$ % todo: only in mmode - % these commands are semi-public but should not be used directly (lua names wil change) \unexpanded\def\math_set_attribute #1#2{\ifmmode\clf_setmathattribute{#1}{#2}\fi} @@ -476,13 +567,14 @@ \unexpanded\def\mathop {\normalmathop \bgroup - \let\rm\mf + % no: \let\rm\mf \let\nexttoken=} % this one too: \letvalue{\??mathcodecommand op}\mathop ? \unexpanded\def\normalmbox - {\normalhbox\bgroup\mf + {\normalhbox\bgroup + \usemathematicsstyleandcolor\c!textstyle\c!textcolor % new \dowithnextboxcs\math_mbox_finish\normalhbox} \def\math_mbox_finish @@ -524,19 +616,69 @@ \unexpanded\def\math_tags_mn#1{\begingroup\mathupright#1\endgroup} \unexpanded\def\math_tags_ms#1{\begingroup\mathupright#1\endgroup} -\unexpanded\def\mfunction #1{{\mathupright\math_tags_function{#1}}} -\unexpanded\def\mfunctionlabeltext#1{{\mathupright\math_tags_functionlabeltext{#1}}} - % Once this is stable we can store the number at the tex end which is % faster. Functions getnumbers >= 1000. -\expanded\def\math_tags_mathfunction_indeed #1{\clf_taggedmathfunction{#1}{false}{\ifconditional\c_apply_function true\else false\fi}} -\expanded\def\math_tags_mathfunctionlabeltext_indeed#1{\clf_taggedmathfunction{#1} {true}{\ifconditional\c_apply_function true\else false\fi}} +\setupmathematics + [\c!textstyle=, % rm ss etc i.e. known alternatives, otherwise math + \c!textcolor=, + \c!functionstyle=, % rm ss etc i.e. known alternatives, otherwise math + \c!functioncolor=] + +% \unexpanded\def\math_mfunction_styled +% {\edef\m_math_text_choice_face{\textstyleface\normalmathstyle}% +% \dowithnextbox +% {\mathop{\box\nextbox}}% +% \hbox\bgroup +% \usemathematicsstyleandcolor\c!functionstyle\c!functioncolor +% \m_math_text_choice_face +% \let\next} + +\unexpanded\def\math_mfunction_styled + {\begingroup + \usemathematicscolorparameter\c!functioncolor + \edef\p_functionstyle{\mathematicsparameter\c!functionstyle}% + \ifx\p_functionstyle\empty + \expandafter\math_mfunction_styled_none + \else\ifcsname\??alternativestyles\p_functionstyle\endcsname + \doubleexpandafter\math_mfunction_styled_text + \else + \doubleexpandafter\math_mfunction_styled_math + \fi\fi} -\expanded\def\math_tags_mo_indeed#1{\begingroup \attribute\mathcategoryattribute\plusone #1\endgroup} -\expanded\def\math_tags_mi_indeed#1{\begingroup \attribute\mathcategoryattribute\plustwo #1\endgroup} -\expanded\def\math_tags_mn_indeed#1{\begingroup\mathupright\attribute\mathcategoryattribute\plusthree#1\endgroup} -\expanded\def\math_tags_ms_indeed#1{\begingroup\mathupright\attribute\mathcategoryattribute\plusfour #1\endgroup} +\unexpanded\def\math_mfunction_styled_text#1% + {\mathoptext{\csname\??alternativestyles\p_functionstyle\endcsname#1}% + \endgroup} + +\unexpanded\def\math_mfunction_styled_math#1% + {\p_functionstyle + #1% + \endgroup} + +\unexpanded\def\math_mfunction_styled_none#1% + {\mathupright + #1% + \endgroup} + +\unexpanded\def\mfunction#1% + {\begingroup + \math_tags_mfunctiontxt{#1}\c_apply_function + \math_mfunction_styled{#1}% + \endgroup} + +\unexpanded\def\mfunctionlabeltext#1% + {\begingroup + \math_tags_mfunctionlab{#1}\c_apply_function + \math_mfunction_styled{\mathlabeltext{#1}}% + \endgroup} + +\let\math_tags_mfunctiontxt\gobbletwoarguments +\let\math_tags_mfunctionlab\gobbletwoarguments + +\unexpanded\def\math_tags_mo_indeed#1{\begingroup \attribute\mathcategoryattribute\plusone #1\endgroup} +\unexpanded\def\math_tags_mi_indeed#1{\begingroup \attribute\mathcategoryattribute\plustwo #1\endgroup} +\unexpanded\def\math_tags_mn_indeed#1{\begingroup\mathupright\attribute\mathcategoryattribute\plusthree#1\endgroup} +\unexpanded\def\math_tags_ms_indeed#1{\begingroup\mathupright\attribute\mathcategoryattribute\plusfour #1\endgroup} % todo: mathoptext \newconditional\c_apply_function @@ -551,12 +693,12 @@ \endgroup} \appendtoks - \let\math_tags_function \math_tags_mathfunction_indeed - \let\math_tags_functionlabeltext\math_tags_mathfunctionlabeltext_indeed - \let\math_tags_mo \math_tags_mo_indeed - \let\math_tags_mi \math_tags_mi_indeed - \let\math_tags_mn \math_tags_mn_indeed - \let\math_tags_ms \math_tags_ms_indeed + \let\math_tags_mfunctiontxt\clf_tagmfunctiontxt + \let\math_tags_mfunctionlab\clf_tagmfunctionlab + \let\math_tags_mo \math_tags_mo_indeed + \let\math_tags_mi \math_tags_mi_indeed + \let\math_tags_mn \math_tags_mn_indeed + \let\math_tags_ms \math_tags_ms_indeed \to \everyenableelements \appendtoks @@ -570,21 +712,21 @@ % \def\mlimitsfunction #1{\mathlimopcomm{{\mr#1}} % \def\mnolimitsfunction#1{\mathnolopcomm{{\mr#1}} -%D Taco posted this solution as response to a mail by Olivier, so let's integrate -%D it here. - -\def\currentmscaledstyle{rm} % will be plugged into the typeface text=ss option - -\unexpanded\def\math_function_style_opnolimits #1{\mathop{\mscaledtext{#1}}\nolimits} -\unexpanded\def\math_function_style_mfunction #1{\mscaledtext{\math_tags_function{#1}}} -\unexpanded\def\math_function_style_mfunctionlabeltext#1{\mscaledtext{\math_tags_functionlabeltext{#1}}} - -\unexpanded\def\setmathfunctionstyle#1% rm ss tt (can be made faster if needed) - {\doifsomething{#1} - {\def\currentmscaledstyle{#1}% - \let\mathopnolimits \math_function_style_opnolimits - \let\mfunction \math_function_style_mfunction - \let\mfunctionlabeltext\math_function_style_mfunctionlabeltext}} +% %D Taco posted this solution as response to a mail by Olivier, so let's integrate +% %D it here. +% +% \def\currentmscaledstyle{rm} % will be plugged into the typeface text=ss option +% +% \unexpanded\def\math_function_style_opnolimits #1{\mathop{\mscaledtext{#1}}\nolimits} +% \unexpanded\def\math_function_style_mfunction #1{\mscaledtext{\math_tags_function{#1}}} +% \unexpanded\def\math_function_style_mfunctionlabeltext#1{\mscaledtext{\math_tags_functionlabeltext{#1}}} +% +% \unexpanded\def\setmathfunctionstyle#1% rm ss tt (can be made faster if needed) +% {\doifsomething{#1} +% {\def\currentmscaledstyle{#1}% +% \let\mathopnolimits \math_function_style_opnolimits +% \let\mfunction \math_function_style_mfunction +% \let\mfunctionlabeltext\math_function_style_mfunctionlabeltext}} \unexpanded\def\mscaledtext#1% {\mathchoice @@ -593,6 +735,9 @@ {\hbox{\csname\currentmscaledstyle\endcsname\tfx #1}} {\hbox{\csname\currentmscaledstyle\endcsname\tfxx#1}}} +\unexpanded\def\setmathfunctionstyle#1% + {\setupmathematics[\c!functionstyle=#1]} % for old times sake + %D We can force the way functions are typeset by manipulating the text option: %D %D \starttyping @@ -1321,6 +1466,19 @@ \expandafter#3\else \expandafter#1\fi} +% \def\textstyleface#1% #1 is number (\normalmathstyle) +% {\ifcase\numexpr#1\relax +% \tf \or +% \tf \or +% \tf \or +% \tf \or +% \tfx \or +% \tfx \or +% \tfxx \or +% \tfxx \else +% \tf +% \fi} + \unexpanded\def\verbosemathstyle#1% #1 is number (\normalmathstyle) {{\normalexpanded{\relax\darkgray\ttxx[\number#1:\ifcase\numexpr#1\relax display\or % 0 diff --git a/Master/texmf-dist/tex/context/base/mult-def.mkiv b/Master/texmf-dist/tex/context/base/mult-def.mkiv index 607f76a167a..cea2a6a6a1d 100644 --- a/Master/texmf-dist/tex/context/base/mult-def.mkiv +++ b/Master/texmf-dist/tex/context/base/mult-def.mkiv @@ -34,6 +34,11 @@ % start todo in mult-def.lua: +\def\c!functionstyle {functionstyle} +\def\c!functioncolor {functioncolor} + +\def\v!extremestretch {extremestretch} + \def\v!alphabetic {alphabetic} \def\v!Alphabetic {Alphabetic} @@ -152,6 +157,7 @@ \def\c!etallimit {etallimit} \def\c!etaldisplay{etaldisplay} \def\c!etaltext {etaltext} +\def\c!etaloption {etaloption} \ifdefined\v!simplelist\else \def\v!simplelist{simplelist} \fi \ifdefined\v!sorting \else \def\v!sorting {sorting} \fi diff --git a/Master/texmf-dist/tex/context/base/mult-low.lua b/Master/texmf-dist/tex/context/base/mult-low.lua index 1ad0f9ebbda..9a05e59d994 100644 --- a/Master/texmf-dist/tex/context/base/mult-low.lua +++ b/Master/texmf-dist/tex/context/base/mult-low.lua @@ -102,7 +102,7 @@ return { "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext","startdocument", "stopdocument", "documentvariable", "setupdocument", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule","setupmodule","currentmoduleparameter","moduleparameter", - "everystarttext", + "everystarttext", "everystoptext", -- "startTEXpage", "stopTEXpage", -- "startMPpage", "stopMPpage", -- already catched by nested lexer diff --git a/Master/texmf-dist/tex/context/base/publ-aut.lua b/Master/texmf-dist/tex/context/base/publ-aut.lua index 4ab8dd4bc93..4c95d002521 100644 --- a/Master/texmf-dist/tex/context/base/publ-aut.lua +++ b/Master/texmf-dist/tex/context/base/publ-aut.lua @@ -21,6 +21,7 @@ local formatters = string.formatters local P, S, C, V, Cs, Ct, Cg, Cf, Cc = lpeg.P, lpeg.S, lpeg.C, lpeg.V, lpeg.Cs, lpeg.Ct, lpeg.Cg, lpeg.Cf, lpeg.Cc local lpegmatch, lpegpatterns = lpeg.match, lpeg.patterns +local settings_to_hash = utilities.parsers.settings_to_hash local context = context ----- commands = commands @@ -42,6 +43,8 @@ local trace_hashing = false trackers.register("publications.authorhash", func local report = logs.reporter("publications","authors") local report_cite = logs.reporter("publications","cite") +local v_last = interfaces.variables.last + -- local function makesplitter(separator) -- return Ct { "start", -- start = (Cs((V("outer") + (1-separator))^1) + separator^1)^1, @@ -279,11 +282,18 @@ local function splitauthorstring(str) return { authors } -- we assume one author end + -- we could cache these too but it can become messy .. leave that for later - local authors = lpegmatch(andsplitter,str) - for i=1,#authors do + local authors = lpegmatch(andsplitter,str) + local nofauthors = #authors + for i=1,nofauthors do authors[i] = splitauthor(authors[i]) end + if nofauthors > 1 and authors[nofauthors].original == "others" then + -- only the last one is looked at + authors[nofauthors] = nil + authors.others = true + end return authors end @@ -396,8 +406,11 @@ local function btxauthor(dataset,tag,field,settings) return -- error end + local absmax = max local etallimit = tonumber(settings.etallimit) or 1000 local etaldisplay = tonumber(settings.etaldisplay) or etallimit + local etaloption = settings_to_hash(settings.etaloption or "") + local etallast = etaloption[v_last] local combiner = settings.combiner local symbol = settings.symbol local index = settings.index @@ -408,16 +421,22 @@ local function btxauthor(dataset,tag,field,settings) symbol = "." end local ctx_btxsetup = settings.kind == "cite" and ctx_btxciteauthorsetup or ctx_btxlistauthorsetup - if max > etallimit and etaldisplay < max then + if max > etallimit and (etaldisplay+(etallast and 1 or 0)) < max then max = etaldisplay + else + etallast = false end currentauthordata = split currentauthorsymbol = symbol - local function oneauthor(i) + local function oneauthor(i,last,justone) local author = split[i] if index then ctx_btxstartauthor(i,1,0) + elseif last then + ctx_btxstartauthor(i,1,0) + ctx_btxsetconcat(0) + ctx_btxsetauthorvariant(combiner) else local state = author.state or 0 ctx_btxstartauthor(i,max,state) @@ -445,9 +464,13 @@ local function btxauthor(dataset,tag,field,settings) ctx_btxsetjuniors() -- (concat(juniors," ")) end if not index and i == max then - local overflow = #split - max - if overflow > 0 then - ctx_btxsetoverflow(overflow) + if split.others then + ctx_btxsetoverflow(1) + else + local overflow = #split - max + if overflow > 0 then + ctx_btxsetoverflow(overflow) + end end end ctx_btxsetup(combiner) @@ -455,10 +478,15 @@ local function btxauthor(dataset,tag,field,settings) end if index then oneauthor(index) + elseif max == 1 then + oneauthor(1,false,true) else for i=1,max do oneauthor(i) end + if etallast then + oneauthor(absmax,true) + end end else report("ignored field %a of tag %a, used field %a is no author",field,tag,usedfield) @@ -483,6 +511,7 @@ implement { { "kind" }, { "etallimit" }, { "etaldisplay" }, + { "etaloption" }, { "symbol" }, } } @@ -564,23 +593,27 @@ publications.authorhashers = authorhashers -- todo: some hashing local function name(authors) - local n = #authors - if n == 0 then - return "" - end - local result = { } - local nofresult = 0 - for i=1,n do - local author = authors[i] - local surnames = author.surnames - if surnames and #surnames > 0 then - for j=1,#surnames do - nofresult = nofresult + 1 - result[nofresult] = surnames[j] + if type(authors) == "table" then + local n = #authors + if n == 0 then + return "" + end + local result = { } + local nofresult = 0 + for i=1,n do + local author = authors[i] + local surnames = author.surnames + if surnames and #surnames > 0 then + for j=1,#surnames do + nofresult = nofresult + 1 + result[nofresult] = surnames[j] + end end end + return concat(result," ") + else + return authors end - return concat(result," ") end table.setmetatableindex(authorhashers,function(t,k) @@ -589,86 +622,94 @@ table.setmetatableindex(authorhashers,function(t,k) end) authorhashers.normal = function(authors) - local n = #authors - if n == 0 then - return "" - end - local result = { } - local nofresult = 0 - for i=1,n do - local author = authors[i] - local vons = author.vons - local surnames = author.surnames - local firstnames = author.firstnames - local juniors = author.juniors - if vons and #vons > 0 then - for j=1,#vons do - nofresult = nofresult + 1 - result[nofresult] = vons[j] - end + if type(authors) == "table" then + local n = #authors + if n == 0 then + return "" end - if surnames and #surnames > 0 then - for j=1,#surnames do - nofresult = nofresult + 1 - result[nofresult] = surnames[j] + local result = { } + local nofresult = 0 + for i=1,n do + local author = authors[i] + local vons = author.vons + local surnames = author.surnames + local firstnames = author.firstnames + local juniors = author.juniors + if vons and #vons > 0 then + for j=1,#vons do + nofresult = nofresult + 1 + result[nofresult] = vons[j] + end end - end - if firstnames and #firstnames > 0 then - for j=1,#firstnames do - nofresult = nofresult + 1 - result[nofresult] = firstnames[j] + if surnames and #surnames > 0 then + for j=1,#surnames do + nofresult = nofresult + 1 + result[nofresult] = surnames[j] + end end - end - if juniors and #juniors > 0 then - for j=1,#juniors do - nofresult = nofresult + 1 - result[nofresult] = juniors[j] + if firstnames and #firstnames > 0 then + for j=1,#firstnames do + nofresult = nofresult + 1 + result[nofresult] = firstnames[j] + end + end + if juniors and #juniors > 0 then + for j=1,#juniors do + nofresult = nofresult + 1 + result[nofresult] = juniors[j] + end end end + return concat(result," ") + else + return authors end - return concat(result," ") end authorhashers.normalshort = function(authors) - local n = #authors - if n == 0 then - return "" - end - local result = { } - local nofresult = 0 - for i=1,n do - local author = authors[i] - local vons = author.vons - local surnames = author.surnames - local initials = author.initials - local juniors = author.juniors - if vons and #vons > 0 then - for j=1,#vons do - nofresult = nofresult + 1 - result[nofresult] = vons[j] - end + if type(authors) == "table" then + local n = #authors + if n == 0 then + return "" end - if surnames and #surnames > 0 then - for j=1,#surnames do - nofresult = nofresult + 1 - result[nofresult] = surnames[j] + local result = { } + local nofresult = 0 + for i=1,n do + local author = authors[i] + local vons = author.vons + local surnames = author.surnames + local initials = author.initials + local juniors = author.juniors + if vons and #vons > 0 then + for j=1,#vons do + nofresult = nofresult + 1 + result[nofresult] = vons[j] + end end - end - if initials and #initials > 0 then - initials = the_initials(initials) - for j=1,#initials do - nofresult = nofresult + 1 - result[nofresult] = initials[j] + if surnames and #surnames > 0 then + for j=1,#surnames do + nofresult = nofresult + 1 + result[nofresult] = surnames[j] + end end - end - if juniors and #juniors > 0 then - for j=1,#juniors do - nofresult = nofresult + 1 - result[nofresult] = juniors[j] + if initials and #initials > 0 then + initials = the_initials(initials) + for j=1,#initials do + nofresult = nofresult + 1 + result[nofresult] = initials[j] + end + end + if juniors and #juniors > 0 then + for j=1,#juniors do + nofresult = nofresult + 1 + result[nofresult] = juniors[j] + end end end + return concat(result," ") + else + return authors end - return concat(result," ") end authorhashers.normalinverted = authorhashers.normal @@ -684,41 +725,45 @@ authorhashers.short = function(authors) -- a short is a real dumb hardcodes kind of tag and we only support -- this one because some users might expect it, not because it makes -- sense - local n = #authors - if n == 0 then - return "unk" - elseif n == 1 then - local surnames = authors[1].surnames - if not surnames or #surnames == 0 then - return "err" - else - local s = surnames[1] - local c = lpegmatch(p_clean,s) - if s ~= c then - report_cite("name %a cleaned to %a for short construction",s,c) - end - return utfsub(c,1,3) - end - else - local t = { } - for i=1,n do - if i > 3 then - t[#t+1] = "+" -- indeed - break - end - local surnames = authors[i].surnames + if type(authors) == "table" then + local n = #authors + if n == 0 then + return "unk" + elseif n == 1 then + local surnames = authors[1].surnames if not surnames or #surnames == 0 then - t[#t+1] = "?" + return "err" else local s = surnames[1] local c = lpegmatch(p_clean,s) if s ~= c then report_cite("name %a cleaned to %a for short construction",s,c) end - t[#t+1] = utfsub(c,1,1) + return utfsub(c,1,3) end + else + local t = { } + for i=1,n do + if i > 3 then + t[#t+1] = "+" -- indeed + break + end + local surnames = authors[i].surnames + if not surnames or #surnames == 0 then + t[#t+1] = "?" + else + local s = surnames[1] + local c = lpegmatch(p_clean,s) + if s ~= c then + report_cite("name %a cleaned to %a for short construction",s,c) + end + t[#t+1] = utfsub(c,1,1) + end + end + return concat(t) end - return concat(t) + else + return utfsub(authors,1,4) end end diff --git a/Master/texmf-dist/tex/context/base/publ-dat.lua b/Master/texmf-dist/tex/context/base/publ-dat.lua index 494a13d3c35..1e651c45bcd 100644 --- a/Master/texmf-dist/tex/context/base/publ-dat.lua +++ b/Master/texmf-dist/tex/context/base/publ-dat.lua @@ -346,6 +346,12 @@ function publications.parenttag(dataset,tag) local entry = luadata[tag] if entry then combined[#combined+1] = tag + if combined[tag] then + report("error in combination, dataset %a, tag %a, parent %a, ignored %a",dataset,tag,combined[tag],parent) + else + report("combining, dataset %a, tag %a, parent %a",dataset,tag,parent) + current.combined[tag] = parent + end end end end @@ -382,6 +388,7 @@ function publications.new(name) -- used specifications }, suffixed = false, + combined = { }, } -- we delay details till we need it (maybe we just delay the -- individual fields but that is tricky as there can be some diff --git a/Master/texmf-dist/tex/context/base/publ-imp-apa.mkvi b/Master/texmf-dist/tex/context/base/publ-imp-apa.mkvi index 7cab4a131ac..d2eae8e9bf8 100644 --- a/Master/texmf-dist/tex/context/base/publ-imp-apa.mkvi +++ b/Master/texmf-dist/tex/context/base/publ-imp-apa.mkvi @@ -55,11 +55,12 @@ \c!margin=3.5\emwidth] \definebtx - [apa:list] + [apa:\s!list] [apa] [\c!otherstext={,\nobreakspace\textellipsis\space}, \c!etallimit=7, \c!etaldisplay=6, + \c!etaloption=last, \c!authorconversion=invertedshort, \c!separator:names:2={,\space}, % aka namesep - in this namespace \c!separator:names:3={,\nobreakspace\textampersand\space}, % comma separated list @@ -68,44 +69,49 @@ % First, we define a namespace for a few special fields \definebtx - [apa:list:author] - [apa:list] + [apa:\s!list:author] + [apa:\s!list] \definebtx - [apa:list:editor] - [apa:list:author] + [apa:\s!list:editor] + [apa:\s!list:author] \definebtx - [apa:list:suffix] - [apa:list] + [apa:\s!list:suffix] + [apa:\s!list] \definebtx - [apa:list:url] - [apa:list] + [apa:\s!list:url] + [apa:\s!list] \definebtx - [apa:list:doi] - [apa:list] + [apa:\s!list:doi] + [apa:\s!list] \definebtx - [apa:list:numbering] - [apa:list] + [apa:\s!list:\s!page] + [apa:\s!list] + [\c!pagecommand={\wordright}] \definebtx - [apa:list:numbering:num] - [apa:list:numbering] + [apa:\s!list:numbering] + [apa:\s!list] \definebtx - [apa:list:numbering:yes] - [apa:list:numbering:num] + [apa:\s!list:numbering:num] + [apa:\s!list:numbering] + [\c!stopper={.}, + \c!right={\space}] \definebtx - [apa:list:numbering:short] - [apa:list:numbering:num] + [apa:\s!list:numbering:short] + [apa:\s!list:numbering:num] + [\c!stopper=] \definebtx - [apa:list:numbering:bib] - [apa:list:numbering:num] + [apa:\s!list:numbering:tag] + [apa:\s!list:numbering:num] + [\c!stopper=] % Next, we define a namespace for each category @@ -116,143 +122,129 @@ %D \btxloadjournallist[journals.txt] % the jabref list %D \stoptyping - \definebtx - [apa:list:journal] + [apa:\s!list:journal] [\c!style=\v!italic] %command=\btxexpandedjournal] % btxabbreviatedjournal \definebtx - [apa:list:title] + [apa:\s!list:title] [\c!style=\v!italic, \c!command=\Word, \c!translate=\v!yes] \definebtx - [apa:list:title:article] - [apa:list:title] + [apa:\s!list:title:article] + [apa:\s!list:title] [\c!style=] % journal is set in italics \definebtx - [apa:list:title:magazine] - [apa:list:title] + [apa:\s!list:title:magazine] + [apa:\s!list:title] \definebtx - [apa:list:title:newspaper] - [apa:list:title] + [apa:\s!list:title:newspaper] + [apa:\s!list:title] \definebtx - [apa:list:title:periodical] - [apa:list:title] + [apa:\s!list:title:periodical] + [apa:\s!list:title] \definebtx - [apa:list:title:standard] - [apa:list:title] + [apa:\s!list:title:standard] + [apa:\s!list:title] \definebtx - [apa:list:title:book] - [apa:list:title] + [apa:\s!list:title:book] + [apa:\s!list:title] \definebtx - [apa:list:title:inbook] - [apa:list:title] + [apa:\s!list:title:inbook] + [apa:\s!list:title] \definebtx - [apa:list:title:incollection] - [apa:list:title] + [apa:\s!list:title:incollection] + [apa:\s!list:title] [\c!style=] % booktitle is set in italics \definebtx - [apa:list:title:proceedings] - [apa:list:title] + [apa:\s!list:title:proceedings] + [apa:\s!list:title] \definebtx - [apa:list:title:inproceedings] - [apa:list:title] + [apa:\s!list:title:inproceedings] + [apa:\s!list:title] [\c!style=] % booktitle is set in italics \definebtx - [apa:list:title:conference] - [apa:list:title] + [apa:\s!list:title:conference] + [apa:\s!list:title] [\c!style=] % booktitle is set in italics \definebtx - [apa:list:title:thesis] - [apa:list:title] + [apa:\s!list:title:thesis] + [apa:\s!list:title] \definebtx - [apa:list:title:phdthesis] - [apa:list:title] + [apa:\s!list:title:phdthesis] + [apa:\s!list:title] \definebtx - [apa:list:title:mastersthesis] - [apa:list:title] + [apa:\s!list:title:mastersthesis] + [apa:\s!list:title] \definebtx - [apa:list:title:booklet] - [apa:list:title] + [apa:\s!list:title:booklet] + [apa:\s!list:title] \definebtx - [apa:list:title:manual] - [apa:list:title] + [apa:\s!list:title:manual] + [apa:\s!list:title] \definebtx - [apa:list:title:techreport] - [apa:list:title] + [apa:\s!list:title:techreport] + [apa:\s!list:title] \definebtx - [apa:list:title:unpublished] - [apa:list:title] + [apa:\s!list:title:unpublished] + [apa:\s!list:title] \definebtx - [apa:list:title:patent] - [apa:list:title] + [apa:\s!list:title:patent] + [apa:\s!list:title] \definebtx - [apa:list:title:electronic] - [apa:list:title] + [apa:\s!list:title:electronic] + [apa:\s!list:title] \definebtx - [apa:list:title:music] - [apa:list:title] + [apa:\s!list:title:music] + [apa:\s!list:title] \definebtx - [apa:list:title:film] - [apa:list:title] + [apa:\s!list:title:film] + [apa:\s!list:title] \definebtx - [apa:list:title:other] - [apa:list:title] + [apa:\s!list:title:other] + [apa:\s!list:title] \definebtx - [apa:list:title:misc] - [apa:list:title] + [apa:\s!list:title:misc] + [apa:\s!list:title] \definebtx - [apa:list:title:literal] - [apa:list:title] + [apa:\s!list:title:literal] + [apa:\s!list:title] \definebtx - [apa:list:type] + [apa:\s!list:type] [\c!command=\Word] -% We define [page] settings in the apa namespace, inheriting the root -% settings, in order to eventually allow for modifications without touching -% root. - -\definebtx - [apa:\s!page] - [\s!page] - -\definebtx - [apa:\s!page:list] - [apa:\s!page] - [\c!pagecommand={\wordright}] - % Then define and set cite parameters. \definebtx - [apa:cite] + [apa:\s!cite] [apa] [\c!alternative=authoryear, \c!otherstext={,\space\btxlabeltext{apa:others}}, @@ -266,90 +258,87 @@ \c!separator:names:4={\space\btxlabeltext{apa:and}\space}] % not \textampersand \definebtx - [apa:cite:author] - [apa:cite] + [apa:\s!cite:author] + [apa:\s!cite] \definebtx - [apa:cite:authoryear] - [apa:cite:author] + [apa:\s!cite:authoryear] + [apa:\s!cite:author] [\c!left={(}, \c!right={)}, \c!inbetween={,\space}] \definebtx - [apa:cite:default] - [apa:cite:authoryear] + [apa:\s!cite:default] + [apa:\s!cite:authoryear] \definebtx - [apa:cite:authoryears] - [apa:cite:authoryear] + [apa:\s!cite:authoryears] + [apa:\s!cite:authoryear] [\c!left=, \c!right=, \c!inbetween={\space}] \definebtx - [apa:cite:authornum] - [apa:cite:author] + [apa:\s!cite:authornum] + [apa:\s!cite:author] [\c!left={(}, \c!right={)}] \definebtx - [apa:cite:authorref] - [apa:cite:authornum] - -\definebtx - [apa:cite:author:num] % todo - [apa:cite:authornum] - [\c!left={[}, + [apa:\s!cite:author:num] % todo + [apa:\s!cite:authornum] + [\c!left={\space[}, \c!right={]}] \definebtx - [apa:cite:author:year] % todo - [apa:cite] + [apa:\s!cite:author:year] % todo + [apa:\s!cite] \definebtx - [apa:cite:author:years] % todo - [apa:cite:authoryears] + [apa:\s!cite:author:years] % todo + [apa:\s!cite:authoryears] [\c!inbetween=, \c!left={\space(}, \c!right={)}] \definebtx - [apa:cite:year] - [apa:cite] + [apa:\s!cite:year] + [apa:\s!cite] [\c!separator:2={,\space}, % :0 and :1 - between items of a list \c!separator:3={,\space\btxlabeltext{apa:and}\space}, % not \textampersand \c!separator:4={\space\btxlabeltext{apa:and}\space}] % not \textampersand \definebtx - [apa:cite:title] - [apa:cite] + [apa:\s!cite:title] + [apa:\s!cite] [\c!separator:2={,\space}, % :0 and :1 - between items of a list \c!separator:3={,\space\btxlabeltext{apa:and}\space}, % not \textampersand \c!separator:4={\space\btxlabeltext{apa:and}\space}, % not \textampersand \c!command={\language[\currentbtxlanguage]}, % BAH + \c!sorttype=none, \c!style=\v!italic] \definebtx - [apa:cite:booktitle] - [apa:cite:title] + [apa:\s!cite:booktitle] + [apa:\s!cite:title] \definebtx - [apa:cite:tag] - [apa:cite] + [apa:\s!cite:tag] + [apa:\s!cite] [\c!left={[}, \c!right={]}] \definebtx - [apa:cite:index] - [apa:cite] + [apa:\s!cite:index] + [apa:\s!cite] [\c!left={[}, \c!right={]}] \definebtx - [apa:cite:page] - [apa:cite] + [apa:\s!cite:page] + [apa:\s!cite] [\c!left=, \c!right=, \c!separator:2={,\space}, % :0 and :1 - between items of a list @@ -357,36 +346,36 @@ \c!separator:4={\space\btxlabeltext{apa:and}\space}] % not \textampersand \definebtx - [apa:cite:pages] - [apa:cite:page] + [apa:\s!cite:pages] + [apa:\s!cite:page] \definebtx - [apa:cite:keywords] - [apa:cite] + [apa:\s!cite:keywords] + [apa:\s!cite] \definebtx - [apa:cite:short] - [apa:cite] + [apa:\s!cite:short] + [apa:\s!cite] [\c!left={[}, \c!right={]}] \definebtx - [apa:cite:category] - [apa:cite] + [apa:\s!cite:category] + [apa:\s!cite] \definebtx - [apa:cite:url] - [apa:cite] + [apa:\s!cite:url] + [apa:\s!cite] [\c!left={[}, \c!right={]}] \definebtx - [apa:cite:doi] - [apa:cite:url] + [apa:\s!cite:doi] + [apa:\s!cite:url] \definebtx - [apa:cite:num] - [apa:cite] + [apa:\s!cite:num] + [apa:\s!cite] [\c!left={[}, \c!right={]}, \c!separator:2={,}, % no space @@ -394,8 +383,8 @@ \c!separator:4=\btxparameter{\c!separator:2}] \definebtx - [apa:cite:textnum] - [apa:cite:num] + [apa:\s!cite:textnum] + [apa:\s!cite:num] [\c!left={Ref.\nbsp}, \c!right=, \c!separator:2={,\space}, @@ -403,8 +392,8 @@ \c!separator:4={\space\btxlabeltext{apa:and}\space}] \definebtx - [apa:cite:entry] - [apa:cite] + [apa:\s!cite:entry] + [apa:\s!cite] [\c!left=, \c!right=, \c!inbetween={\space}, @@ -483,7 +472,6 @@ \setupbtxlabeltext [fr] [apa:and=et, - apa:others={et al.}, apa:number={n\high{o}}, apa:edition={édition}, apa:Editor=Éditeur, @@ -749,9 +737,10 @@ } } \endgroup - \doif{\btxparameter{translate}}\v!yes { + % which namespace? + %\doif{\btxparameter{translate}}\v!yes { \texdefinition{btx:apa:translated-title}{#title} - } + %} \stoptexdefinition \starttexdefinition btx:apa:title diff --git a/Master/texmf-dist/tex/context/base/publ-imp-aps.mkvi b/Master/texmf-dist/tex/context/base/publ-imp-aps.mkvi index cd05fce7fad..11104a7eb5d 100644 --- a/Master/texmf-dist/tex/context/base/publ-imp-aps.mkvi +++ b/Master/texmf-dist/tex/context/base/publ-imp-aps.mkvi @@ -33,7 +33,7 @@ [aps] [\c!default=default, \c!specification=aps, - \c!otherstext={\space\btxlabeltext{aps:others}}, + \c!otherstext={\space{\it\btxlabeltext{aps:others}}}, \c!etallimit=10, \c!etaldisplay=\btxparameter\c!etallimit, %c!journalconversion=\v!normal, @@ -47,58 +47,61 @@ \definebtxrendering [aps] - [\c!specification=aps] + [\c!specification=aps, + \c!sorttype=\v!default, + \c!numbering=num] \setupbtxlist [aps] [\c!alternative=b] % spaces \definebtx - [aps:list] + [aps:\s!list] [aps] [\c!authorconversion=normalshort] \definebtx - [aps:list:author] - [aps:list] + [aps:\s!list:author] + [aps:\s!list] \definebtx - [aps:list:editor] - [aps:list:author] + [aps:\s!list:editor] + [aps:\s!list:author] \definebtx - [aps:list:suffix] - [aps:list] + [aps:\s!list:suffix] + [aps:\s!list] \definebtx - [aps:list:url] - [aps:list] + [aps:\s!list:url] + [aps:\s!list] \definebtx - [aps:list:doi] - [aps:list] + [aps:\s!list:doi] + [aps:\s!list] \definebtx - [aps:list:numbering] - [aps:list] + [aps:\s!list:\s!page] + [aps:\s!list] + [\c!left={\space}] \definebtx - [aps:list:numbering:num] - [aps:list:numbering] - [left={[}, - right={]}] + [aps:\s!list:numbering] + [aps:\s!list] \definebtx - [aps:list:numbering:yes] - [aps:list:numbering:num] + [aps:\s!list:numbering:num] + [aps:\s!list:numbering] + [left={[}, + right={]}] \definebtx - [aps:list:numbering:short] - [aps:list:numbering:num] + [aps:\s!list:numbering:short] + [aps:\s!list:numbering:num] \definebtx - [aps:list:numbering:bib] - [aps:list:numbering:num] + [aps:\s!list:numbering:tag] + [aps:\s!list:numbering:num] %D In order to be able to get journals expanded (or normalized or abbreviated) you need %D to load a list: @@ -110,217 +113,201 @@ % TODO \definebtx - [aps:list:journal] + [aps:\s!list:journal] [\c!style=\v!italic] %command=\btxexpandedjournal] % btxabbreviatedjournal \definebtx - [aps:list:volume] + [aps:\s!list:volume] [\c!style=\v!bold] \definebtx - [aps:list:title] + [aps:\s!list:title] [\c!style=\v!italic, \c!command=\Word] \definebtx - [aps:list:title:article] - [aps:list:title] + [aps:\s!list:title:article] + [aps:\s!list:title] [\c!style=] % journal is set in italics \definebtx - [aps:list:title:magazine] - [aps:list:title] + [aps:\s!list:title:magazine] + [aps:\s!list:title] \definebtx - [aps:list:title:newspaper] - [aps:list:title] + [aps:\s!list:title:newspaper] + [aps:\s!list:title] \definebtx - [aps:list:title:periodical] - [aps:list:title] + [aps:\s!list:title:periodical] + [aps:\s!list:title] \definebtx - [aps:list:title:standard] - [aps:list:title] + [aps:\s!list:title:standard] + [aps:\s!list:title] \definebtx - [aps:list:title:book] - [aps:list:title] + [aps:\s!list:title:book] + [aps:\s!list:title] \definebtx - [aps:list:title:inbook] - [aps:list:title] + [aps:\s!list:title:inbook] + [aps:\s!list:title] \definebtx - [aps:list:title:incollection] - [aps:list:title] + [aps:\s!list:title:incollection] + [aps:\s!list:title] [\c!style=] % booktitle is set in italics \definebtx - [aps:list:title:proceedings] - [aps:list:title] + [aps:\s!list:title:proceedings] + [aps:\s!list:title] \definebtx - [aps:list:title:inproceedings] - [aps:list:title] + [aps:\s!list:title:inproceedings] + [aps:\s!list:title] [\c!style=] % booktitle is set in italics \definebtx - [aps:list:title:conference] - [aps:list:title] + [aps:\s!list:title:conference] + [aps:\s!list:title] [\c!style=] % booktitle is set in italics \definebtx - [aps:list:title:thesis] - [aps:list:title] + [aps:\s!list:title:thesis] + [aps:\s!list:title] \definebtx - [aps:list:title:phdthesis] - [aps:list:title] + [aps:\s!list:title:phdthesis] + [aps:\s!list:title] \definebtx - [aps:list:title:mastersthesis] - [aps:list:title] + [aps:\s!list:title:mastersthesis] + [aps:\s!list:title] \definebtx - [aps:list:title:booklet] - [aps:list:title] + [aps:\s!list:title:booklet] + [aps:\s!list:title] \definebtx - [aps:list:title:manual] - [aps:list:title] + [aps:\s!list:title:manual] + [aps:\s!list:title] \definebtx - [aps:list:title:techreport] - [aps:list:title] + [aps:\s!list:title:techreport] + [aps:\s!list:title] \definebtx - [aps:list:title:unpublished] - [aps:list:title] + [aps:\s!list:title:unpublished] + [aps:\s!list:title] \definebtx - [aps:list:title:patent] - [aps:list:title] + [aps:\s!list:title:patent] + [aps:\s!list:title] \definebtx - [aps:list:title:electronic] - [aps:list:title] + [aps:\s!list:title:electronic] + [aps:\s!list:title] \definebtx - [aps:list:title:other] - [aps:list:title] + [aps:\s!list:title:other] + [aps:\s!list:title] \definebtx - [aps:list:title:misc] - [aps:list:title] + [aps:\s!list:title:misc] + [aps:\s!list:title] \definebtx - [aps:list:title:literal] - [aps:list:title] + [aps:\s!list:title:literal] + [aps:\s!list:title] \definebtx - [aps:list:type] + [aps:\s!list:type] [\c!command=\Word] -% We define [page] settings in the aps namespace, inheriting the root -% settings, in order to eventually allow for modifications without touching -% root. - -\definebtx - [aps:\s!page] - [\s!page] - -\definebtx - [aps:\s!page:list] - [aps:\s!page] - %[\c!pagecommand={\wordright}] - % Then define and set all cite parameters \definebtx - [aps:cite] + [aps:\s!cite] [aps] [\c!authorconversion=\v!name, \c!compress=\v!yes, \c!sorttype=normal] \definebtx - [aps:cite:author] - [aps:cite] + [aps:\s!cite:author] + [aps:\s!cite] \definebtx - [aps:cite:authoryear] - [aps:cite:author] + [aps:\s!cite:authoryear] + [aps:\s!cite:author] [\c!left={(}, \c!right={)}, \c!inbetween={,\space}] \definebtx - [aps:cite:authoryears] - [aps:cite:authoryear] + [aps:\s!cite:authoryears] + [aps:\s!cite:authoryear] [\c!left=, \c!right=, \c!inbetween={\space}] \definebtx - [aps:cite:authornum] - [aps:cite:author] + [aps:\s!cite:authornum] + [aps:\s!cite:author] [\c!left={(}, \c!right={)}] \definebtx - [aps:cite:authorref] - [aps:cite:authornum] - -\definebtx - [aps:cite:author:num] % todo - [aps:cite:authornum] - [\c!left={[}, + [aps:\s!cite:author:num] % todo + [aps:\s!cite:authornum] + [\c!left={\space[}, \c!right={]}] \definebtx - [aps:cite:author:year] % todo - [aps:cite:authoryear] + [aps:\s!cite:author:year] % todo + [aps:\s!cite:authoryear] [\c!left=, \c!right=] \definebtx - [aps:cite:author:years] % todo - [aps:cite:authoryears] + [aps:\s!cite:author:years] % todo + [aps:\s!cite:authoryears] [\c!inbetween=, \c!left={\space(}, \c!right={)}] \definebtx - [aps:cite:year] - [aps:cite] + [aps:\s!cite:year] + [aps:\s!cite] \definebtx - [aps:cite:title] - [aps:cite] + [aps:\s!cite:title] + [aps:\s!cite] [\c!command={\language[\currentbtxlanguage]}, % BAH + \c!sorttype=none, \c!style=\v!italic] \definebtx - [aps:cite:booktitle] - [aps:cite:title] + [aps:\s!cite:booktitle] + [aps:\s!cite:title] \definebtx - [aps:cite:tag] - [aps:cite] + [aps:\s!cite:tag] + [aps:\s!cite] [\c!left={[}, \c!right={]}] \definebtx - [aps:cite:index] - [aps:cite] + [aps:\s!cite:index] + [aps:\s!cite] [\c!left={[}, \c!right={]}] \definebtx - [aps:cite:page] - [aps:cite] + [aps:\s!cite:page] + [aps:\s!cite] [\c!left=, \c!right=, \c!separator:2={,\space}, % :0 and :1 - between items of a list @@ -328,38 +315,38 @@ \c!separator:4= {\space\btxlabeltext{aps:and}\space}] % not \textampersand \definebtx - [aps:cite:pages] - [aps:cite:page] + [aps:\s!cite:pages] + [aps:\s!cite:page] \definebtx - [aps:cite:keywords] - [aps:cite] + [aps:\s!cite:keywords] + [aps:\s!cite] [\c!left={(}, \c!right={)}] \definebtx - [aps:cite:short] - [aps:cite] + [aps:\s!cite:short] + [aps:\s!cite] [\c!left={[}, \c!right={]}] \definebtx - [aps:cite:category] - [aps:cite] + [aps:\s!cite:category] + [aps:\s!cite] \definebtx - [aps:cite:url] - [aps:cite] + [aps:\s!cite:url] + [aps:\s!cite] [\c!left={[}, \c!right={]}] \definebtx - [aps:cite:doi] - [aps:cite:url] + [aps:\s!cite:doi] + [aps:\s!cite:url] \definebtx - [aps:cite:num] - [aps:cite] + [aps:\s!cite:num] + [aps:\s!cite] [\c!left={[}, \c!right={]}, %\c!left=, % TODO: PRB uses superscript references... @@ -370,12 +357,12 @@ \c!separator:4=\btxparameter{\c!separator:2}] \definebtx - [aps:cite:default] - [aps:cite:num] + [aps:\s!cite:default] + [aps:\s!cite:num] \definebtx - [aps:cite:textnum] - [aps:cite:num] + [aps:\s!cite:textnum] + [aps:\s!cite:num] [\c!left={Ref.\nbsp}, \c!command=, \c!separator:2={,\space}, @@ -383,8 +370,8 @@ \c!separator:4={\space\btxlabeltext{aps:and}\space}] \definebtx - [aps:cite:entry] - [aps:cite] + [aps:\s!cite:entry] + [aps:\s!cite] [\c!left=, \c!right=, \c!inbetween={\space}, @@ -447,7 +434,6 @@ \setupbtxlabeltext [fr] [aps:and=et, - aps:others={et al.}, aps:number={n\high{o}}, aps:edition={édition}, aps:Editor=Éditeur, diff --git a/Master/texmf-dist/tex/context/base/publ-imp-author.mkvi b/Master/texmf-dist/tex/context/base/publ-imp-author.mkvi index 534d8ce0b29..7529c7aa970 100644 --- a/Master/texmf-dist/tex/context/base/publ-imp-author.mkvi +++ b/Master/texmf-dist/tex/context/base/publ-imp-author.mkvi @@ -32,9 +32,9 @@ \startsetups \s!btx:\s!cite:\s!author:concat \ifcase\currentbtxoverflow \btxparameter{\c!separator:names:\number\currentbtxconcat} - \else - %\btxparameter{\c!separator:names:2} - \fi + \else\ifnum\currentbtxauthorindex>\plusone + \btxparameter{\c!separator:names:2} + \fi\fi \stopsetups \startsetups \s!btx:\s!cite:\s!author:others @@ -172,9 +172,9 @@ \startsetups \s!btx:\s!list:\s!author:concat \ifcase\currentbtxoverflow \btxparameter{\c!separator:names:\number\currentbtxconcat} - \else + \else\ifnum\currentbtxauthorindex>\plusone \btxparameter{\c!separator:names:2} - \fi + \fi\fi \stopsetups \startsetups \s!btx:\s!list:\s!author:others diff --git a/Master/texmf-dist/tex/context/base/publ-imp-cite.mkvi b/Master/texmf-dist/tex/context/base/publ-imp-cite.mkvi index 6b09eaf01b1..7ce9ea0da6e 100644 --- a/Master/texmf-dist/tex/context/base/publ-imp-cite.mkvi +++ b/Master/texmf-dist/tex/context/base/publ-imp-cite.mkvi @@ -206,19 +206,6 @@ \startsetups \s!btx:\s!cite:authornum \fastsetup{\s!btx:\s!cite:normal} \stopsetups -\startsetups \s!btx:\s!cite:authorref - % what a crap ... no one will ever understand this module .. it makes no - % sense to have these tests, just let users set the right variant .. - \doifelse{\btxparameter\c!alternative} {authoryear} { - \fastsetup{\s!btx:\s!cite:authoryears} - } { - \doifelse {\btxparameter\c!alternative} {num} { - \fastsetup{\s!btx:\s!cite:authornum} - } { - \fastsetup{\s!btx:\s!cite:author} - } - } -\stopsetups \startsetups \s!btx:\s!cite:num \fastsetup{\s!btx:\s!cite:range} \stopsetups diff --git a/Master/texmf-dist/tex/context/base/publ-imp-default.mkvi b/Master/texmf-dist/tex/context/base/publ-imp-default.mkvi index e51955c704b..2fc58ef99c8 100644 --- a/Master/texmf-dist/tex/context/base/publ-imp-default.mkvi +++ b/Master/texmf-dist/tex/context/base/publ-imp-default.mkvi @@ -17,15 +17,16 @@ \startbtxrenderingdefinitions[\s!default] -% \definebtx [\s!default:\s!page ] [\s!page] -% \definebtx [\s!default:\s!cite ] [\s!cite] -% \definebtx [\s!default:\s!list ] [\s!list] -% \definebtx [\s!default:\s!author] [\s!author] +%?? \definebtx [\s!default:\s!page ] [\s!page] +%?? \definebtx [\s!default:\s!cite ] [\s!cite] +%?? \definebtx [\s!default:\s!list ] [\s!list] +%?? \definebtx [\s!default:\s!author] [\s!author] \definebtxrendering [\s!default] [\c!specification=\s!default, - \c!sorttype=\v!default] + \c!sorttype=\v!default, + \c!numbering=num] \definebtx [\s!default] @@ -50,19 +51,28 @@ \c!sorttype=normal, \c!authorconversion=\v!name] -% We define [page] settings in the default namespace, inheriting the root -% settings, in order to eventually allow for modifications without touching -% root. +% List variants, some having specific settings: \definebtx - [\s!default:\s!page] - [\s!page] + [\s!default:\s!list:\s!page] + [\s!default:\s!list] + [\c!left={\space}] \definebtx - [\s!default:\s!page:list] - [\s!default:\s!page] + [\s!default:\s!list:numbering] + [\s!default:\s!list] -% List variants, some having specific settings: +\definebtx + [\s!default:\s!list:numbering:num] + [\s!default:\s!list:numbering] + +\definebtx + [\s!default:\s!list:numbering:short] + [\s!default:\s!list:numbering:num] + +\definebtx + [\s!default:\s!list:numbering:tag] + [\s!default:\s!list:numbering:num] \definebtx [\s!default:\s!list:author] diff --git a/Master/texmf-dist/tex/context/base/publ-imp-list.mkvi b/Master/texmf-dist/tex/context/base/publ-imp-list.mkvi index 61432486b9b..d34e4bc24c9 100644 --- a/Master/texmf-dist/tex/context/base/publ-imp-list.mkvi +++ b/Master/texmf-dist/tex/context/base/publ-imp-list.mkvi @@ -71,9 +71,9 @@ \btxstopstyleandcolor \stopsetups -\startsetups[\s!btx:\s!list:\s!numbering:bib] - \btxstartstyleandcolor [\currentbtxspecification:\s!list:\s!numbering:bib] - \btxusecommand [\currentbtxspecification:\s!list:\s!numbering:bib] { +\startsetups[\s!btx:\s!list:\s!numbering:tag] + \btxstartstyleandcolor [\currentbtxspecification:\s!list:\s!numbering:tag] + \btxusecommand [\currentbtxspecification:\s!list:\s!numbering:tag] { \fastsetup{\s!btx:\s!list:\s!numbering} } \btxstopstyleandcolor diff --git a/Master/texmf-dist/tex/context/base/publ-ini.lua b/Master/texmf-dist/tex/context/base/publ-ini.lua index 30d0c890882..04a3f1cc116 100644 --- a/Master/texmf-dist/tex/context/base/publ-ini.lua +++ b/Master/texmf-dist/tex/context/base/publ-ini.lua @@ -115,6 +115,7 @@ local ctx_gobbletwoarguments = context.gobbletwoarguments local ctx_btxdirectlink = context.btxdirectlink local ctx_btxhandlelistentry = context.btxhandlelistentry local ctx_btxhandlelisttextentry = context.btxhandlelisttextentry +local ctx_btxhandlecombientry = context.btxhandlecombientry local ctx_btxchecklistentry = context.btxchecklistentry local ctx_btxchecklistcombi = context.btxchecklistcombi @@ -154,6 +155,8 @@ local ctx_btxstartsubcite = context.btxstartsubcite local ctx_btxstopsubcite = context.btxstopsubcite local ctx_btxstartlistentry = context.btxstartlistentry local ctx_btxstoplistentry = context.btxstoplistentry +local ctx_btxstartcombientry = context.btxstartcombientry +local ctx_btxstopcombientry = context.btxstopcombientry local ctx_btxlistsetup = context.btxlistsetup local ctx_btxflushauthor = context.btxflushauthor local ctx_btxsetnoflistentries = context.btxsetnoflistentries @@ -340,10 +343,10 @@ do local initialize = nil initialize = function(t) - usedentries = allocate { } - citetolist = allocate { } - listtocite = allocate { } - listtolist = allocate { } + usedentries = allocate { } + citetolist = allocate { } + listtocite = allocate { } + listtolist = allocate { } local names = { } local internals = structures.references.internals local p_collect = (C(R("09")^1) * Carg(1) / function(s,entry) listtocite[tonumber(s)] = entry end + P(1))^0 @@ -477,15 +480,16 @@ local findallused do local finder = publications.finder findallused = function(dataset,reference,internal) - local current = datasets[dataset] - local finder = publications.finder -- for the moment, not yet in all betas - local find = finder and finder(current,reference) - local tags = not find and settings_to_array(reference) - local todo = { } - local okay = { } -- only if mark - local set = usedentries[dataset] - local valid = current.luadata - local ordered = current.ordered + local current = datasets[dataset] + local finder = publications.finder -- for the moment, not yet in all betas + local find = finder and finder(current,reference) + local tags = not find and settings_to_array(reference) + local todo = { } + local okay = { } -- only if mark + local set = usedentries[dataset] + local valid = current.luadata + local ordered = current.ordered + local combined = current.combined if set then local registered = { } local function register(tag) @@ -495,6 +499,16 @@ local findallused do registered[tag] = true end local entry = set[tag] + if not entry then + local parent = combined[tag] + if parent then + entry = set[parent] + end + if entry then + report("using reference of parent %a for %a",parent,tag) + tag = parent + end + end if entry then -- only once in a list but at some point we can have more (if we -- decide to duplicate) @@ -533,22 +547,22 @@ local findallused do okay[#okay+1] = entry end todo[tag] = true + return tag end if reference == "*" then tags = { } for i=1,#ordered do local tag = ordered[i].tag - register(tag) + tag = register(tag) tags[#tags+1] = tag end elseif find then --- print("case 1.1") tags = { } for i=1,#ordered do local entry = ordered[i] if find(entry) then local tag = entry.tag - register(tag) + tag = register(tag) tags[#tags+1] = tag end end @@ -557,11 +571,11 @@ local findallused do reported[reference] = true end else --- print("case 1.2") for i=1,#tags do - local tag = tags[i] + local tag = tags[i] if valid[tag] then - register(tag) + tag = register(tag) + tags[i] = tag elseif not reported[tag] then reported[tag] = true report_cite("non-existent entry %a in %a",tag,dataset) @@ -570,12 +584,15 @@ local findallused do end else if find then --- print("case 2.1") tags = { } for i=1,#ordered do local entry = ordered[i] if find(entry) then - local tag = entry.tag + local tag = entry.tag + local parent = combined[tag] + if parent then + tag = parent + end tags[#tags+1] = tag todo[tag] = true end @@ -585,9 +602,13 @@ local findallused do reported[reference] = true end else --- print("case 2.2") for i=1,#tags do - local tag = tags[i] + local tag = tags[i] + local parent = combined[tag] + if parent then + tag = parent + tags[i] = tag + end if valid[tag] then todo[tag] = true elseif not reported[tag] then @@ -1060,9 +1081,11 @@ do local userdata = listentry.userdata local btxspc = userdata and userdata.btxspc if btxspc then - -- this will become a specification entry + -- we could act on the 3rd arg returned by getcasted but in general any string will do + -- so we deal with it in the author hashers ... maybe some day ... local author = getcasted(dataset,tag,field,specifications[btxspc]) - if type(author) == "table" then + local kind = type(author) + if kind == "table" or kind == "string" then if u then u = listentry.entries.text -- hm else @@ -1633,17 +1656,20 @@ do end end + + -- tag | listindex | reference | userdata | dataindex + local methods = { } lists.methods = methods methods[v_dataset] = function(dataset,rendering,keyword) - -- why only once unless criterium=all? local current = datasets[dataset] local luadata = current.luadata local list = rendering.list for tag, data in sortedhash(luadata) do if not keyword or validkeyword(dataset,tag,keyword) then - list[#list+1] = { tag, false, 0, false, false, data.index or 0} + local index = data.index or 0 + list[#list+1] = { tag, index, 0, false, index } end end end @@ -1666,7 +1692,7 @@ do local tag = u.btxref if tag and (not keyword or validkeyword(dataset,tag,keyword)) then local data = luadata[tag] - list[#list+1] = { tag, listindex, 0, u, u.btxint, data and data.index or 0 } + list[#list+1] = { tag, listindex, 0, u, data and data.index or 0 } end end end @@ -1700,6 +1726,7 @@ do if u then -- better check on metadata.kind == "btx" local set = u.btxset or v_default if set == dataset then +-- inspect(structures.references.internals[tonumber(u.btxint)]) local tag = u.btxref if not tag then -- problem @@ -1714,7 +1741,7 @@ do l[#l+1] = u.btxint else local data = luadata[tag] - local l = { tag, listindex, 0, u, u.btxint, data and data.index or 0 } + local l = { tag, listindex, 0, u, data and data.index or 0 } list[#list+1] = l traced[tag] = l end @@ -1722,7 +1749,7 @@ do done[tag] = section alldone[tag] = true local data = luadata[tag] - list[#list+1] = { tag, listindex, 0, u, u.btxint, data and data.index or 0 } + list[#list+1] = { tag, listindex, 0, u, data and data.index or 0 } end end if tag then @@ -1798,6 +1825,7 @@ do local current = datasets[dataset] local luadata = current.luadata local details = current.details + local combined = current.combined local newlist = { } local lastreferencenumber = groups[group] -- current.lastreferencenumber or 0 for i=1,#list do @@ -1819,31 +1847,55 @@ do else list = newlist end +-- local combined = { } + local newlist = { } +-- for i=1,#list do +-- local userdata = list[i][4] +-- if userdata then +-- local com = userdata.btxcom +-- if com then +-- com = settings_to_array(com) +-- for i=1,#com do +-- local c = com[i] +-- if not combined[c] then +-- report("ignoring list entry for tag %a due to combined usage in %a ",c,tag) +-- combined[c] = true +-- end +-- end +-- end +-- end +-- end + local tagtolistindex = { } + rendering.tagtolistindex = tagtolistindex for i=1,#list do local li = list[i] local tag = li[1] - local entry = luadata[tag] - if entry then - local detail = details[tag] - if detail then - local referencenumber = detail.referencenumber - if not referencenumber then - lastreferencenumber = lastreferencenumber + 1 - referencenumber = lastreferencenumber - detail.referencenumber = lastreferencenumber + if not combined[tag] then + local entry = luadata[tag] + if entry then + local detail = details[tag] + if detail then + local referencenumber = detail.referencenumber + if not referencenumber then + lastreferencenumber = lastreferencenumber + 1 + referencenumber = lastreferencenumber + detail.referencenumber = lastreferencenumber + end + li[3] = referencenumber + else + report("missing details for tag %a in dataset %a (enhanced: %s)",tag,dataset,current.enhanced and "yes" or "no") + -- weird, this shouldn't happen .. all have a detail + lastreferencenumber = lastreferencenumber + 1 + details[tag] = { referencenumber = lastreferencenumber } + li[3] = lastreferencenumber end - li[3] = referencenumber - else - report("missing details for tag %a in dataset %a (enhanced: %s)",tag,dataset,current.enhanced and "yes" or "no") - -- weird, this shouldn't happen .. all have a detail - lastreferencenumber = lastreferencenumber + 1 - details[tag] = { referencenumber = lastreferencenumber } - li[3] = lastreferencenumber + tagtolistindex[tag] = i end + newlist[#newlist+1] = li end end groups[group] = lastreferencenumber - rendering.list = list + rendering.list = newlist end function lists.fetchentries(dataset) @@ -1997,14 +2049,56 @@ do end end + function lists.combiinlist(dataset,tag) + local rendering = renderings[dataset] + local list = rendering.list + local toindex = rendering.tagtolistindex + return toindex and toindex[tag] + end + + function lists.flushcombi(dataset,tag) + local rendering = renderings[dataset] + local list = rendering.list + local toindex = rendering.tagtolistindex + local listindex = toindex and toindex[tag] + if listindex then + local li = list[listindex] + if li then + local data = datasets[dataset] + local luadata = data.luadata + local details = data.details + local tag = li[1] + local listindex = li[2] + local n = li[3] + local entry = luadata[tag] + local detail = details[tag] + ctx_btxstartcombientry() + ctx_btxsetcurrentlistindex(listindex) + ctx_btxsetcategory(entry.category or "unknown") + ctx_btxsettag(tag) + ctx_btxsetnumber(n) + local language = entry.language + if language then + ctx_btxsetlanguage(language) + end + local authorsuffix = detail.authorsuffix + if authorsuffix then + ctx_btxsetsuffix(authorsuffix) + end + ctx_btxhandlecombientry() + ctx_btxstopcombientry() + end + end + end + function lists.flushentry(dataset,i,textmode) local rendering = renderings[dataset] local list = rendering.list - local data = datasets[dataset] - local luadata = data.luadata - local details = data.details local li = list[i] if li then + local data = datasets[dataset] + local luadata = data.luadata + local details = data.details local tag = li[1] local listindex = li[2] local n = li[3] @@ -2025,17 +2119,6 @@ do if language then ctx_btxsetlanguage(language) end - local bl = li[5] - if bl and bl ~= "" then - ctx_btxsetbacklink(bl) - -- ctx_btxsetbacktrace(concat(li," ",5)) -- two numbers - else - -- nothing - end - local authorsuffix = detail.authorsuffix - if authorsuffix then - ctx_btxsetsuffix(authorsuffix) - end local userdata = li[4] if userdata then local b = userdata.btxbtx @@ -2046,6 +2129,14 @@ do if a then ctx_btxsetafter(a) end + local bl = userdata.btxint + if bl and bl ~= "" then + ctx_btxsetbacklink(bl) + end + end + local authorsuffix = detail.authorsuffix + if authorsuffix then + ctx_btxsetsuffix(authorsuffix) end rendering.userdata = userdata if textmode then @@ -2141,12 +2232,24 @@ do arguments = { "string", "integer" } } + implement { + name = "btxflushlistcombi", + actions = lists.flushcombi, + arguments = { "string", "string" } + } + implement { name = "btxdoifelsesameasprevious", actions = { lists.sameasprevious, ctx_doifelse }, arguments = { "string", "integer", "string", "integer", "string" } } + implement { + name = "btxdoifelsecombiinlist", + actions = { lists.combiinlist, ctx_doifelse }, + arguments = { "string", "string" } + } + end do @@ -2391,7 +2494,7 @@ do tobemarked = specification.markentry and todo -- if not found or #found == 0 then - report("nothing found for %a",reference) + report("no entry %a found in dataset %a",reference,dataset) elseif not setup then report("invalid reference for %a",reference) else @@ -2402,6 +2505,7 @@ do local luadata = datasets[dataset].luadata for i=1,#found do local entry = found[i] +-- inspect(entry) local tag = entry.userdata.btxref local ldata = luadata[tag] local data = { @@ -2409,6 +2513,7 @@ do language = ldata.language, dataset = dataset, tag = tag, + combis = entry.userdata.btxcom, -- luadata = ldata, } setter(data,dataset,tag,entry) @@ -2455,6 +2560,10 @@ do if language then ctx_btxsetlanguage(language) end +local combis = entry.combis +if combis then + ctx_btxsetcombis(combis) +end if not getter(entry,last,nil,specification) then ctx_btxsetfirst("") -- (f_missing(tag)) end @@ -2816,8 +2925,10 @@ do else return false end - else + elseif ak and bk then return ak < bk + else + return false end end @@ -3109,7 +3220,14 @@ do end listvariants[v_yes] = listvariants.num - listvariants.bib = listvariants.num + + function listvariants.tag(dataset,block,tag,variant,listindex) + ctx_btxsetfirst(tag) + if trace_detail then + report("expanding %a list setup %a","tag",variant) + end + ctx_btxnumberingsetup(variant or "tag") + end function listvariants.short(dataset,block,tag,variant,listindex) local short = getdetail(dataset,tag,"shorthash") @@ -3154,3 +3272,32 @@ do end end + +-- a helper + +do + + -- local context = context + -- local lpegmatch = lpeg.match + local splitter = lpeg.tsplitat(":") + + interfaces.implement { + name = "checkinterfacechain", + arguments = { "string", "string" }, + actions = function(str,command) + local chain = lpegmatch(splitter,str) + if #chain > 0 then + local command = context[command] + local parent = "" + local child = chain[1] + command(child,parent) + for i=2,#chain do + parent = child + child = child .. ":" .. chain[i] + command(child,parent) + end + end + end + } + +end diff --git a/Master/texmf-dist/tex/context/base/publ-ini.mkiv b/Master/texmf-dist/tex/context/base/publ-ini.mkiv index 7270b5f4d18..6d57a233d02 100644 --- a/Master/texmf-dist/tex/context/base/publ-ini.mkiv +++ b/Master/texmf-dist/tex/context/base/publ-ini.mkiv @@ -14,6 +14,8 @@ % TODO: s! vs v! for default and neutral key/values % todo: too many refs in list +% todo: no need for all these %'s + % todo: tagging % todo: we cannot use 'default' as this wipes metadata names (maybe no longer do that) % todo: \v!cite => \s!cite @@ -71,6 +73,7 @@ \def\s!btxbtx {btxbtx} \def\s!btxspc {btxspc} \def\s!btxlst {btxlst} +\def\s!btxcom {btxcom} \definelabelclass[btxlabel][2] @@ -147,11 +150,41 @@ \installswitchcommandhandler \??btx {btx} \??btx +% because we have lots of setups we provide a checker for sloppy users + +\unexpanded\def\btx_check_chain#1#2#3% + {\doifelsesomething{#3} + {\writestatus{btx #1}{defining\space"#2"\space as\space descendant\space of\space"#3"}% we're in definition regime (no space) + \definebtx[#2][#3]} + {\writestatus{btx #1}{defining\space"#2"}% + \definebtx[#2]}} + +% \unexpanded\def\btxcheckdefine#1#2{\doifelsecommandhandler\??btx{#1}\donothing{\btx_check_chain{define}{#1}{#2}}} +% \unexpanded\def\btxchecksetup #1#2{\doifelsecommandhandler\??btx{#1}\donothing{\btx_check_chain {setup}{#1}{#2}}} + +\unexpanded\def\btxcheckdefine#1{\doifelsecommandhandler\??btx{#1}\gobbleoneargument{\btx_check_chain{define}{#1}}} % {#2} +\unexpanded\def\btxchecksetup #1{\doifelsecommandhandler\??btx{#1}\gobbleoneargument{\btx_check_chain {setup}{#1}}} % {#2} + +% fpr the moment experimental: + +\unexpanded\def\btxenableautodefine + {\prependtoks + \clf_checkinterfacechain{\currentbtx}{btxcheckdefine}% + \to \everydefinebtx + \prependtoks + \ifnum\btxsetupmode=\doingrootsetupnamed + \clf_checkinterfacechain{\currentbtx}{btxchecksetup}% + \fi + \to \everysetupbtx + \let\btxenableautodefine\relax} + \appendtoks \ifnum\btxsetupmode=\doingrootsetuproot \publ_specification_set{\btxparameter\c!specification}% \else\ifnum\btxsetupmode=\doingrootsetupnamed - \publ_specification_set{\btxparameter\c!specification}% + \doifelsecommandhandler\??btx\currentbtx + {\publ_specification_set{\btxparameter\c!specification}}% + {}% maybe a warning \fi\fi \to \everysetupbtx @@ -590,7 +623,7 @@ \begingroup \setbtxlist % probably already set \btx_reset_page - \setbtxparameterset\s!page\s!list + \setbtxparameterset\s!list\s!page \btxparameter\c!pagecommand {\usebtxstyleandcolor\c!style\c!color \btxparameter\c!pageleft @@ -633,12 +666,15 @@ \publ_fast_setup\plusfour\s!list\currentbtxcategory \removeunwantedspaces \endgroup - \ifconditional\c_btx_list_pages - \btx_entry_inject_pages - \fi \ifx\currentbtxcombis\empty \else \btxrenderingparameter\c!separator - \processcommacommand[\currentbtxcombis]\btx_entry_inject_combi + % maybe move this loop to lua + \begingroup + \processcommacommand[\currentbtxcombis]\btx_entry_inject_combi + \endgroup + \fi + \ifconditional\c_btx_list_pages + \btx_entry_inject_pages \fi \ifconditional\c_btx_list_texts \currentbtxafter @@ -657,6 +693,15 @@ \ctxcommand{showbtxentry("\currentbtxdataset","\currentbtxtag")} \fi\fi} +\unexpanded\def\btxstartcombientry + {\begingroup} + +\unexpanded\def\btxstopcombientry + {\endgroup} + +\unexpanded\def\btxhandlecombientry + {\btx_reference_indeed} + \def\btx_entry_inject_combi#1% {\begingroup \def\currentbtxtag{#1}% @@ -665,6 +710,18 @@ \removeunwantedspaces \endgroup} +% uses reference when set + +% \def\btx_entry_inject_combi#1% +% {\begingroup +% \def\currentbtxtag{#1}% +% \ignorespaces +% \btxdoifelsecombiinlist\currentbtxdataset\currentbtxtag +% {\clf_btxflushlistcombi{\currentbtxdataset}{\currentbtxtag}} +% {\publ_fast_setup\plusfour\s!list\currentbtxcategory}% +% \removeunwantedspaces +% \endgroup} + \unexpanded\def\completebtxrendering{\dodoubleempty\publ_place_list_complete} \unexpanded\def\placebtxrendering {\dodoubleempty\publ_place_list_standard} @@ -709,8 +766,12 @@ \unexpanded\def\btxdoifelsesameasprevious {\btxdoifelsesameaspreviouschecked\v!doublesided} +\unexpanded\def\btxdoifelsecombiinlist#1#2% + {\clf_btxdoifelsecombiinlist{#1}{#2}} + \let\btxdoifsameaspreviouscheckedelse\btxdoifelsesameaspreviouschecked \let\btxdoifsameaspreviouselse \btxdoifelsesameasprevious +\let\btxdoifcombiinlistelse \btxdoifelsecombiinlist \def\publ_place_list_indeed#1[#2][#3]% {\begingroup @@ -920,6 +981,7 @@ \s!btxref=\currentbtxtag,% \s!btxspc=\currentbtxspecification,% \s!btxlst=\number\c_btx_list_reference,% check if needed + %\ifx\currentbtxcombis\empty\else\s!btxcom={\currentbtxcombis},\fi% \ifx\currentbtxbefore\empty\else\s!btxbtx={\currentbtxbefore},\fi% \ifx\currentbtxafter \empty\else\s!btxatx={\currentbtxafter },\fi% \ifx\currentbtxbacklink\currentbtxbacktrace\s!btxint=\currentbtxbacklink\else\s!btxbck=\currentbtxbacktrace\fi}% @@ -952,6 +1014,7 @@ [\c!type=\s!btx]% \c!location=\v!none [\ifx\currentbtxdataset\v!default\else\s!btxset=\currentbtxdataset,\fi% \s!btxref=\currentbtxtag,% + %\ifx\currentbtxcombis\empty\else\s!btxcom={\currentbtxcombis},\fi% \ifx\currentbtxbefore\empty\else\s!btxbtx={\currentbtxbefore},\fi% \ifx\currentbtxafter \empty\else\s!btxatx={\currentbtxafter },\fi% \s!btxint=\number\currentbtxbacklink @@ -968,8 +1031,11 @@ \appendtoks \edef\currentbtxnumbering{\btxrenderingparameter\c!numbering}% - \edef\p_numbering{\btxrenderingparameter\c!numbering}% link to headnumber - \ifx\p_numbering\v!no + \ifx\currentbtxnumbering\v!yes + \def\currentbtxnumbering{num}% convenient alias + \letbtxrenderingparameter\c!numbering\currentbtxnumbering + \letlistparameter\c!headnumber\v!always + \else\ifx\currentbtxnumbering\v!no \letlistparameter\c!headnumber\v!no \let\currentbtxnumbering\empty % \letlistparameter\c!textcommand\outdented % needed? we can use titlealign @@ -978,7 +1044,7 @@ \letlistparameter\c!numbercommand\firstofoneargument % for the moment, no doubling needed \else \letlistparameter\c!headnumber\v!always - \fi + \fi\fi \let\currentlistmethod\s!btx \to \everysetupbtxlistplacement @@ -1015,6 +1081,7 @@ kind {list}% etallimit {\btxparameter\c!etallimit}% etaldisplay {\btxparameter\c!etaldisplay}% + etaloption {\btxparameter\c!etaloption}% symbol {\btxparameter{\c!stopper:initials}}% }% \relax @@ -1040,6 +1107,7 @@ kind {cite}% etallimit {\btxparameter\c!etallimit}% etaldisplay {\btxparameter\c!etaldisplay}% + etaloption {\btxparameter\c!etaloption}% symbol {\btxparameter{\c!stopper:initials}}% }% \relax diff --git a/Master/texmf-dist/tex/context/base/publ-sor.lua b/Master/texmf-dist/tex/context/base/publ-sor.lua index c442e395395..ba353a9bcc4 100644 --- a/Master/texmf-dist/tex/context/base/publ-sor.lua +++ b/Master/texmf-dist/tex/context/base/publ-sor.lua @@ -26,6 +26,10 @@ local v_short = variables.short local v_default = variables.default local v_reference = variables.reference local v_dataset = variables.dataset +local v_list = variables.list +local v_index = variables.index +local v_cite = variables.cite +local v_used = variables.used local report = logs.reporter("publications","sorters") @@ -225,70 +229,140 @@ local function sortsequence(dataset,list,sorttype) end --- index : order in dataset --- order : order of citations --- short : alphabetic + suffix --- reference : order in list --- default : automatic sorter --- authoryear : sort order list - --- tag | listindex | 0 | u | u.btxint | data.index - -local sorters = { - [v_short] = function(dataset,rendering,list) -- should we store it - local shorts = rendering.shorts - local function compare(a,b) - local aa = a and a[1] - local bb = b and b[1] - if aa and bb then - aa, bb = shorts[aa], shorts[bb] - return aa and bb and aa < bb - else - return a[1] < b[1] +-- tag | listindex | reference | userdata | dataindex + +-- short : short + tag index +-- dataset : index + tag +-- list : list + index +-- reference : tag + index +-- used : reference + dataset +-- authoryear : complex sort + +local sorters = { } + +sorters[v_short] = function(dataset,rendering,list) -- should we store it + local shorts = rendering.shorts + local function compare(a,b) + if a and b then + local taga = a[1] + local tagb = b[1] + if taga and tagb then + local shorta = shorts[taga] + local shortb = shorts[tagb] + if shorta and shortb then + -- assumes ascii shorts ... no utf yet + return shorta < shortb + end + -- fall back on tag order + return taga < tagb + end + -- fall back on dataset order + local indexa = a[5] + local indexb = b[5] + if indexa and indexb then + return indexa < indexb + end + end + return false + end + sort(list,compare) +end + +sorters[v_dataset] = function(dataset,rendering,list) -- dataset index + local function compare(a,b) + if a and b then + local indexa = a[5] + local indexb = b[5] + if indexa and indexb then + return indexa < indexb + end + local taga = a[1] + local tagb = b[1] + if taga and tagb then + return taga < tagb end end - sort(list,compare) - end, - [v_reference] = function(dataset,rendering,list) -- tag - local function compare(a,b) - return a[1] < b[1] + return false + end + sort(list,compare) +end + +sorters[v_list] = function(dataset,rendering,list) -- list index (normally redundant) + local function compare(a,b) + if a and b then + local lista = a[2] + local listb = b[2] + if lista and listb then + return lista < listb + end + local indexa = a[5] + local indexb = b[5] + if indexa and indexb then + return indexa < indexb + end end - sort(list,compare) - end, - [v_dataset] = function(dataset,rendering,list) -- dataset index - local function compare(a,b) - local aa = a and a[6] - local bb = b and b[6] - if aa and bb then - return aa < bb - else - return a[1] < b[1] + return false + end + sort(list,compare) +end + +sorters[v_reference] = function(dataset,rendering,list) -- tag + local function compare(a,b) + if a and b then + local taga = a[1] + local tagb = b[1] + if taga and tagb then + return taga < tagb + end + local indexa = a[5] + local indexb = b[5] + if indexa and indexb then + return indexa < indexb end end - sort(list,compare) - end, - [v_default] = function(dataset,rendering,list,sorttype) - if sorttype == "" or sorttype == v_default then -- listorder - local function compare(a,b) - return a[2] < b[2] + return false + end + sort(list,compare) +end + +sorters[v_used] = function(dataset,rendering,list) -- tag + local function compare(a,b) + if a and b then + local referencea = a[2] + local referenceb = b[2] + if referencea and referenceb then + return referencea < referenceb end - sort(list,compare) - else - local valid = sortsequence(dataset,list,sorttype) -- field order - if valid and #valid > 0 then - -- hm, we have a complication here because a sortsequence doesn't know if there's a field - -- so there is no real catch possible here .., anyway, we add a index as last entry when no - -- one is set so that should be good enough (needs testing) - for i=1,#valid do - local v = valid[i] - valid[i] = list[v.index] - end - return valid + local indexa = a[5] + local indexb = b[5] + if indexa and indexb then + return indexa < indexb end end + return false end -} + sort(list,compare) +end + +sorters[v_default] = sorters[v_list] +sorters[""] = sorters[v_list] +sorters[v_cite] = sorters[v_list] +sorters[v_index] = sorters[v_dataset] + +local function anything(dataset,rendering,list,sorttype) + local valid = sortsequence(dataset,list,sorttype) -- field order + if valid and #valid > 0 then + -- hm, we have a complication here because a sortsequence doesn't know if there's a field + -- so there is no real catch possible here .., anyway, we add a index as last entry when no + -- one is set so that should be good enough (needs testing) + for i=1,#valid do + local v = valid[i] + valid[i] = list[v.index] + end + return valid + end +end -table.setmetatableindex(sorters,function(t,k) return t[v_default] end) +table.setmetatableindex(sorters,function(t,k) return anything end) publications.lists.sorters = sorters diff --git a/Master/texmf-dist/tex/context/base/spac-ali.mkiv b/Master/texmf-dist/tex/context/base/spac-ali.mkiv index 6686bce53a4..07d588ba7d5 100644 --- a/Master/texmf-dist/tex/context/base/spac-ali.mkiv +++ b/Master/texmf-dist/tex/context/base/spac-ali.mkiv @@ -207,6 +207,9 @@ \unexpanded\def\spac_align_set_stretch {\emergencystretch\bodyfontsize} +\unexpanded\def\spac_align_set_extreme_stretch + {\emergencystretch10\bodyfontsize} + % Vertical \newconstant\c_spac_align_state_vertical @@ -681,6 +684,7 @@ \setvalue{\??aligncommand\v!tolerant }{\t_spac_align_collected\expandafter{\the\t_spac_align_collected\spac_align_set_tolerant}} \setvalue{\??aligncommand\v!verytolerant }{\t_spac_align_collected\expandafter{\the\t_spac_align_collected\spac_align_set_very_tolerant}} \setvalue{\??aligncommand\v!stretch }{\t_spac_align_collected\expandafter{\the\t_spac_align_collected\spac_align_set_stretch}} +\setvalue{\??aligncommand\v!extremestretch }{\t_spac_align_collected\expandafter{\the\t_spac_align_collected\spac_align_set_extreme_stretch}} %D For Wolfgang: diff --git a/Master/texmf-dist/tex/context/base/status-files.pdf b/Master/texmf-dist/tex/context/base/status-files.pdf index b5850036794..a1f5582c450 100644 Binary files a/Master/texmf-dist/tex/context/base/status-files.pdf and b/Master/texmf-dist/tex/context/base/status-files.pdf differ diff --git a/Master/texmf-dist/tex/context/base/status-lua.pdf b/Master/texmf-dist/tex/context/base/status-lua.pdf index 2046da47ab4..7903adbdca5 100644 Binary files a/Master/texmf-dist/tex/context/base/status-lua.pdf and b/Master/texmf-dist/tex/context/base/status-lua.pdf differ diff --git a/Master/texmf-dist/tex/context/base/tabl-ntb.mkiv b/Master/texmf-dist/tex/context/base/tabl-ntb.mkiv index 2b6f3a3ecf6..fcf8ac31231 100644 --- a/Master/texmf-dist/tex/context/base/tabl-ntb.mkiv +++ b/Master/texmf-dist/tex/context/base/tabl-ntb.mkiv @@ -235,7 +235,7 @@ \installcorenamespace{naturaltablehei} \installcorenamespace{naturaltabledis} \installcorenamespace{naturaltableaut} -\installcorenamespace{naturaltablefwd} % forcedwidth +%installcorenamespace{naturaltablefwd} % forcedwidth \installcorenamespace{naturaltabletxt} \installcorenamespace{naturaltablespn} \installcorenamespace{naturaltableref} @@ -1459,6 +1459,8 @@ \tabl_ntb_set_aut\c_tabl_ntb_col{\the\dimexpr\localwidth}% \fi} +\let\tabl_ntb_preroll\relax + \def\tabl_ntb_table_stop {\forgetall % new, here see narrower-004.tex %\setbox\scratchbox\hbox @@ -1481,6 +1483,7 @@ \dorecurse\c_tabl_ntb_maximum_row {\tabl_ntb_let_hei\recurselevel\maxdimen}% \tabl_ntb_let_gal\zerocount +\tabl_ntb_preroll\relax \c_tabl_tbl_pass\plusone \let\tabl_ntb_pass\tabl_ntb_pass_one \let\tabl_ntb_cell_process\tabl_ntb_cell_process_a @@ -1822,38 +1825,52 @@ \fi \fi} -\def\tabl_ntb_cell_process_a_check_span_two_yes - {\iftightTBLcolspan - \donefalse - \else - \ifnum\scratchcounter>\plusone - \begingroup - \edef\p_width{\naturaltablelocalparameter\c!width}% - \csname\??naturaltablesqueeze\ifcsname\??naturaltablesqueeze\p_width\endcsname\p_width\fi\endcsname - \ifdone - \endgroup - \edef\p_option{\naturaltablelocalparameter\c!option}% - \ifx\p_option\v!tight\donefalse\else\donetrue\fi - \else - % a dimension - \endgroup - \donefalse - \fi - \else - \edef\p_option{\naturaltablelocalparameter\c!option}% - \ifx\p_option\v!tight\donefalse\else\donetrue\fi - \fi - \fi} +% \def\tabl_ntb_cell_process_a_check_span_two_yes +% {\iftightTBLcolspan +% \donefalse +% \else +% \ifnum\scratchcounter>\plusone +% \begingroup +% \edef\p_width{\naturaltablelocalparameter\c!width}% +% \csname\??naturaltablesqueeze\ifcsname\??naturaltablesqueeze\p_width\endcsname\p_width\fi\endcsname +% \ifdone +% \endgroup +% \edef\p_option{\naturaltablelocalparameter\c!option}% +% \ifx\p_option\v!tight\donefalse\else\donetrue\fi +% \else +% % a dimension +% \endgroup +% \donefalse +% \fi +% \else +% \edef\p_option{\naturaltablelocalparameter\c!option}% +% \ifx\p_option\v!tight\donefalse\else\donetrue\fi +% \fi +% \fi +% \ifdone +% \ifdim\tabl_ntb_get_wid\c_tabl_ntb_col<\wd\scratchbox +% \tabl_ntb_set_wid\c_tabl_ntb_col{\the\wd\scratchbox}% +% \fi +% \fi} +% \def\tabl_ntb_cell_process_a_check_span_two_nop +% {\ifnum\scratchcounter>\plusone +% \edef\p_width{\naturaltablelocalparameter\c!width}% +% \csname\??naturaltablesqueeze\ifcsname\??naturaltablesqueeze\p_width\endcsname\p_width\fi\endcsname +% \else +% \donetrue +% \fi +% \ifdone +% \ifdim\tabl_ntb_get_wid\c_tabl_ntb_col<\wd\scratchbox +% \tabl_ntb_set_wid\c_tabl_ntb_col{\the\wd\scratchbox}% +% \fi +% \fi} -% \let\tabl_ntb_cell_process_a_check_span_two_nop\donetrue +\let\tabl_ntb_cell_process_a_check_span_two_yes\relax \def\tabl_ntb_cell_process_a_check_span_two_nop - {\ifnum\scratchcounter>\plusone - \edef\p_width{\naturaltablelocalparameter\c!width}% - \csname\??naturaltablesqueeze\ifcsname\??naturaltablesqueeze\p_width\endcsname\p_width\fi\endcsname - \else - \donetrue + {\ifdim\tabl_ntb_get_wid\c_tabl_ntb_col<\wd\scratchbox + \tabl_ntb_set_wid\c_tabl_ntb_col{\the\wd\scratchbox}% \fi} \unexpanded\def\tabl_ntb_cell_process_a#1#2[#3]#4% grouping added ! ! ! @@ -1878,11 +1895,6 @@ \tabl_ntb_spn_doifelse\c_tabl_ntb_col \tabl_ntb_cell_process_a_check_span_two_yes \tabl_ntb_cell_process_a_check_span_two_nop - \ifdone - \ifdim\tabl_ntb_get_wid\c_tabl_ntb_col<\wd\scratchbox - \tabl_ntb_set_wid\c_tabl_ntb_col{\the\wd\scratchbox}% - \fi - \fi \fi \scratchcounter\numexpr\c_tabl_ntb_row+\plusone\relax \scratchdimen\tabl_ntb_get_hei\scratchcounter\relax diff --git a/Master/texmf-dist/tex/context/base/x-asciimath.lua b/Master/texmf-dist/tex/context/base/x-asciimath.lua index 6030be86c8f..932c9a1b470 100644 --- a/Master/texmf-dist/tex/context/base/x-asciimath.lua +++ b/Master/texmf-dist/tex/context/base/x-asciimath.lua @@ -38,7 +38,7 @@ end local type, rawget = type, rawget local concat, insert, remove = table.concat, table.insert, table.remove local rep, gmatch, gsub, find = string.rep, string.gmatch, string.gsub, string.find -local utfchar = utf.char +local utfchar, utfbyte = utf.char, utf.byte local lpegmatch, patterns = lpeg.match, lpeg.patterns local S, P, R, C, V, Cc, Ct, Cs, Carg = lpeg.S, lpeg.P, lpeg.R, lpeg.C, lpeg.V, lpeg.Cc, lpeg.Ct, lpeg.Cs, lpeg.Carg @@ -140,6 +140,7 @@ local reserved = { ["times"] = { true, "×" }, ["-:"] = { true, "÷" }, ["@"] = { true, "∘" }, + ["circ"] = { true, "∘" }, ["o+"] = { true, "⊕" }, ["ox"] = { true, "⊗" }, ["o."] = { true, "⊙" }, @@ -700,8 +701,29 @@ local reserved = { ["\\frac"] = { true, "frac" }, + -- now it gets real crazy, only these two: + + [">"] = { true, ">" }, + ["<"] = { true, "<" }, + } +for k, v in next, characters.data do + local name = v.mathname + if name and not reserved[name] then + reserved[name] = { true, utfchar(k) } + end + local spec = v.mathspec +-- if spec then +-- for i=1,#spec do +-- local name = spec[i].name +-- if name and not reserved[name] then +-- reserved[name] = { true, utfchar(k) } +-- end +-- end +-- end +end + local isbinary = { ["\\frac"] = true, ["\\root"] = true, @@ -889,13 +911,13 @@ local p_spaces = patterns.whitespace local p_utf_base = patterns.utf8character local p_utf = C(p_utf_base) -local p_entity = (P("&") * C((1-P(";"))^2) * P(";"))/ entities +-- local p_entity = (P("&") * C((1-P(";"))^2) * P(";"))/ entities -entities["gt"] = ">" -entities["lt"] = "<" -entities["amp"] = "&" -entities["dquot"] = '"' -entities["quot"] = "'" +-- entities["gt"] = ">" +-- entities["lt"] = "<" +-- entities["amp"] = "&" +-- entities["dquot"] = '"' +-- entities["quot"] = "'" local p_onechar = p_utf_base * P(-1) @@ -934,8 +956,10 @@ for k, v in sortedhash(reserved) do end for k, v in next, entities do - k_unicode[k] = v - k_unicode["\\"..k] = v + if not k_unicode[k] then + k_unicode[k] = v + k_unicode["\\"..k] = v + end end if not find(k,"[^[a-zA-Z]+$]") then @@ -1061,10 +1085,10 @@ local p_special = -- open | close :: {: | :} -local e_parser = Cs ( ( - p_entity + - p_utf_base -)^0 ) +-- local e_parser = Cs ( ( +-- p_entity + +-- p_utf_base +-- )^0 ) local u_parser = Cs ( ( @@ -1641,7 +1665,7 @@ local ctx_type = context and context.type or function() end local ctx_inleft = context and context.inleft or function() end local function convert(str,totex) - local entified = lpegmatch(e_parser,str) or str -- when used in text + local entified = str -- lpegmatch(e_parser,str) or str -- when used in text local unicoded = lpegmatch(u_parser,entified) or entified local texcoded = collapse(lpegmatch(a_parser,unicoded)) if trace_mapping then @@ -1795,7 +1819,7 @@ asciimath.cleanedup = cleanedup local function convert(str) if #str > 0 then - local entified = lpegmatch(e_parser,str) or str -- when used in text + local entified = str -- lpegmatch(e_parser,str) or str -- when used in text local unicoded = lpegmatch(u_parser,entified) or entified if lpegmatch(p_onechar,unicoded) then ctx_mathematics(unicoded) @@ -2063,3 +2087,5 @@ end function show.save(name) table.save(name ~= "" and name or "dummy.lua",collected) end + +-- inspect(sortedkeys(reserved)) diff --git a/Master/texmf-dist/tex/context/interface/cont-cs.xml b/Master/texmf-dist/tex/context/interface/cont-cs.xml index afaacb7098b..c798ea4a91a 100644 --- a/Master/texmf-dist/tex/context/interface/cont-cs.xml +++ b/Master/texmf-dist/tex/context/interface/cont-cs.xml @@ -7188,6 +7188,7 @@ + diff --git a/Master/texmf-dist/tex/context/interface/cont-de.xml b/Master/texmf-dist/tex/context/interface/cont-de.xml index e9771d07a67..f40927b45d1 100644 --- a/Master/texmf-dist/tex/context/interface/cont-de.xml +++ b/Master/texmf-dist/tex/context/interface/cont-de.xml @@ -7188,6 +7188,7 @@ + diff --git a/Master/texmf-dist/tex/context/interface/cont-en.xml b/Master/texmf-dist/tex/context/interface/cont-en.xml index f00215596ef..651292e7f0a 100644 --- a/Master/texmf-dist/tex/context/interface/cont-en.xml +++ b/Master/texmf-dist/tex/context/interface/cont-en.xml @@ -7188,6 +7188,7 @@ + diff --git a/Master/texmf-dist/tex/context/interface/cont-fr.xml b/Master/texmf-dist/tex/context/interface/cont-fr.xml index 1cd7fa33a5f..30a89c059ad 100644 --- a/Master/texmf-dist/tex/context/interface/cont-fr.xml +++ b/Master/texmf-dist/tex/context/interface/cont-fr.xml @@ -7188,6 +7188,7 @@ + diff --git a/Master/texmf-dist/tex/context/interface/cont-it.xml b/Master/texmf-dist/tex/context/interface/cont-it.xml index d9fe0ac97d3..32d19e87f5e 100644 --- a/Master/texmf-dist/tex/context/interface/cont-it.xml +++ b/Master/texmf-dist/tex/context/interface/cont-it.xml @@ -7188,6 +7188,7 @@ + diff --git a/Master/texmf-dist/tex/context/interface/cont-nl.xml b/Master/texmf-dist/tex/context/interface/cont-nl.xml index 4bfad379829..6c49baccda6 100644 --- a/Master/texmf-dist/tex/context/interface/cont-nl.xml +++ b/Master/texmf-dist/tex/context/interface/cont-nl.xml @@ -7188,6 +7188,7 @@ + diff --git a/Master/texmf-dist/tex/context/interface/cont-pe.xml b/Master/texmf-dist/tex/context/interface/cont-pe.xml index 434a328e82b..bf7d65fd045 100644 --- a/Master/texmf-dist/tex/context/interface/cont-pe.xml +++ b/Master/texmf-dist/tex/context/interface/cont-pe.xml @@ -7188,6 +7188,7 @@ + diff --git a/Master/texmf-dist/tex/context/interface/cont-ro.xml b/Master/texmf-dist/tex/context/interface/cont-ro.xml index 31ef5d920bd..b81c3bc7e58 100644 --- a/Master/texmf-dist/tex/context/interface/cont-ro.xml +++ b/Master/texmf-dist/tex/context/interface/cont-ro.xml @@ -7188,6 +7188,7 @@ + diff --git a/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-merged.lua b/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-merged.lua index c46c16874eb..191f3f7b9eb 100644 --- a/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 05/04/15 19:00:43 +-- merge date : 05/10/15 20:08:09 do -- begin closure to overcome local limits and interference -- cgit v1.2.3