Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also .

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also .
base repository: latex3/latex3
base: 2019-05-03
head repository: latex3/latex3
compare: 2019-05-28
Commits on May 03, 2019
This came up after a discussion with Ulrike. The old behaviour was
somewhat loose in terms of the catcode of the tokens produced. In this
commit, that is addressed by ensuring that the output tokens are always
re-generated to have the correct catcode. It also adds a str version,
which will be quite a bit faster and which gives the correct behaviour
in \str_<target>_case:n - that was not the case before.
Commits on May 04, 2019
This way we only add a special to a column with some content. Hopefully this works reasonably well and is safe.
For goto, \pdfstartlink does add /Subtype /Link, so we
need to do the same for other drivers.
Commits on May 06, 2019
This is only needed for OCG support and then once per page. 
To return once OCG concepts start to get added!
Commits on May 07, 2019
Commits on May 08, 2019
Probably this will be revised again ...
Do we want this to go into the general file list?
This is needed for \special-based images,
not in pdfTeX/LuaTeX.
Needs more work: doesn't like .tex at the moment!
Commits on May 14, 2019
Quite possibly this should be done in a first-shipout
hook, so all engines give the same result.
Based on discussion with BLF.
Leading zeros should be present.
Commits on May 15, 2019
Save a lot of expansion.
Commits on May 18, 2019
Commits on May 22, 2019
Contrarily to Heiko Oberdiek's pdftexcmds where he made the LuaTeX
emulation look like an internal integer using \numexpr...\relax,
here we want an integer denotation (simply decimal digits), which is
precisely what l3kernel.elapsedtime() provides.
Commits on May 25, 2019
Mention the fact that if the first non-expandable token found during the
expansion is a <space token>, it is gobbled.
Commits on May 26, 2019
Commits on May 27, 2019
Part of the 'AR fix' which was not stripped out.
Approach from Raimund Niedrist, author of hypdvips.
Commits on May 28, 2019
This follows a long internal discussion.  This implements "option B1"
in that discussion.
Showing with 5,230 additions and 2,156 deletions.
  1. +2 −1 contrib/testfiles/chemformula001.luatex.tlg
  2. +20 −7 contrib/testfiles/chemformula001.ptex.tlg
  3. +2 −1 contrib/testfiles/chemformula001.tlg
  4. +20 −7 contrib/testfiles/chemformula001.uptex.tlg
  5. +2 −1 contrib/testfiles/chemformula001.xetex.tlg
  6. +12 −1 l3experimental/CHANGELOG.md
  7. +8 −2 l3experimental/README.md
  8. +8 −6 l3experimental/l3benchmark/l3benchmark.dtx
  9. +2 −2 l3experimental/l3cctab/l3cctab.dtx
  10. +37 −24 l3experimental/l3color/l3color.dtx
  11. +4 −4 l3experimental/l3color/testfiles/m3color001.ptex.tlg
  12. +4 −4 l3experimental/l3color/testfiles/m3color001.tlg
  13. +4 −4 l3experimental/l3color/testfiles/m3color001.uptex.tlg
  14. +4 −4 l3experimental/l3color/testfiles/m3color001.xetex.tlg
  15. +1 −1 l3experimental/l3draw/l3draw-boxes.dtx
  16. +1 −1 l3experimental/l3draw/l3draw-layers.dtx
  17. +1 −1 l3experimental/l3draw/l3draw-paths.dtx
  18. +1 −1 l3experimental/l3draw/l3draw-points.dtx
  19. +1 −1 l3experimental/l3draw/l3draw-scopes.dtx
  20. +1 −1 l3experimental/l3draw/l3draw-softpath.dtx
  21. +1 −1 l3experimental/l3draw/l3draw-state.dtx
  22. +1 −1 l3experimental/l3draw/l3draw-transforms.dtx
  23. +2 −2 l3experimental/l3draw/l3draw.dtx
  24. +1 −1 l3experimental/l3draw/testfiles/m3draw001.tlg
  25. +3 −3 {l3trial/l3cctab → l3experimental/l3graphics}/build.lua
  26. +716 −0 l3experimental/l3graphics/l3graphics.dtx
  27. 0 l3experimental/l3graphics/l3graphics.glo
  28. 0 l3experimental/l3graphics/l3graphics.hd
  29. +26 −0 l3experimental/l3graphics/l3graphics.idx
  30. +5 −5 l3trial/l3image/l3image.ins → l3experimental/l3graphics/l3graphics.ins
  31. 0 l3experimental/l3graphics/l3graphics.out
  32. 0 l3experimental/l3graphics/l3graphics.synctex(busy)
  33. +1 −1 l3trial/l3image/testfiles/m3image000.lvt → l3experimental/l3graphics/testfiles/m3graphics000.lvt
  34. +12 −0 l3experimental/l3graphics/testfiles/m3graphics000.tlg
  35. +5 −3 l3experimental/l3str/l3str-convert.dtx
  36. +2 −2 l3experimental/l3str/l3str-format.dtx
  37. +2 −2 l3experimental/l3sys-shell/l3sys-shell.dtx
  38. +2 −2 l3experimental/xcoffins/xcoffins.dtx
  39. +2 −2 l3experimental/xgalley/l3galley.dtx
  40. +2 −2 l3experimental/xgalley/xgalley.dtx
  41. +51 −1 l3kernel/CHANGELOG.md
  42. +1 −1 l3kernel/README.md
  43. +2 −2 l3kernel/expl3.dtx
  44. +1 −1 l3kernel/interface3.tex
  45. +35 −35 l3kernel/l3.ins
  46. +1 −1 l3kernel/l3alloc.dtx
  47. +1 −1 l3kernel/l3basics.dtx
  48. +1 −1 l3kernel/l3bootstrap.dtx
  49. +1 −1 l3kernel/l3box.dtx
  50. +277 −10 l3kernel/l3candidates.dtx
  51. +1 −1 l3kernel/l3clist.dtx
  52. +1 −1 l3kernel/l3coffins.dtx
  53. +1 −1 l3kernel/l3color-base.dtx
  54. +1 −1 l3kernel/l3deprecation.dtx
  55. +1 −1 l3kernel/l3doc.dtx
  56. +1 −1 l3kernel/l3docstrip.dtx
  57. +8 −1 l3kernel/l3drivers-basics.dtx
  58. +1 −1 l3kernel/l3drivers-box.dtx
  59. +1 −1 l3kernel/l3drivers-color.dtx
  60. +5 −5 l3kernel/l3drivers-draw.dtx
  61. +611 −0 l3kernel/l3drivers-graphics.dtx
  62. +0 −504 l3kernel/l3drivers-image.dtx
  63. +114 −130 l3kernel/l3drivers-pdf.dtx
  64. +75 −13 l3kernel/l3drivers.dtx
  65. +1 −1 l3kernel/l3expan.dtx
  66. +5 −4 l3kernel/l3file.dtx
  67. +1 −1 l3kernel/l3final.dtx
  68. +1 −1 l3kernel/l3flag.dtx
  69. +35 −35 l3kernel/l3format.ins
  70. +1 −1 l3kernel/l3fp-assign.dtx
  71. +1 −1 l3kernel/l3fp-aux.dtx
  72. +1 −1 l3kernel/l3fp-basics.dtx
  73. +1 −1 l3kernel/l3fp-convert.dtx
  74. +1 −1 l3kernel/l3fp-expo.dtx
  75. +1 −1 l3kernel/l3fp-extended.dtx
  76. +1 −1 l3kernel/l3fp-logic.dtx
  77. +61 −20 l3kernel/l3fp-parse.dtx
  78. +1 −1 l3kernel/l3fp-random.dtx
  79. +1 −1 l3kernel/l3fp-round.dtx
  80. +1 −1 l3kernel/l3fp-traps.dtx
  81. +1 −1 l3kernel/l3fp-trig.dtx
  82. +10 −6 l3kernel/l3fp.dtx
  83. +1 −1 l3kernel/l3fparray.dtx
  84. +1 −1 l3kernel/l3int.dtx
  85. +1 −1 l3kernel/l3intarray.dtx
  86. +1 −1 l3kernel/l3kernel-functions.dtx
  87. +25 −1 l3kernel/l3keys.dtx
  88. +1 −1 l3kernel/l3legacy.dtx
  89. +6 −4 l3kernel/l3luatex.dtx
  90. +6 −2 l3kernel/l3msg.dtx
  91. +1 −1 l3kernel/l3names.dtx
  92. +1 −1 l3kernel/l3prg.dtx
  93. +1 −1 l3kernel/l3prop.dtx
  94. +1 −1 l3kernel/l3quark.dtx
  95. +1 −1 l3kernel/l3regex.dtx
  96. +1 −1 l3kernel/l3seq.dtx
  97. +1 −1 l3kernel/l3skip.dtx
  98. +1 −1 l3kernel/l3sort.dtx
  99. +2 −2 l3kernel/l3str.dtx
  100. +1 −1 l3kernel/l3styleguide.tex
  101. +1 −1 l3kernel/l3syntax-changes.tex
  102. +1 −1 l3kernel/l3sys.dtx
  103. +1 −1 l3kernel/l3term-glossary.tex
  104. +1 −1 l3kernel/l3tl-analysis.dtx
  105. +1 −1 l3kernel/l3tl.dtx
  106. +1 −1 l3kernel/l3token.dtx
  107. +1 −1 l3kernel/l3unicode.dtx
  108. +1 −1 l3kernel/source3.tex
  109. +5 −4 l3kernel/source3body.tex
  110. +168 −0 l3kernel/testfiles/m3char001.luatex.tlg
  111. +44 −0 l3kernel/testfiles/m3char001.lvt
  112. +796 −0 l3kernel/testfiles/m3char001.ptex.tlg
  113. +260 −0 l3kernel/testfiles/m3char001.tlg
  114. +796 −0 l3kernel/testfiles/m3char001.uptex.tlg
  115. +168 −0 l3kernel/testfiles/m3char001.xetex.tlg
  116. +50 −16 l3kernel/testfiles/m3expl001.luatex.tlg
  117. +46 −20 l3kernel/testfiles/m3expl001.ptex.tlg
  118. +49 −16 l3kernel/testfiles/m3expl001.tlg
  119. +46 −20 l3kernel/testfiles/m3expl001.uptex.tlg
  120. +56 −29 l3kernel/testfiles/m3expl001.xetex.tlg
  121. +1 −1 l3kernel/testfiles/m3expl002.luatex.tlg
  122. +2 −2 l3kernel/testfiles/m3expl002.ptex.tlg
  123. +1 −1 l3kernel/testfiles/m3expl002.tlg
  124. +2 −2 l3kernel/testfiles/m3expl002.uptex.tlg
  125. +2 −2 l3kernel/testfiles/m3expl002.xetex.tlg
  126. +50 −16 l3kernel/testfiles/m3expl003.luatex.tlg
  127. +46 −20 l3kernel/testfiles/m3expl003.ptex.tlg
  128. +49 −16 l3kernel/testfiles/m3expl003.tlg
  129. +46 −20 l3kernel/testfiles/m3expl003.uptex.tlg
  130. +56 −29 l3kernel/testfiles/m3expl003.xetex.tlg
  131. +1 −1 l3kernel/testfiles/m3expl004.luatex.tlg
  132. +2 −2 l3kernel/testfiles/m3expl004.ptex.tlg
  133. +1 −1 l3kernel/testfiles/m3expl004.tlg
  134. +2 −2 l3kernel/testfiles/m3expl004.uptex.tlg
  135. +2 −2 l3kernel/testfiles/m3expl004.xetex.tlg
  136. +1 −1 l3kernel/testfiles/m3expl006.luatex.tlg
  137. +2 −2 l3kernel/testfiles/m3expl006.ptex.tlg
  138. +1 −1 l3kernel/testfiles/m3expl006.tlg
  139. +2 −2 l3kernel/testfiles/m3expl006.uptex.tlg
  140. +2 −2 l3kernel/testfiles/m3expl006.xetex.tlg
  141. +14 −1 l3kernel/testfiles/m3fp-parse001.lvt
  142. +30 −0 l3kernel/testfiles/m3fp-parse001.tlg
  143. +57 −1 l3kernel/testfiles/m3keys002.lvt
  144. +39 −7 l3kernel/testfiles/m3keys002.tlg
  145. +4 −1 l3packages/CHANGELOG.md
  146. +1 −1 l3packages/README.md
  147. +2 −2 l3packages/l3keys2e/l3keys2e.dtx
  148. +2 −2 l3packages/xfp/xfp.dtx
  149. +2 −2 l3packages/xfrac/xfrac.dtx
  150. +6 −0 l3packages/xparse/testfiles/xparse004.luatex.tlg
  151. +11 −1 l3packages/xparse/testfiles/xparse004.lvt
  152. +6 −0 l3packages/xparse/testfiles/xparse004.tlg
  153. +3 −3 l3packages/xparse/xparse.dtx
  154. +2 −2 l3packages/xtemplate/xtemplate.dtx
  155. +0 −420 l3trial/l3cctab/l3cctab.dtx
  156. +0 −60 l3trial/l3cctab/l3cctab.ins
  157. +0 −8 l3trial/l3cctab/testfiles/m3cctab000.luatex.tlg
  158. +0 −12 l3trial/l3cctab/testfiles/m3cctab000.lvt
  159. +0 −7 l3trial/l3cctab/testfiles/m3cctab000.tlg
  160. +0 −21 l3trial/l3image/build.lua
  161. +0 −438 l3trial/l3image/l3image.dtx
  162. +0 −11 l3trial/l3image/testfiles/m3image000.tlg
