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.