texlive[54456] Build/source/texk: dvisvgm 2.9.1

commits+karl at tug.org commits+karl at tug.org
Sat Mar 21 23:04:57 CET 2020


Revision: 54456
          http://tug.org/svn/texlive?view=revision&revision=54456
Author:   karl
Date:     2020-03-21 23:04:56 +0100 (Sat, 21 Mar 2020)
Log Message:
-----------
dvisvgm 2.9.1

Modified Paths:
--------------
    trunk/Build/source/texk/README
    trunk/Build/source/texk/dvisvgm/configure
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.am
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.in
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-pdf.xsl
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/generate-dvisvgm-sty.xsl
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NumericRanges.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp
    trunk/Build/source/texk/dvisvgm/version.ac

Added Paths:
-----------
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/tweak-dblatex-tex.py

Modified: trunk/Build/source/texk/README
===================================================================
--- trunk/Build/source/texk/README	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/README	2020-03-21 22:04:56 UTC (rev 54456)
@@ -63,7 +63,7 @@
 
 dvipsk - maintained here, by us
 
-dvisvgm 2.9 - checked 15mar20
+dvisvgm 2.9.1 - checked 21mar20
   https://dvisvgm.de/Downloads/
 
 gregorio 5.2.1 - checked 19dec19

Modified: trunk/Build/source/texk/dvisvgm/configure
===================================================================
--- trunk/Build/source/texk/dvisvgm/configure	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/configure	2020-03-21 22:04:56 UTC (rev 54456)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.9.
+# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.9.1.
 #
 # Report bugs to <tex-k at tug.org>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='dvisvgm (TeX Live)'
 PACKAGE_TARNAME='dvisvgm--tex-live-'
-PACKAGE_VERSION='2.9'
-PACKAGE_STRING='dvisvgm (TeX Live) 2.9'
+PACKAGE_VERSION='2.9.1'
+PACKAGE_STRING='dvisvgm (TeX Live) 2.9.1'
 PACKAGE_BUGREPORT='tex-k at tug.org'
 PACKAGE_URL=''
 