@@ -13,7 +13,7 @@ Completed box being shipped out [1]
....\pdfcolorstack 0 pop
..\glue 25.0
..\glue(\lineskip) 0.0
..\vbox(550.0+0.0)x345.0, glue set 525.89374fil, direction TLT
..\vbox(550.0+0.0)x345.0, glue set 527.9436fil, direction TLT
...\write-{}
...\pdfcolorstack 0 push {0 g 0 G}
...\glue(\topskip) 3.16669
@@ -432,6 +432,7 @@ Completed box being shipped out [1]
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue -2.05006
...\glue 0.0 plus 1.0fil
...\glue 0.0
...\glue 0.0 plus 0.0001fil
@@ -3,12 +3,24 @@ Don't change this file in any respect.
Completed box being shipped out [1]
\vbox(633.0+0.0)x407.0
.\hbox(0.0+0.0)x0.0
..\special{! /pgfH{/pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfshade \ETC.}
..\special{! /pgfV{/pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfshade \ETC.}
..\special{! /pgfA{ /pgfdiff 8 index round cvi 8 index round cvi sub 2 mul 1 add\ETC.}
..\special{! /pgfR1{ newpath dup dup dup 0 360 arc clip newpath dup /pgfendx exc\ETC.}
..\special{! /pgfR2{ newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc setrgb\ETC.}
..\special{! /pgfR{ /pgfdiff 8 index round cvi 8 index round cvi sub 4 mul 1 add\ETC.}
..\special{! /pgfHrgb{/pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfsha\ETC.}
..\special{! /pgfVrgb{/pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfsha\ETC.}
..\special{! /pgfArgb{ /pgfdiff 8 index round cvi 8 index round cvi sub 2 mul 1 \ETC.}
..\special{! /pgfR1rgb{ newpath dup dup dup 0 360 arc clip newpath dup /pgfendx \ETC.}
..\special{! /pgfR2rgb{ newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc set\ETC.}
..\special{! /pgfRrgb{ /pgfdiff 8 index round cvi 8 index round cvi sub 4 mul 1 \ETC.}
..\special{! /pgfHcmyk{ /pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfs\ETC.}
..\special{! /pgfVcmyk{ /pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfs\ETC.}
..\special{! /pgfAcmyk{ /pgfdiff 10 index round cvi 10 index round cvi sub 2 mul\ETC.}
..\special{! /pgfR1cmyk{ newpath dup dup dup 0 360 arc clip newpath dup /pgfendx\ETC.}
..\special{! /pgfR2cmyk{ newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc se\ETC.}
..\special{! /pgfRcmyk{ /pgfdiff 10 index round cvi 10 index round cvi sub 4 mul\ETC.}
..\special{! /pgfHgray{ /pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfs\ETC.}
..\special{! /pgfVgray{ /pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfs\ETC.}
..\special{! /pgfAgray{ /pgfdiff 4 index round cvi 4 index round cvi sub 2 mul 1\ETC.}
..\special{! /pgfR1gray{ newpath dup dup dup 0 360 arc clip newpath dup /pgfendx\ETC.}
..\special{! /pgfR2gray{ newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc se\ETC.}
..\special{! /pgfRgray{ /pgfdiff 4 index round cvi 4 index round cvi sub 4 mul 1\ETC.}
..\special{! /pgfsc{}bind def/pgffc{}bind def/pgfstr{stroke}bind def/pgffill{fi\ETC.}
.\glue 16.0
.\vbox(617.0+0.0)x345.0, shifted 62.0
@@ -20,7 +32,7 @@ Completed box being shipped out [1]
....\special{color pop}
..\glue 25.0
..\glue(\lineskip) 0.0
..\vbox(550.0+0.0)x345.0, glue set 525.89377fil
..\vbox(550.0+0.0)x345.0, glue set 527.9436fil
...\write-{}
...\special{color push gray 0}
...\special{! /pgf1{gsave exec 1.0 pgfw 2.00002 0.0 moveto -6.00006 4.00005 linet\ETC.}
@@ -431,6 +443,7 @@ Completed box being shipped out [1]
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue -2.05006
...\glue 0.0 plus 1.0fil
...\glue 0.0
...\glue 0.0 plus 0.0001fil
@@ -13,7 +13,7 @@ Completed box being shipped out [1]
....\pdfcolorstack 0 pop
..\glue 25.0
..\glue(\lineskip) 0.0
..\vbox(550.0+0.0)x345.0, glue set 525.89377fil
..\vbox(550.0+0.0)x345.0, glue set 527.9436fil
...\write-{}
...\pdfcolorstack 0 push {0 g 0 G}
...\glue(\topskip) 3.16669
@@ -424,6 +424,7 @@ Completed box being shipped out [1]
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue -2.05006
...\glue 0.0 plus 1.0fil
...\glue 0.0
...\glue 0.0 plus 0.0001fil
@@ -3,12 +3,24 @@ Don't change this file in any respect.
Completed box being shipped out [1]
\vbox(633.0+0.0)x407.0
.\hbox(0.0+0.0)x0.0
..\special{! /pgfH{/pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfshade \ETC.}
..\special{! /pgfV{/pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfshade \ETC.}
..\special{! /pgfA{ /pgfdiff 8 index round cvi 8 index round cvi sub 2 mul 1 add\ETC.}
..\special{! /pgfR1{ newpath dup dup dup 0 360 arc clip newpath dup /pgfendx exc\ETC.}
..\special{! /pgfR2{ newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc setrgb\ETC.}
..\special{! /pgfR{ /pgfdiff 8 index round cvi 8 index round cvi sub 4 mul 1 add\ETC.}
..\special{! /pgfHrgb{/pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfsha\ETC.}
..\special{! /pgfVrgb{/pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfsha\ETC.}
..\special{! /pgfArgb{ /pgfdiff 8 index round cvi 8 index round cvi sub 2 mul 1 \ETC.}
..\special{! /pgfR1rgb{ newpath dup dup dup 0 360 arc clip newpath dup /pgfendx \ETC.}
..\special{! /pgfR2rgb{ newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc set\ETC.}
..\special{! /pgfRrgb{ /pgfdiff 8 index round cvi 8 index round cvi sub 4 mul 1 \ETC.}
..\special{! /pgfHcmyk{ /pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfs\ETC.}
..\special{! /pgfVcmyk{ /pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfs\ETC.}
..\special{! /pgfAcmyk{ /pgfdiff 10 index round cvi 10 index round cvi sub 2 mul\ETC.}
..\special{! /pgfR1cmyk{ newpath dup dup dup 0 360 arc clip newpath dup /pgfendx\ETC.}
..\special{! /pgfR2cmyk{ newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc se\ETC.}
..\special{! /pgfRcmyk{ /pgfdiff 10 index round cvi 10 index round cvi sub 4 mul\ETC.}
..\special{! /pgfHgray{ /pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfs\ETC.}
..\special{! /pgfVgray{ /pgfheight exch def 0.75 setlinewidth [] 0 setdash /pgfs\ETC.}
..\special{! /pgfAgray{ /pgfdiff 4 index round cvi 4 index round cvi sub 2 mul 1\ETC.}
..\special{! /pgfR1gray{ newpath dup dup dup 0 360 arc clip newpath dup /pgfendx\ETC.}
..\special{! /pgfR2gray{ newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc se\ETC.}
..\special{! /pgfRgray{ /pgfdiff 4 index round cvi 4 index round cvi sub 4 mul 1\ETC.}
..\special{! /pgfsc{}bind def/pgffc{}bind def/pgfstr{stroke}bind def/pgffill{fi\ETC.}
.\glue 16.0
.\vbox(617.0+0.0)x345.0, shifted 62.0
@@ -20,7 +32,7 @@ Completed box being shipped out [1]
....\special{color pop}
..\glue 25.0
..\glue(\lineskip) 0.0
..\vbox(550.0+0.0)x345.0, glue set 525.89377fil
..\vbox(550.0+0.0)x345.0, glue set 527.9436fil
...\write-{}
...\special{color push gray 0}
...\special{! /pgf1{gsave exec 1.0 pgfw 2.00002 0.0 moveto -6.00006 4.00005 linet\ETC.}
@@ -431,6 +443,7 @@ Completed box being shipped out [1]
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue -2.05006
...\glue 0.0 plus 1.0fil
...\glue 0.0
...\glue 0.0 plus 0.0001fil
@@ -16,7 +16,7 @@ Completed box being shipped out [1]
....\special{color pop}
..\glue 25.0
..\glue(\lineskip) 0.0
..\vbox(550.0+0.0)x345.0, glue set 525.89377fil
..\vbox(550.0+0.0)x345.0, glue set 527.9436fil
...\write-{}
...\special{color push gray 0}
...\glue(\topskip) 3.16669
@@ -459,6 +459,7 @@ Completed box being shipped out [1]
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue -2.05006
...\glue 0.0 plus 1.0fil
...\glue 0.0
...\glue 0.0 plus 0.0001fil
@@ -7,6 +7,16 @@ this project uses date-based 'snapshot' version identifiers.

## [Unreleased]

## [2019-05-28]

### Added

- New `l3graphics` module

### Fixed

- Missing `\scan_stop:` in benchmark code (fixes #577)

## [2019-05-03]

## Fixed
@@ -75,7 +85,8 @@ this project uses date-based 'snapshot' version identifiers.
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system

[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-03...HEAD
[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-28...HEAD
[2019-05-28]: https://github.com/latex3/latex3/compare/2019-05-03...2019-05-28
[2019-05-03]: https://github.com/latex3/latex3/compare/2019-03-05...2019-05-03
[2019-03-05]: https://github.com/latex3/latex3/compare/2019-01-28...2019-03-05
[2019-01-28]: https://github.com/latex3/latex3/compare/2018-10-31...2019-01-28
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================

Release 2019-05-03
Release 2019-05-28

Overview
--------
@@ -25,11 +25,11 @@ bundles:
* `l3cctab`
* `l3color`
* `l3draw`
* `l3graphics`
* `l3str`
* `l3sys-shell`
* `xcoffins`
* `xgalley`
* `xmarks`

`l3benchmark`
-------------
@@ -58,6 +58,12 @@ This module provides a code-level interface for constructing drawings. The
interfaces are heavily inspired by the `pgf` layer of the widely-used
TikZ system.

`l3graphics`
-------------

This module provides interfaces for the inclusion of graphics files
in documents, similar to the `graphics` package.

`l3str`
-------

@@ -46,7 +46,7 @@
% }^^A
% }
%
% \date{Released 2019-05-03}
% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -66,8 +66,10 @@
% \cs{sys_timer:}
% \end{syntax}
% Expands to the current value of the engine's timer clock, a
% non-negative integer. In engines without clock support this
% expands to $0$.
% non-negative integer. In engines without clock support this expands
% to $0$ after an error. In \LuaTeX{} only the CPU time is measured,
% while in other engines real time is measured (including time waiting
% for user input).
% \end{function}
%
% \section{Benchmark}
@@ -128,7 +130,7 @@
%
% \begin{macrocode}
%<*package>
\ProvidesExplPackage{l3benchmark}{2019-05-03}{}
\ProvidesExplPackage{l3benchmark}{2019-05-28}{}
{L3 Experimental benchmarking}
%</package>
% \end{macrocode}
@@ -148,13 +150,13 @@
\sys_if_engine_luatex:TF
{
\cs_new:Npn \sys_timer:
{ \int_eval:w \lua_now:n { l3kernel.elapsedtime() } \scan_stop: }
{ \lua_now:n { l3kernel.elapsedtime() } }
}
{
\cs_if_exist:NT \tex_elapsedtime:D
{
\cs_new:Npn \sys_timer:
{ \int_eval:w \tex_elapsedtime:D }
{ \int_value:w \tex_elapsedtime:D }
}
}
\@@_const:nn { sys_if_timer_exist }
@@ -46,7 +46,7 @@
% }^^A
% }
%
% \date{Released 2019-05-03}
% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -150,7 +150,7 @@
%
% \begin{macrocode}
%<*package>
\ProvidesExplPackage{l3cctab}{2019-05-03}{}
\ProvidesExplPackage{l3cctab}{2019-05-28}{}
{L3 Experimental category code tables}
%</package>
% \end{macrocode}
@@ -46,7 +46,7 @@
% }^^A
% }
%
% \date{Released 2019-05-03}
% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -265,7 +265,7 @@
%
% \begin{macrocode}
%<*package>
\ProvidesExplPackage{l3color}{2019-05-03}{}
\ProvidesExplPackage{l3color}{2019-05-28}{}
{L3 Experimental color support}
%</package>
% \end{macrocode}
@@ -292,9 +292,9 @@
%
% \subsection{Setup}
%
% \begin{variable}{\l_@@_tmp_tl}
% \begin{variable}{\l_@@_internal_tl}
% \begin{macrocode}
\tl_new:N \l_@@_tmp_tl
\tl_new:N \l_@@_internal_tl
% \end{macrocode}
% \end{variable}
%
@@ -451,15 +451,7 @@
\driver_color_pickup:N \l_@@_current_tl
\tl_set_eq:cN { l_@@_named_ . _tl } \l_@@_current_tl
%</package>
\group_begin:
\seq_map_inline:Nn \l_char_active_seq
{
\tl_set:Nx \l_@@_tmp_tl { \cs_to_str:N ##1 }
\char_set_active_eq:NN ##1 \l_@@_tmp_tl
}
\tl_set:Nx \l_@@_tmp_tl {#1}
\exp_args:NNV \group_end:
\@@_parse:nN \l_@@_tmp_tl #2
\exp_args:Ne \@@_parse:nN { \tl_to_str:n {#1} } #2
}
% \end{macrocode}
% Before going to all of the effort of parsing an expression, these two
@@ -496,10 +488,10 @@
\group_begin:
\@@_extract:nNN {#2} \l_@@_model_tl \l_@@_value_tl
\@@_parse_loop:w #3 ! ! ! ! \q_stop
\tl_set:Nx \l_@@_tmp_tl
\tl_set:Nx \l_@@_internal_tl
{ \l_@@_model_tl \c_space_tl \l_@@_value_tl }
\exp_args:NNNV \group_end:
\tl_set:Nn #1 \l_@@_tmp_tl
\tl_set:Nn #1 \l_@@_internal_tl
}
% \end{macrocode}
% This is the loop proper: there can be an open-ended set of colors to parse,
@@ -633,21 +625,42 @@
% \end{macro}
%
% \begin{macro}[EXP]
% {\@@_parse_gray:w, \@@_parse_rgb:w, \@@_parse_cmyk:w, \@@_parse_spot:w}
% {
% \@@_parse_model_gray:w, \@@_parse_model_rgb:w,
% \@@_parse_model_cmyk:w, \@@_parse_model_spot:w
% }
% \begin{macro}[EXP]{\@@_parse_number:n}
% \begin{macro}[EXP]{\@@_parse_number:w}
% \begin{macro}[EXP]{\@@_parse_spot_aux:w}
% Turn the input into internal form.
% Turn the input into internal form, also tidying up the number quickly.
% \begin{macrocode}
\cs_new:Npn \@@_parse_gray:w #1 , #2 \q_stop {#1}
\cs_new:Npn \@@_parse_rgb:w #1 , #2 , #3 , #4 \q_stop { #1 ~ #2 ~ #3 }
\cs_new:Npn \@@_parse_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop
{ #1 ~ #2 ~ #3 ~ #4 }
\cs_new:Npn \@@_parse_spot:w #1 , #2 \q_stop
\cs_new:Npn \@@_parse_model_gray:w #1 , #2 \q_stop { \@@_parse_number:n {#1} }
\cs_new:Npn \@@_parse_model_rgb:w #1 , #2 , #3 , #4 \q_stop
{
\@@_parse_number:n {#1} ~
\@@_parse_number:n {#2} ~
\@@_parse_number:n {#3}
}
\cs_new:Npn \@@_parse_model_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop
{
\@@_parse_number:n {#1} ~
\@@_parse_number:n {#2} ~
\@@_parse_number:n {#3} ~
\@@_parse_number:n {#4}
}
\cs_new:Npn \@@_parse_model_spot:w #1 , #2 \q_stop
{ \@@_parse_spot_aux:w #1 ! 100 ! \q_stop }
\cs_new:Npn \@@_parse_spot_aux:w #1 ! #2 ! #3 \q_stop
{ #1 ~ \fp_eval:n { #2 / 100 } }
\cs_new:Npn \@@_parse_number:n #1
{ \@@_parse_number:w #1 . 0 . \q_stop }
\cs_new:Npn \@@_parse_number:w #1 . #2 . #3 \q_stop
{ \tl_if_blank:nTF {#1} { 0 } {#1} . #2 }
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Selecting colors (and color models)}
%
@@ -725,10 +738,10 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_direct:nnN #1#2#3
{
\cs_if_exist:cTF { @@_parse_ #1 :w }
\cs_if_exist:cTF { @@_parse_model_ #1 :w }
{
\tl_set:Nx #3
{ #1 ~ \use:c { @@_parse_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop }
{ #1 ~ \use:c { @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop }
\@@_check_model:N #3
}
{

No commit comments for this range