@@ -1391,7 +1391,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures dvisvgm (TeX Live) 2.9 to adapt to many kinds of systems.
+\`configure' configures dvisvgm (TeX Live) 2.9.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1462,7 +1462,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.9:";;
+     short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.9.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1594,7 +1594,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-dvisvgm (TeX Live) configure 2.9
+dvisvgm (TeX Live) configure 2.9.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2462,7 +2462,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by dvisvgm (TeX Live) $as_me 2.9, which was
+It was created by dvisvgm (TeX Live) $as_me 2.9.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -8214,7 +8214,7 @@
 
 # Define the identity of the package.
  PACKAGE='dvisvgm--tex-live-'
- VERSION='2.9'
+ VERSION='2.9.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -20212,7 +20212,7 @@
 Report bugs to <bug-libtool at gnu.org>."
 
 lt_cl_version="\
-dvisvgm (TeX Live) config.lt 2.9
+dvisvgm (TeX Live) config.lt 2.9.1
 configured by $0, generated by GNU Autoconf 2.69.
 
 Copyright (C) 2011 Free Software Foundation, Inc.
@@ -23517,7 +23517,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by dvisvgm (TeX Live) $as_me 2.9, which was
+This file was extended by dvisvgm (TeX Live) $as_me 2.9.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23583,7 +23583,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-dvisvgm (TeX Live) config.status 2.9
+dvisvgm (TeX Live) config.status 2.9.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog	2020-03-21 22:04:56 UTC (rev 54456)
@@ -1,3 +1,49 @@
+2020-03-21  Martin Gieseking  <martin.gieseking at uos.de>
+
+  * src/Matrix.cpp: 
+  fixed parsing of "scale(s)"
+fixes #131 
+
+  * .appveyor.yml, .travis.yml, configure.ac, doc/dvisvgm.1, src/Doxyfile, 
+    src/version.hpp: 
+  set version to 2.9.1 
+
+  * NEWS: 
+  updated NEWS 
+
+2020-03-20  Martin Gieseking  <martin.gieseking at uos.de>
+
+  * src/Calculator.cpp, tests/CalculatorTest.cpp: 
+  calculator: allow to omit '*' before '(' 
+
+2020-03-19  Martin Gieseking  <martin.gieseking at uos.de>
+
+  * doc/dvisvgm.1, doc/dvisvgm.txt.in, src/DvisvgmSpecialHandler.cpp, 
+    tests/DvisvgmSpecialTest.cpp: 
+  added macro {?(expr)} to enable math expressions in raw specials
+closes 
+  #130 
+
+2020-03-17  Martin Gieseking  <martin.gieseking at uos.de>
+
+  * doc/Makefile.am, doc/conf-dblatex-pdf.xsl, doc/dvisvgm.txt.in, 
+    doc/generate-dvisvgm-sty.xsl, doc/tweak-dblatex-tex.py: 
+  optimize line breaks and code blocks in pdf manpage 
+
+2020-03-16  Martin Gieseking  <martin.gieseking at uos.de>
+
+  * doc/conf-dblatex-pdf.xsl: 
+  small font changes in pdf version of manual page
+- changed body font to 
+  Source Serif Pro
+- scaled monospace font by 0.9 
+
+  * src/PageRanges.cpp, src/PageRanges.hpp: 
+  removed redundant #includes 
+
+  * src/NumericRanges.hpp: 
+  replaced explicit iterator type with auto 
+
 2020-03-13  Martin Gieseking  <martin.gieseking at uos.de>
 
   * NEWS: 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS	2020-03-21 22:04:56 UTC (rev 54456)
@@ -1,3 +1,12 @@
+dvisvgm-2.9.1 (2020-03-21)
+- added macro {?(expr)} to enable the evaluation of math expressions in
+  raw SVG fragments (GH #130)
+- multiplication operator "*" preceding an opening parentheses can now be
+  omitted in math expressions
+- fixed the evaluation of transformation command "scale(c)" which is now
+  correctly treated as "scale(c, c)" (GH #131)
+- minor layout optimizations of the PDF manual page
+
 dvisvgm-2.9 (2020-03-13)
 - added processing of PS operators 'image' and 'colorimage' to embed bitmaps
   present in PS/PDF data into the generated SVG

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac	2020-03-21 22:04:56 UTC (rev 54456)
@@ -4,7 +4,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT([dvisvgm],[2.9],[martin.gieseking at uos.de])
+AC_INIT([dvisvgm],[2.9.1],[martin.gieseking at uos.de])
 DATE="March 2020"
 AC_CONFIG_SRCDIR(src)
 AC_CONFIG_HEADERS([config.h])

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.am
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.am	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.am	2020-03-21 22:04:56 UTC (rev 54456)
@@ -15,6 +15,7 @@
 	dvisvgm.txt.in \
 	generate-dvisvgm-sty.xsl \
 	tweak-dblatex-pdf.xsl \
+	tweak-dblatex-tex.py \
 	tweak-db-refentry.xsl
 
 if BUILD_MANPAGE
@@ -22,6 +23,7 @@
 CONF_DBLATEX_MAN  = $(dvisvgm_srcdir)/doc/conf-dblatex-man.xsl
 CONF_DBLATEX_PDF  = $(dvisvgm_srcdir)/doc/conf-dblatex-pdf.xsl
 TWEAK_DBLATEX_PDF = $(dvisvgm_srcdir)/doc/tweak-dblatex-pdf.xsl
+TWEAK_DBLATEX_TEX = $(dvisvgm_srcdir)/doc/tweak-dblatex-tex.py
 TWEAK_DB_ARTICLE  = $(dvisvgm_srcdir)/doc/tweak-db-article.xsl
 TWEAK_DB_REFENTRY = $(dvisvgm_srcdir)/doc/tweak-db-refentry.xsl
 GEN_DBLATEX_STY   = $(dvisvgm_srcdir)/doc/generate-dvisvgm-sty.xsl
@@ -31,10 +33,10 @@
 dvisvgm.1: dvisvgm-man.xml $(CONF_DBLATEX_MAN)
 	xmlto -m $(CONF_DBLATEX_MAN) $(addprefix --stringparam , $(DB_VARS)) man $<
 
-dvisvgm.pdf: dvisvgm-man.xml dvisvgm.sty $(CONF_DBLATEX_PDF) $(TWEAK_DBLATEX_PDF)
+dvisvgm.pdf: dvisvgm-man.xml dvisvgm.sty $(CONF_DBLATEX_PDF) $(TWEAK_DBLATEX_PDF) $(TWEAK_DBLATEX_TEX)
 	mv $< $<.tmp
 	xsltproc -o $< $(TWEAK_DBLATEX_PDF) $<.tmp
-	dblatex -bxetex --texstyle=./dvisvgm.sty -p $(CONF_DBLATEX_PDF) $<
+	dblatex -bxetex --texstyle=./dvisvgm.sty -p $(CONF_DBLATEX_PDF) -r plugin:$(basename $(TWEAK_DBLATEX_TEX)) $<
 	mv $<.tmp $<
 	mv $(basename $<).pdf $@
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.in
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.in	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/Makefile.in	2020-03-21 22:04:56 UTC (rev 54456)
@@ -325,11 +325,13 @@
 	dvisvgm.txt.in \
 	generate-dvisvgm-sty.xsl \
 	tweak-dblatex-pdf.xsl \
+	tweak-dblatex-tex.py \
 	tweak-db-refentry.xsl
 
 @BUILD_MANPAGE_TRUE at CONF_DBLATEX_MAN = $(dvisvgm_srcdir)/doc/conf-dblatex-man.xsl
 @BUILD_MANPAGE_TRUE at CONF_DBLATEX_PDF = $(dvisvgm_srcdir)/doc/conf-dblatex-pdf.xsl
 @BUILD_MANPAGE_TRUE at TWEAK_DBLATEX_PDF = $(dvisvgm_srcdir)/doc/tweak-dblatex-pdf.xsl
+ at BUILD_MANPAGE_TRUE@TWEAK_DBLATEX_TEX = $(dvisvgm_srcdir)/doc/tweak-dblatex-tex.py
 @BUILD_MANPAGE_TRUE at TWEAK_DB_ARTICLE = $(dvisvgm_srcdir)/doc/tweak-db-article.xsl
 @BUILD_MANPAGE_TRUE at TWEAK_DB_REFENTRY = $(dvisvgm_srcdir)/doc/tweak-db-refentry.xsl
 @BUILD_MANPAGE_TRUE at GEN_DBLATEX_STY = $(dvisvgm_srcdir)/doc/generate-dvisvgm-sty.xsl
@@ -583,10 +585,10 @@
 @BUILD_MANPAGE_TRUE at dvisvgm.1: dvisvgm-man.xml $(CONF_DBLATEX_MAN)
 @BUILD_MANPAGE_TRUE@	xmlto -m $(CONF_DBLATEX_MAN) $(addprefix --stringparam , $(DB_VARS)) man $<
 
- at BUILD_MANPAGE_TRUE@dvisvgm.pdf: dvisvgm-man.xml dvisvgm.sty $(CONF_DBLATEX_PDF) $(TWEAK_DBLATEX_PDF)
+ at BUILD_MANPAGE_TRUE@dvisvgm.pdf: dvisvgm-man.xml dvisvgm.sty $(CONF_DBLATEX_PDF) $(TWEAK_DBLATEX_PDF) $(TWEAK_DBLATEX_TEX)
 @BUILD_MANPAGE_TRUE@	mv $< $<.tmp
 @BUILD_MANPAGE_TRUE@	xsltproc -o $< $(TWEAK_DBLATEX_PDF) $<.tmp
- at BUILD_MANPAGE_TRUE@	dblatex -bxetex --texstyle=./dvisvgm.sty -p $(CONF_DBLATEX_PDF) $<
+ at BUILD_MANPAGE_TRUE@	dblatex -bxetex --texstyle=./dvisvgm.sty -p $(CONF_DBLATEX_PDF) -r plugin:$(basename $(TWEAK_DBLATEX_TEX)) $<
 @BUILD_MANPAGE_TRUE@	mv $<.tmp $<
 @BUILD_MANPAGE_TRUE@	mv $(basename $<).pdf $@
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-pdf.xsl
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-pdf.xsl	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/conf-dblatex-pdf.xsl	2020-03-21 22:04:56 UTC (rev 54456)
@@ -3,9 +3,9 @@
 <!-- Copyright (C) 2015-2020 Martin Gieseking <martin.gieseking at uos.de> -->
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 	<xsl:param name="xetex.font">
-		<xsl:text>\setmainfont{Source Sans Pro}
</xsl:text>
+		<xsl:text>\setmainfont{Source Serif Pro}
</xsl:text>
 		<xsl:text>\setsansfont{Source Sans Pro}
</xsl:text>
-		<xsl:text>\setmonofont{Source Code Pro}
</xsl:text>
+		<xsl:text>\setmonofont[Scale=0.9]{Source Code Pro}
</xsl:text>
 	</xsl:param>
 
 	<xsl:param name="doc.toc.show">0</xsl:param>
@@ -12,6 +12,7 @@
 	<xsl:param name="refentry.numbered">0</xsl:param>
 	<xsl:param name="figure.caution">caution</xsl:param>
 	<xsl:param name="figure.note">note</xsl:param>
+	<xsl:param name="literal.layout.options"/>
 	<xsl:param name="table.default.tabstyle">tabular</xsl:param>
 	<xsl:param name="table.in.float">0</xsl:param>
 	<xsl:param name="term.breakline">1</xsl:param>
@@ -55,7 +56,7 @@
 		<xsl:text>\phantomsection\pdfbookmark[3]{</xsl:text>
 		<xsl:choose>
 			<xsl:when test="contains(emphasis, '--')">
-				<xsl:value-of select="concat('-{}-', substring-after(emphasis, '--'))"/>
+				<xsl:value-of select="substring-after(emphasis, '--')"/>
 			</xsl:when>
 			<xsl:otherwise>
 				<xsl:value-of select="emphasis"/>

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1	2020-03-21 22:04:56 UTC (rev 54456)
@@ -2,12 +2,12 @@
 .\"     Title: dvisvgm
 .\"    Author: Martin Gieseking <martin.gieseking at uos.de>
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 2020-03-08
+.\"      Date: 2020-03-19
 .\"    Manual: dvisvgm Manual
-.\"    Source: dvisvgm 2.9
+.\"    Source: dvisvgm 2.9.1
 .\"  Language: English
 .\"
-.TH "DVISVGM" "1" "2020\-03\-08" "dvisvgm 2\&.9" "dvisvgm Manual"
+.TH "DVISVGM" "1" "2020\-03\-19" "dvisvgm 2\&.9\&.1" "dvisvgm Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -329,7 +329,7 @@
 to the font format, e\&.g\&.
 \fB\-\-font\-format=woff,autohint\fR
 or
-\fB\-\-font\-format=woff,ah\fR\&.
+\fB\-\-fwoff,ah\fR\&.
 .sp
 Option
 \fB\-\-font\-format\fR
@@ -1177,9 +1177,9 @@
 \fBdvisvgm:raw\fR \fItext\fR
 .RS 4
 Adds an arbitrary sequence of XML nodes to the page section of the SVG document\&. dvisvgm checks syntax and proper nesting of the inserted elements but does not perform any validation, thus the user has to ensure that the resulting SVG is still valid\&. Opening and closing tags may be distributed among different
-\fBraw\fR
-specials\&. The tags themselves can also be split but must be continued with the immediatly following
-\fBraw\fR
+\fIraw\fR
+specials\&. The tags themselves can also be split but must be continued with the immediately following
+\fIraw\fR
 special\&. Both syntactically incorrect and wrongly nested tags lead to error messages\&. Parameter
 \fItext\fR
 may also contain the expressions
@@ -1191,9 +1191,16 @@
 \fIx\fR
 or
 \fIy\fR
-coordinate, the current color, and current transformation matrix, respectively\&. Furthermore,
+coordinate, the current color, and current transformation matrix, respectively\&. Character sequence
 \fB{?nl}\fR
-expands to a newline character\&.
+expands to a newline character\&. Finally, constructions of the form
+\fB{?(\fR\fB\fIexpr\fR\fR\fB)}\fR
+enable the evaluation of mathematical expressions which may consist of basic arithmetic operations including modulo\&. Like above, the variables
+\fIx\fR
+and
+\fIy\fR
+represent the current coordinates\&. Example:
+\fB{?(\-10*(x+2y)\-5)}\fR\&.
 .RE
 .PP
 \fBdvisvgm:rawdef\fR \fItext\fR

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in	2020-03-21 22:04:56 UTC (rev 54456)
@@ -22,7 +22,7 @@
 :man source: dvisvgm
 :man version: @VERSION@
 :man manual: dvisvgm Manual
-:revdate: 2020-03-08 09:20 +0100
+:revdate: 2020-03-19 22:06 +0100
 
 Name
 ----
@@ -224,7 +224,7 @@
 By default, dvisvgm creates unhinted fonts that might look bad on low-resolution devices. In order to
 improve the display quality, the generated TrueType, WOFF, or WOFF2 fonts can be autohinted. The
 autohinter is enabled by appending +,autohint+ or +,ah+ to the font format,
-e.g. +--font-format=woff,autohint+ or +--font-format=woff,ah+.
+e.g. +--font-format=woff,autohint+ or +--fwoff,ah+.
 +
 Option *--font-format* is only available if dvisvgm was built with WOFF support enabled.
 
@@ -722,12 +722,15 @@
   *dvisvgm:raw* 'text';;
   Adds an arbitrary sequence of XML nodes to the page section of the SVG document. dvisvgm checks syntax and
   proper nesting of the inserted elements but does not perform any validation, thus the user has to ensure
-  that the resulting SVG is still valid. Opening and closing tags may be distributed among different +raw+
-  specials. The tags themselves can also be split but must be continued with the immediatly following +raw+
+  that the resulting SVG is still valid. Opening and closing tags may be distributed among different 'raw'
+  specials. The tags themselves can also be split but must be continued with the immediately following 'raw'
   special. Both syntactically incorrect and wrongly nested tags lead to error messages.
   Parameter 'text' may also contain the expressions *{?x}*, *{?y}*, *{?color}*, and *{?matrix}* that expand to
   the current 'x' or 'y' coordinate, the current color, and current transformation matrix, respectively.
-  Furthermore, *{?nl}* expands to a newline character.
+  Character sequence *{?nl}* expands to a newline character. Finally, constructions of the form *{?(__expr__)}*
+  enable the evaluation of mathematical expressions which may consist of basic arithmetic operations including
+  modulo. Like above, the variables 'x' and 'y' represent the current coordinates.
+  Example: +{?(-10*(x+2y)-5)}+.
 
   *dvisvgm:rawdef* 'text';;
   This command is similar to *dvisvgm:raw*, but puts the XML nodes into the <defs> section of the SVG document

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/generate-dvisvgm-sty.xsl
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/generate-dvisvgm-sty.xsl	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/generate-dvisvgm-sty.xsl	2020-03-21 22:04:56 UTC (rev 54456)
@@ -7,6 +7,7 @@
 \ProvidesPackage{dvisvgm}[2015/02/04 dvisvgm DocBook style]
 \RequirePackageWithOptions{docbook}
 \RequirePackage[english]{babel}
+\RequirePackage[shortcuts]{extdash}
 \RequirePackage{underscore}
 \renewcommand*{\arraystretch}{-0.4}
 \AtBeginDocument{%

Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/tweak-dblatex-tex.py
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/tweak-dblatex-tex.py	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/tweak-dblatex-tex.py	2020-03-21 22:04:56 UTC (rev 54456)
@@ -0,0 +1,18 @@
+import re
+import os
+
+def main (latex_file, stdout):
+    latex_file_old = latex_file+"-old"
+    os.rename(latex_file, latex_file_old)
+    os.remove(os.path.splitext(latex_file)[0]+".pdf")
+    with open(latex_file, "w") as outfile:
+        with open(latex_file_old) as infile:
+            lines = infile.readlines()
+            for line in lines:
+                if re.match(r'(.*\\def)|(.*\\href)', line) == None:
+                    line = re.sub(r'([a-zA-Z0-9]+)/', r'\1\slash{}', line)
+                    line = re.sub(r'-{}-{}', r'\=/\=/', line)
+                    line = re.sub(r'([^a-zA-Z0-9])-{}', r'\1\=/', line)
+                print >>outfile, line.rstrip()
+    os.remove(latex_file_old)
+    return 0


Property changes on: trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/tweak-dblatex-tex.py
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp	2020-03-21 22:04:56 UTC (rev 54456)
@@ -71,6 +71,7 @@
 	for (;;)
 		switch (lookAhead(is)) {
 			case '*': left *= prim(is, true); break;  // prim '*' prim => $1 * $3
+			case '(': left *= prim(is, false); break; // prim '*' prim => $1 * $3
 			case '/': {                               // prim '/' prim => $1 / $3
 				double denom = prim(is, true);
 				if (denom == 0)

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp	2020-03-21 22:04:56 UTC (rev 54456)
@@ -21,6 +21,7 @@
 #include <array>
 #include <cstring>
 #include <utility>
+#include "Calculator.hpp"
 #include "DvisvgmSpecialHandler.hpp"
 #include "InputBuffer.hpp"
 #include "InputReader.hpp"
@@ -190,6 +191,35 @@
 }
 
 
+/** Evaluates substrings of the form {?(expr)} where 'expr' is a math expression,
+ *  and replaces the substring by the computed value.
+ *  @param[in,out] str string to scan for expressions */
+static void evaluate_expressions (string &str, SpecialActions &actions) {
+	size_t left = str.find("{?(");             // start position of expression macro
+	while (left != string::npos) {
+		size_t right = str.find(")}", left+2);  // end position of expression macro
+		if (right == string::npos)
+			break;
+		Calculator calc;
+		calc.setVariable("x", actions.getX());
+		calc.setVariable("y", actions.getY());
+		string expr = str.substr(left+3, right-left-3);  // math expression to evaluate
+		if (util::normalize_space(expr).empty())         // no expression given, e.g. {?( )}
+			str.erase(left, right-left+2);                // => replace with empty string
+		else {
+			try {
+				double val = calc.eval(expr);
+				str.replace(left, right-left+2, XMLString(val));
+			}
+			catch (CalculatorException &e) {
+				throw SpecialException(string(e.what())+" in '{?("+expr+")}'");
+			}
+		}
+		left = str.find("{?(", right+1);  // find next expression macro
+	}
+}
+
+
 /** Processes raw SVG fragments from the input stream. The SVG data must represent
  *  a single or multiple syntactically complete XML parts, like opening/closing tags,
  *  comments, or CDATA blocks. These must not be split and distributed over several
@@ -199,6 +229,7 @@
 	if (_nestingLevel == 0) {
 		string xml = ir.getLine();
 		if (!xml.empty()) {
+			evaluate_expressions(xml, actions);
 			expand_constants(xml, actions);
 			_pageParser.parse(xml, actions);
 		}
@@ -536,4 +567,4 @@
 		tags.resize(tags.length()-2);
 		throw SpecialException("missing closing tags: "+tags);
 	}
-}
\ No newline at end of file
+}

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp	2020-03-21 22:04:56 UTC (rev 54456)
@@ -538,7 +538,7 @@
 		}
 		else if (parse_transform_cmd(iss, "scale", 1, 2, params)) {
 			if (params.size() == 1)
-				params.push_back(1);
+				params.push_back(params[0]);
 			if (ne(params[0], 1) || ne(params[1], 1))
 				matrix.rmultiply(ScalingMatrix(params[0], params[1]));
 		}

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NumericRanges.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NumericRanges.hpp	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NumericRanges.hpp	2020-03-21 22:04:56 UTC (rev 54456)
@@ -26,8 +26,7 @@
 #include <utility>
 
 template <class T>
-class NumericRanges
-{
+class NumericRanges {
 	public:
 		using Range = std::pair<T,T>;
 		using Container = std::list<Range>;
@@ -54,7 +53,7 @@
 void NumericRanges<T>::addRange (T first, T last) {
 	if (first > last)
 		std::swap(first, last);
-	typename Container::iterator it = _ranges.begin();
+	auto it = _ranges.begin();
 	while (it != _ranges.end() && first > it->first+1 && first > it->second+1)
 		++it;
 	if (it == _ranges.end() || last < it->first-1 || first > it->second+1)
@@ -65,8 +64,8 @@
 	}
 	// merge adjacent ranges
 	if (it != _ranges.end()) {
-		typename Container::iterator l = it;
-		typename Container::iterator r = it;
+		auto l = it;
+		auto r = it;
 		if (l == _ranges.begin())
 			l = _ranges.end();
 		else

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.cpp	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.cpp	2020-03-21 22:04:56 UTC (rev 54456)
@@ -18,7 +18,6 @@
 ** along with this program; if not, see <http://www.gnu.org/licenses/>. **
 *************************************************************************/
 
-#include <sstream>
 #include "InputBuffer.hpp"
 #include "InputReader.hpp"
 #include "PageRanges.hpp"

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.hpp	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PageRanges.hpp	2020-03-21 22:04:56 UTC (rev 54456)
@@ -21,13 +21,10 @@
 #ifndef PAGERANGES_HPP
 #define PAGERANGES_HPP
 
-#include <list>
 #include <string>
-#include <utility>
 #include "NumericRanges.hpp"
 
-class PageRanges : public NumericRanges<int>
-{
+class PageRanges : public NumericRanges<int> {
 	public:
 		bool parse (const std::string &str, int max_page=0);
 		size_t numberOfPages () const;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp	2020-03-21 22:04:56 UTC (rev 54456)
@@ -25,14 +25,19 @@
 
 TEST(CalculatorTest, eval) {
 	Calculator calc;
-	EXPECT_EQ(calc.eval("2+3+4"),    9);
-	EXPECT_EQ(calc.eval("2*3+4"),   10);
-	EXPECT_EQ(calc.eval("2+3*4"),   14);
-	EXPECT_EQ(calc.eval("(2+3)*4"), 20);
-	EXPECT_EQ(calc.eval("2*(3+4)"), 14);
-	EXPECT_EQ(calc.eval("-2+3+4"),   5);
-	EXPECT_EQ(calc.eval("3/2"),    1.5);
-	EXPECT_EQ(calc.eval("3%2"),      1);
+	EXPECT_EQ(calc.eval("2+3+4"),         9);
+	EXPECT_EQ(calc.eval("2*3+4"),        10);
+	EXPECT_EQ(calc.eval("2+3*4"),        14);
+	EXPECT_EQ(calc.eval("(2+3)*4"),      20);
+	EXPECT_EQ(calc.eval("2*(3+4)"),      14);
+	EXPECT_EQ(calc.eval("2(3+4)"),       14);
+	EXPECT_EQ(calc.eval("(1+2)(3+4)"),   21);
+	EXPECT_EQ(calc.eval("-(1+2)(3+4)"), -21);
+	EXPECT_EQ(calc.eval("(1+2)-(3+4)"),  -4);
+	EXPECT_EQ(calc.eval("-2+3+4"),        5);
+	EXPECT_EQ(calc.eval("3/2"),         1.5);
+	EXPECT_EQ(calc.eval("3%2"),           1);
+	EXPECT_EQ(calc.eval("-(4)"),         -4);
 }
 
 
@@ -47,6 +52,7 @@
 	calc.setVariable("b", 3);
 	EXPECT_EQ(calc.eval("a+b"), 5);
 	EXPECT_EQ(calc.eval("2a+2b"), 10);
+	EXPECT_EQ(calc.eval("2a(1+2b)"), 28);
 }
 
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp	2020-03-21 22:04:56 UTC (rev 54456)
@@ -27,13 +27,14 @@
 
 using namespace std;
 
+
 class MyDvisvgmSpecialHandler : public DvisvgmSpecialHandler {
 	public:
 		void finishPreprocessing () {dviPreprocessingFinished();}
-		void finishPage ()          {dviEndPage(0, emptyActions);}
+		void finishPage ()          {dviEndPage(0, _actions);}
 
 	protected:
-		EmptySpecialActions emptyActions;
+		EmptySpecialActions _actions;
 };
 
 
@@ -42,8 +43,8 @@
 		class ActionsRecorder : public EmptySpecialActions {
 			public:
 				void embed (const BoundingBox &bb) override   {bbox.embed(bb);}
-				double getX () const override                 {return 0;}
-				double getY () const override                 {return 0;}
+				double getX () const override                 {return -42;}
+				double getY () const override                 {return 14;}
 				bool defsEquals (const string &str) const     {return defsString() == str;}
 				bool pageEquals (const string &str) const     {return pageString() == str;}
 				bool bboxEquals (const string &str) const     {return bbox.toSVGViewBox() == str;}
@@ -86,15 +87,15 @@
 
 
 TEST_F(DvisvgmSpecialTest, rawText) {
-	istringstream iss("raw first{?nl}");
+	istringstream iss("raw first{?nl}{?x},{?y}");
 	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.defsEquals(""));
-	EXPECT_TRUE(recorder.pageEquals("<g id='page1'>first\n</g>")) << recorder.pageString();
+	EXPECT_TRUE(recorder.pageEquals("<g id='page1'>first\n-42,14</g>")) << recorder.pageString();
 
-	iss.clear(); iss.str("raw \t second {?bbox dummy} \t");
+	iss.clear(); iss.str("raw \t ;{?(-x+2*y-5)}second {?bbox dummy} \t");
 	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.defsEquals(""));
-	EXPECT_TRUE(recorder.pageEquals("<g id='page1'>first\nsecond 0 0 0 0</g>")) << recorder.pageString();
+	EXPECT_TRUE(recorder.pageEquals("<g id='page1'>first\n-42,14;65second 0 0 0 0</g>")) << recorder.pageString();
 }
 
 
@@ -313,13 +314,13 @@
 	std::istringstream iss("img 72.27 72.27 test.png");
 	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.defsEquals(""));
-	EXPECT_TRUE(recorder.pageEquals("<g id='page1'><image x='0' y='0' width='72' height='72' xlink:href='test.png'/></g>")) << recorder.pageString();
+	EXPECT_TRUE(recorder.pageEquals("<g id='page1'><image x='-42' y='14' width='72' height='72' xlink:href='test.png'/></g>")) << recorder.pageString();
 
 	recorder.clear();
 	iss.clear();
 	iss.str("img 10bp 20bp test2.png");
 	handler.process("", iss, recorder);
-	EXPECT_TRUE(recorder.pageEquals("<g id='page1'><image x='0' y='0' width='10' height='20' xlink:href='test2.png'/></g>")) << recorder.pageString();
+	EXPECT_TRUE(recorder.pageEquals("<g id='page1'><image x='-42' y='14' width='10' height='20' xlink:href='test2.png'/></g>")) << recorder.pageString();
 }
 
 
@@ -340,19 +341,19 @@
 	iss.clear();
 	iss.str("bbox 72.27 72.27");
 	handler.process("", iss, recorder);
-	EXPECT_TRUE(recorder.bboxEquals("0 -72 72 72"));
+	EXPECT_TRUE(recorder.bboxEquals("-42 -58 72 72"));
 
 	recorder.clear();
 	iss.clear();
 	iss.str("bbox 72bp 72bp");
 	handler.process("", iss, recorder);
-	EXPECT_TRUE(recorder.bboxEquals("0 -72 72 72"));
+	EXPECT_TRUE(recorder.bboxEquals("-42 -58 72 72"));
 
 	recorder.clear();
 	iss.clear();
 	iss.str("bbox rel 72.27 72.27");
 	handler.process("", iss, recorder);
-	EXPECT_TRUE(recorder.bboxEquals("0 -72 72 72"));
+	EXPECT_TRUE(recorder.bboxEquals("-42 -58 72 72"));
 
 	recorder.clear();
 	iss.clear();

Modified: trunk/Build/source/texk/dvisvgm/version.ac
===================================================================
--- trunk/Build/source/texk/dvisvgm/version.ac	2020-03-21 21:21:32 UTC (rev 54455)
+++ trunk/Build/source/texk/dvisvgm/version.ac	2020-03-21 22:04:56 UTC (rev 54456)
@@ -9,4 +9,4 @@
 dnl --------------------------------------------------------
 dnl
 dnl  m4-include this file to define the current dvisvgm version
-m4_define([dvisvgm_version], [2.9])
+m4_define([dvisvgm_version], [2.9.1])



More information about the tex-live-commits mailing list.