summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-03-25 03:01:53 +0000
committerNorbert Preining <norbert@preining.info>2020-03-25 03:01:53 +0000
commite32477e40d853a81951c9811f8554455dbff4014 (patch)
tree12744b350742c71cbb3c768354084a5c50369ce7 /macros
parente9af7499b89170ca5c737240b0cdb9563dcf6c5a (diff)
CTAN sync 202003250301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/animate/ChangeLog8
-rw-r--r--macros/latex/contrib/animate/README.md1
-rw-r--r--macros/latex/contrib/animate/animate.pdfbin3925892 -> 3909425 bytes
-rw-r--r--macros/latex/contrib/animate/animate.sty247
-rw-r--r--macros/latex/contrib/animate/animate.tex49
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-juradiss/Changes1
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-juradiss/README12
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-juradiss/doc/biblatex-juradiss.pdfbin109845 -> 109781 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-juradiss/doc/biblatex-juradiss.tex33
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biber.conf12
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biblatex-juradiss.bbx14
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biblatex-juradiss.cbx4
-rw-r--r--macros/latex/contrib/graphics-def/CONTRIBUTING.md96
-rw-r--r--macros/latex/contrib/graphics-def/README.md2
-rw-r--r--macros/latex/contrib/graphics-def/dvisvgm.def123
-rw-r--r--macros/latex/contrib/graphics-def/luatex.def13
-rw-r--r--macros/latex/contrib/graphics-def/pdftex.def13
-rw-r--r--macros/latex/contrib/mathtools/README84
-rw-r--r--macros/latex/contrib/mathtools/README.md56
-rw-r--r--macros/latex/contrib/mathtools/empheq.dtx599
-rw-r--r--macros/latex/contrib/mathtools/empheq.ins94
-rw-r--r--macros/latex/contrib/mathtools/empheq.pdfbin311438 -> 311417 bytes
-rw-r--r--macros/latex/contrib/mathtools/mathtools.dtx296
-rw-r--r--macros/latex/contrib/mathtools/mathtools.ins94
-rw-r--r--macros/latex/contrib/mathtools/mathtools.pdfbin448435 -> 455418 bytes
-rw-r--r--macros/latex/contrib/mathtools/mhsetup.dtx15
-rw-r--r--macros/latex/contrib/mathtools/mhsetup.pdfbin235863 -> 236395 bytes
-rw-r--r--macros/latex/contrib/media9/ChangeLog12
-rw-r--r--macros/latex/contrib/media9/doc/media9.pdfbin3727329 -> 3727327 bytes
-rw-r--r--macros/latex/contrib/media9/media9.sty4
-rw-r--r--macros/latex/contrib/media9/pdfbase.sty9
-rw-r--r--macros/latex/contrib/sidenotes/caesar_book.cls7
-rw-r--r--macros/latex/contrib/sidenotes/caesar_example.pdfbin75996 -> 86126 bytes
-rw-r--r--macros/latex/contrib/sidenotes/sidenotes.dtx2
-rw-r--r--macros/latex/contrib/sidenotes/sidenotes.ins2
-rw-r--r--macros/latex/contrib/sidenotes/sidenotes.pdfbin218504 -> 217903 bytes
36 files changed, 1298 insertions, 604 deletions
diff --git a/macros/latex/contrib/animate/ChangeLog b/macros/latex/contrib/animate/ChangeLog
index c2965e0508..55ece87d2e 100644
--- a/macros/latex/contrib/animate/ChangeLog
+++ b/macros/latex/contrib/animate/ChangeLog
@@ -1,3 +1,11 @@
+2020-03-24
+ * new: option `controlsaligned' extended for refined adjustment of
+ horizontal position
+
+2020-03-23
+ * new: option `controlsaligned' for changing horizontal position of
+ animation controls
+
2019-12-03
* fix: another occurrence of quotes issue, now fixed at a central place
diff --git a/macros/latex/contrib/animate/README.md b/macros/latex/contrib/animate/README.md
index 03fc9e0523..b91efeaad2 100644
--- a/macros/latex/contrib/animate/README.md
+++ b/macros/latex/contrib/animate/README.md
@@ -29,6 +29,7 @@ width=<h-size>, height=<v-size>, totalheight=<v-size>,
keepaspectratio, scale=<factor>, nomouse,
hiresbb,pagebox,interpolate,
autopause, autoplay, autoresume, controls[=all | none | ...],
+controlsaligned=left[+<indent>] | center | right[+<indent>],
final, draft,
buttonsize=<size>,
buttonbg=<colour>, buttonfg=<colour>, buttonalpha=<opacity>,
diff --git a/macros/latex/contrib/animate/animate.pdf b/macros/latex/contrib/animate/animate.pdf
index 0ed8c00b69..da8dc82801 100644
--- a/macros/latex/contrib/animate/animate.pdf
+++ b/macros/latex/contrib/animate/animate.pdf
Binary files differ
diff --git a/macros/latex/contrib/animate/animate.sty b/macros/latex/contrib/animate/animate.sty
index 47c4d19d6f..a5c45e8316 100644
--- a/macros/latex/contrib/animate/animate.sty
+++ b/macros/latex/contrib/animate/animate.sty
@@ -13,7 +13,7 @@
\NeedsTeXFormat{LaTeX2e}
-\def\@anim@version{2019/12/03}
+\def\@anim@version{2020/03/23}
\ProvidesPackage{animate}
[\@anim@version\space PDF & SVG animations from files and inline graphics]
@@ -144,177 +144,6 @@
\if@anim@dvisvgm
\setboolean{@anim@export}{false}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \AtBeginDocument{%
- % Add PS and PDF file inclusion (PDF files as of dvisvgm-2.6.3) and
- % fix some scaling issues in the dvisvgm.def graphics driver
- \def\GPT@space{ }
- \def\Gin@extensions{.svg,.eps,.png,.jpg,.jpeg}
- \def\Ginclude@pdf#1{\Ginclude@psorpdf{#1}{pdffile}}
- \def\Ginclude@eps#1{\let\Gin@page\@empty\Ginclude@psorpdf{#1}{PSfile}}
- \def\Ginclude@psorpdf#1#2{%
- \message{<#1>}%
- \bgroup
- \def\@tempa{!}%
- \dimen@\Gin@req@width
- \dimen@ii.1bp%
- \divide\dimen@\dimen@ii
- \@tempdima\Gin@req@height
- \divide\@tempdima\dimen@ii
- \Gin@req@width0.99626\Gin@req@width%
- \Gin@req@height0.99626\Gin@req@height%
- \ifGin@clip\special{dvisvgm:raw
- <g><clipPath id="GinClip\Gin@clip@id">%
- <path d="M{?x},{?y}l\strip@pt\Gin@req@width,0l0,-\strip@pt\Gin@req@height
- l-\strip@pt\Gin@req@width,0Z"/>%
- </clipPath>%
- <g clip-path="url(\Gin@hash@tag GinClip\Gin@clip@id)">}%
- \fi%
- \special{#2="#1"\GPT@space
- \ifx\Gin@page\@empty\else page=\Gin@page\GPT@space\fi
- llx=\Gin@llx\GPT@space
- lly=\Gin@lly\GPT@space
- urx=\Gin@urx\GPT@space
- ury=\Gin@ury\GPT@space
- \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\GPT@space\fi
- \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\GPT@space\fi
- }%
- \ifGin@clip%
- \special{dvisvgm:raw </g></g>}%
- \begingroup%
- \count@\Gin@clip@id\advance\count@ by\@ne\xdef\Gin@clip@id{\the\count@}%
- \endgroup%
- \fi%
- \egroup}
- \@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
- \@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
- \@namedef{Gin@rule@.mps}#1{{eps}{.mps}{#1}}
- \@namedef{Gin@rule@.pdf}#1{{pdf}{.xbb}{#1}}
- \def\Gread@pdf#1{%
- \Gread@generic{#1}\Gread@extractbb@aux%
- }%
- \def\Gread@extractbb@aux#1{%
- \ifeof\@inputcheck%
- \immediate\openin\@inputcheck=%
- "|extractbb %
- \ifx\Gin@page\@empty\else -p \Gin@page\GPT@space\fi
- \ifx\Gin@pagebox\@empty\else -B \Gin@pagebox\GPT@space\fi
- -O \Gin@base\Gin@ext"%
- \fi%
- \Gread@true%
- \let\@tempb\Gread@false%
- \ifeof\@inputcheck%
- \@latex@error%
- {Cannot run pipe command. Try --shell-escape\MessageBreak%
- (--enable-pipes in MikTeX) option}%
- {Alternatively, execute\MessageBreak\space\space
- extractbb
- \ifx\Gin@page\@empty\else -p \Gin@page\GPT@space\fi
- \ifx\Gin@pagebox\@empty\else -B \Gin@pagebox\GPT@space\fi
- \Gin@base\Gin@ext\MessageBreak in a terminal.}%
- \else%
- \loop%
- \read\@inputcheck to\@tempa%
- \ifeof\@inputcheck%
- \Gread@false%
- \else%
- \expandafter\Gread@find@bb\@tempa:.\\%
- \fi%
- \ifGread@%
- \repeat%
- \immediate\closein\@inputcheck%
- \fi%
- }
- \def\Ginclude@bitmap#1{%
- \dimen@\Gin@urx pt%
- \advance\dimen@ by-\Gin@llx pt%
- \edef\Gin@svg@view@width{\strip@pt\dimen@}%
- \dimen@\Gin@ury pt%
- \advance\dimen@ by-\Gin@lly pt%
- \edef\Gin@svg@view@height{\strip@pt\dimen@}%
- \dimen@\Gin@svg@real@height@bp pt%
- \advance\dimen@ by-\Gin@ury pt%
- \edef\Gin@svg@view@base{\strip@pt\dimen@}%
- \Gin@req@width0.99626\Gin@req@width%
- \Gin@req@height0.99626\Gin@req@height%
- \raise\strip@pt\Gin@req@height bp\hbox{%
- \special{dvisvgm: raw
- <g transform="translate({?x},{?y})">
- <svg overflow="\ifGin@clip hidden\else visible\fi" width="\strip@pt\Gin@req@width" height="\strip@pt\Gin@req@height"
- viewBox="\Gin@llx\GPT@space\Gin@svg@view@base\GPT@space\Gin@svg@view@width\GPT@space\Gin@svg@view@height">
- <image width="\Gin@svg@real@width@bp" height="\Gin@svg@real@height@bp"
- xlink:href="#1"/>
- </svg>
- </g>}%
- }%
- }
- \@namedef{Gin@rule@.svg}#1{{svg}{.svg}{#1}}
- \let\Ginclude@svg\Ginclude@bitmap
- \def\Gread@svg#1{%
- \begingroup
- \catcode`\"12\relax%
- \immediate\openin\@inputcheck#1 %
- \ifeof\@inputcheck
- \@latex@error{File `#1' not found}\@ehc
- \else
- \let\Gin@urx\relax
- \let\Gin@ury\relax
- \Gread@true
- \let\@tempb\Gread@false
- \loop
- \read\@inputcheck to\@tempa
- \ifeof\@inputcheck
- \Gread@false
- \else
- \ifx\@tempa\Gin@partext\else
- \ifx\Gin@ury\relax\expandafter\Gread@svg@height\@tempa height=\relax\fi%
- \ifx\Gin@urx\relax\expandafter\Gread@svg@width\@tempa width=\relax\fi%
- \fi%
- \fi
- \ifx\Gin@urx\relax\else\ifx\Gin@ury\relax\else\Gread@false\fi\fi%
- \ifGread@
- \repeat
- \immediate\closein\@inputcheck
- \ifx\Gin@urx\relax
- \@latex@error{Cannot determine width of graphic in #1 (no BoundingBox)}\@ehc
- \def\Gin@urx{72}%
- \fi
- \ifx\Gin@ury\relax
- \@latex@error{Cannot determine height of graphic in #1 (no BoundingBox)}\@ehc
- \def\Gin@ury{72}%
- \fi
- \fi
- \edef\Gin@setter{\def\noexpand\Gin@urx{\Gin@urx}\def\noexpand\Gin@ury{\Gin@ury}}%
- \expandafter\endgroup\Gin@setter%
- \def\Gin@llx{0}%
- \def\Gin@lly{0}%
- \edef\Gin@svg@real@width@bp{\Gin@urx}%
- \edef\Gin@svg@real@height@bp{\Gin@ury}%
- }
- \def\Gin@partext{\par}
- \def\Gread@svg@height#1height={\@ifnextchar\relax{}{\@ifnextchar'\Gread@svg@height@apo\Gread@svg@height@double}}
- \def\Gread@svg@height@apo'#1'#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\edef\Gin@ury{\strip@pt\dimen@}}
- \def\Gread@svg@height@double"#1"#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\edef\Gin@ury{\strip@pt\dimen@}}
- \def\Gread@svg@width#1width={\@ifnextchar\relax{}{\@ifnextchar'\Gread@svg@width@apo\Gread@svg@width@double}}
- \def\Gread@svg@width@apo'#1'#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\edef\Gin@urx{\strip@pt\dimen@}}
- \def\Gread@svg@width@double"#1"#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\edef\Gin@urx{\strip@pt\dimen@}}
- \def\Gin@gobble@till@relax#1\relax{}
- \edef\Gin@hash@tag{\string#}
- \def\Gin@clip@id{0}
- \@namedef{Gin@rule@.jpg}#1{{bitmap}{.xbb}{#1}}
- \@namedef{Gin@rule@.jpeg}#1{{bitmap}{.xbb}{#1}}
- \@namedef{Gin@rule@.png}#1{{bitmap}{.xbb}{#1}}
- \def\Gread@bitmap#1{%
- \Gread@generic{#1}\Gread@extractbb@aux%
- \dimen@\Gin@urx pt%
- \advance\dimen@ by-\Gin@llx pt%
- \edef\Gin@svg@real@width@bp{\strip@pt\dimen@}%
- \dimen@\Gin@ury pt%
- \advance\dimen@ by-\Gin@lly pt%
- \edef\Gin@svg@real@height@bp{\strip@pt\dimen@}%
- }
- }
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\fi
\if@anim@export
@@ -364,7 +193,7 @@
\if@anim@dvisvgm
\setboolean{@anim@export}{false}
- \def\@anim@updatebbox#1#2#3{\special{dvisvgm:bbox #1 #2 #3}}
+ \def\@anim@updatebbox#1#2#3{\special{dvisvgm:bbox #1 #2 #3 transform}}
%approach similar to OCGs, that is, putting the frame content in an svg group,
% <g id='...'>...</g>, whose visibility is then manipulated by JavaScript
@@ -1563,7 +1392,9 @@
\setlength{\@anim@tmpdimb}{\z@}%
\vskip 0.1\@anim@tmpdima%
\hbox to \@anim@animwidth {%
- \hss%
+ \if@anim@ctrlleft\hspace{\@anim@ctrlsindent}\fi%
+ \ifnum\if@anim@ctrlright\@ne\else%
+ \if@anim@ctrlcentre\@ne\else\z@\fi\fi=\@ne\hss\fi%
\setboolean{@anim@controls@firstgrp}{false}%
\if@anim@controls@stop%
\setboolean{@anim@controls@firstgrp}{true}%
@@ -1584,7 +1415,9 @@
\if@anim@controls@firstgrp\hskip 0.3\@anim@tmpdima\fi%
\frame{\phantom{\rule{3\@anim@tmpdima}{\@anim@tmpdima}}}%
\fi%
- \hss%
+ \ifnum\if@anim@ctrlleft\@ne\else%
+ \if@anim@ctrlcentre\@ne\else\z@\fi\fi=\@ne\hss\fi%
+ \if@anim@ctrlright\hspace{\@anim@ctrlsindent}\fi%
}%
\fi%
}%
@@ -1842,7 +1675,9 @@
\setlength{\@anim@tmpdima}{\@anim@btnsize}%
\vskip 0.1\@anim@tmpdima%
\hbox to \@anim@animwidth {%
- \hss%
+ \if@anim@ctrlleft\hspace{\@anim@ctrlsindent}\fi%
+ \ifnum\if@anim@ctrlright\@ne\else%
+ \if@anim@ctrlcentre\@ne\else\z@\fi\fi=\@ne\hss\fi%
\def\@anim@tooltip{}%
\setboolean{@anim@controls@firstgrp}{false}%
\if@anim@controls@stop%
@@ -1890,7 +1725,9 @@
\@anim@makebutton{Plus}{#2}%
\@anim@buttonwidget{#1}{Plus}{Plus:#2}%
\fi%
- \hss%
+ \ifnum\if@anim@ctrlleft\@ne\else%
+ \if@anim@ctrlcentre\@ne\else\z@\fi\fi=\@ne\hss\fi%
+ \if@anim@ctrlright\hspace{\@anim@ctrlsindent}\fi%
}%
\fi%
}%
@@ -3099,6 +2936,39 @@
\setboolean{@anim@controls@speed}{true}%
}
+\def\@anim@parse@ctrlsalignarg#1#2#3+#4\@nil{%
+ \ifthenelse{\equal{#3}{}}{}{\def#1{#3}}%
+ \ifthenelse{\equal{#4}{}}{#2=\z@}{\@anim@getalignindent#2#4\@nil}%
+}
+\def\@anim@getalignindent#1#2+\@nil{#1=#2}
+
+\newboolean{@anim@ctrlleft}
+\newboolean{@anim@ctrlright}
+\newboolean{@anim@ctrlcentre}
+\define@key{anim@user}{controlsaligned}{%
+ \@anim@parse@ctrlsalignarg\@anim@tmpvar\@anim@tmpdima#1+\@nil%
+ \ifthenelse{\equal{\@anim@tmpvar}{left}}{%
+ \setboolean{@anim@ctrlleft}{true}%
+ \setboolean{@anim@ctrlright}{false}%
+ \setboolean{@anim@ctrlcentre}{false}%
+ \xdef\@anim@ctrlsindent{\the\@anim@tmpdima}%
+ }{%
+ \ifthenelse{\equal{\@anim@tmpvar}{right}}{%
+ \setboolean{@anim@ctrlleft}{false}%
+ \setboolean{@anim@ctrlright}{true}%
+ \setboolean{@anim@ctrlcentre}{false}%
+ \xdef\@anim@ctrlsindent{\the\@anim@tmpdima}%
+ }{%
+ \ifthenelse{\equal{\@anim@tmpvar}{center}}{%
+ \setboolean{@anim@ctrlleft}{false}%
+ \setboolean{@anim@ctrlright}{false}%
+ \setboolean{@anim@ctrlcentre}{true}%
+ \xdef\@anim@ctrlsindent{\z@}%
+ }{}%
+ }%
+ }%
+}
+
\newboolean{@anim@loop}
\define@key{anim@user}{loop}[true]{%
\setboolean{@anim@loop}{#1}%
@@ -3261,6 +3131,10 @@
\global\let\if@anim@controls@step=\if@anim@@controls@step%
\global\let\if@anim@controls@stop=\if@anim@@controls@stop%
\global\let\if@anim@controls@speed=\if@anim@@controls@speed%
+ \global\let\if@anim@ctrlleft=\if@anim@@ctrlleft%
+ \global\let\if@anim@ctrlright=\if@anim@@ctrlright%
+ \global\let\if@anim@ctrlcentre=\if@anim@@ctrlcentre%
+ \global\let\@anim@ctrlsindent\@anim@@ctrlsindent%
\global\let\if@anim@loop=\if@anim@@loop%
\global\let\if@anim@autoplay=\if@anim@@autoplay%
\global\let\if@anim@autoresume=\if@anim@@autoresume%
@@ -3509,6 +3383,25 @@
\setboolean{@anim@@controls@speed}{true}%
}
+\newboolean{@anim@@ctrlleft}
+\newboolean{@anim@@ctrlright}
+\newboolean{@anim@@ctrlcentre}
+\setboolean{@anim@@ctrlcentre}{true}
+\def\@anim@@ctrlsindent{\z@}
+\define@key{anim@pkg}{controlsaligned}{%
+ \@anim@parse@ctrlsalignarg\@anim@tmpvar\@anim@tmpdima#1+\@nil%
+ \setboolean{@anim@@ctrlcentre}{false}%
+ \ifthenelse{\equal{#1}{left}}{%
+ \setboolean{@anim@@ctrlleft}{true}%
+ \edef\@anim@@ctrlsindent{\the\@anim@tmpdima}%
+ }{%
+ \ifthenelse{\equal{#1}{right}}{%
+ \setboolean{@anim@@ctrlright}{true}%
+ \edef\@anim@@ctrlsindent{\the\@anim@tmpdima}%
+ }{\setboolean{@anim@@ctrlcentre}{true}}%
+ }%
+}
+
\newboolean{@anim@@loop}
\setboolean{@anim@@loop}{false}%
\define@key{anim@pkg}{loop}[true]{%
diff --git a/macros/latex/contrib/animate/animate.tex b/macros/latex/contrib/animate/animate.tex
index 0a178a58f4..684d9216df 100644
--- a/macros/latex/contrib/animate/animate.tex
+++ b/macros/latex/contrib/animate/animate.tex
@@ -161,6 +161,7 @@ draft
final
controls[=(all|true|on) |
(none|false|off) | {[play][,step][,stop][,speed]}]
+controlsaligned=left[+<indent>] | center | right[+<indent>]
width=<h-size>
height=<v-size> | totalheight=<v-size>
keepaspectratio
@@ -343,6 +344,14 @@ controls=(none | false | off) | {[play][,step][,stop][,speed]}
\end{verbatim}
Inserts control buttons below the animation widget. Visibility of buttons can be fine-tuned through optional keys. By default, if setting `\verb+controls+' alone, all available buttons are shown, while any of `\verb+none+', `\verb+false+' or `\verb+off+' suppresses them altogether. A comma-separated selection from `\verb+play+', `\verb+step+', `\verb+stop+' and `\verb+speed+' enables corresponding pairs or groups of buttons. Such a comma list must be enclosed in braces, i.\,e. \verb+controls={..., ..., ...}+. If all buttons are shown, their meaning is as follows, from left to right: stop \& first frame, step backwards, play backwards, play forwards, step forwards, stop \& last frame, decrease speed, default speed, increase speed. Both `play' buttons are replaced by a large `pause' button while the animation is playing.
\begin{verbatim}
+controlsaligned=left[+<indent>] | center | right[+<indent>]
+\end{verbatim}
+Animation controls are centred below the animation widget by default. With this option one can choose between centred, flush-left or flush-right alignment. The optional \verb+<indent>+ inserts additional horizontal space that pushes the control buttons away from the left or right edge of the animation widget towards the opposite side. \verb+<indent>+ must be a valid \TeX{} dimension. Negative values may be used, as in
+\begin{verbatim}
+ controlsaligned=right+-4em,
+\end{verbatim}
+in which case control buttons protrude beyond the animation's right vertical edge by \verb+4em+.
+\begin{verbatim}
buttonsize=<size>
\end{verbatim}
Changes the control button height to \verb+<size>+, which must be a valid \TeX{} dimension. The default button height is \verb+1.44em+ and thus scales with the current font size.
@@ -913,7 +922,7 @@ A timeline file, written on-the-fly, is used to assemble the curve segments fram
\noindent\begin{animateinline}[
timeline=lorenz.tln,
controls,poster=last,
- begin={\begin{pspicture}(-39,-13)(39,60)},
+ begin={\begin{pspicture}(-36,-13)(36,55)},
end={\end{pspicture}}
]{10}
%coordinate axes
@@ -1317,18 +1326,16 @@ dt dt Tm nT mul { % pop
\end{document}
\end{lstlisting}
-\section{Producing animated SVG}
-Thanks to Martin Gieseking's `\verb+dvisvgm+' utility~\cite{dvisvgm} that ships with all major \TeX{} distributions, package `animate' can produce self-contained animated SVG, with all the bits and pieces already included that are necessary to run in modern Web browsers as standalone files or as embedded objects within a Web page made of HTML. Animations have the same look and usability, including optional control buttons, as if they were embedded in a PDF document. Animated SVG even work on mobile devices.
+\section{Animated SVG}
+Thanks to Martin Gieseking's \verb+dvisvgm+ utility~\cite{dvisvgm} that ships with all major \TeX{} distributions, package `animate' can produce self-contained animated SVG, with all the bits and pieces already included that are necessary to run in modern Web browsers as standalone files or as embedded objects within a Web page made of HTML. Animations have the same look and usability, including optional control buttons, as if they were embedded in a PDF document. Animated SVG even work on mobile devices.
-As `\verb+dvisvgm+' is linked against the Ghostscript library, it can parse and convert embedded PostScript to inline SVG code. It is therefore compatible with the popular TikZ and PSTricks \LaTeX{} packages.
+As \verb+dvisvgm+ is linked against the Ghostscript library, it can parse and convert embedded PostScript to inline SVG code. It is therefore compatible with the popular TikZ and PSTricks \LaTeX{} packages.
-SVG is a single-page graphics format. Therefore, it is most useful to first produce DVI with a single animation per file or page. Then, `\verb+dvisvgm+' converts every page of the DVI input to a standalone animated SVG file. Use the `article' document class and pass `\verb+dvisvgm+' as a global option. In this way, it gets conveyed to `animate' and other packages to be loaded, such as `graphicx' or TikZ. Note that the `standalone' document class is not required; `\verb+dvisvgm+' already computes the tightly enclosing bounding box around the page content by default. If `standalone' is still to be used, `\verb+preview+' must be added as a global document class option.
+SVG is a single-page graphics format. Therefore, it is recommended to produce documents with a single animation per file or page. Thereafter, \verb+dvisvgm+ converts every page of the DVI input to a standalone animated SVG file. You may want to use the `standalone' document class for creating standalone SVG animations. Pass `\verb+dvisvgm+' as a global document class option. In this way, it gets conveyed to `animate' and other packages to be loaded, such as `graphicx' or TikZ.
The following code may serve as a template for generating standalone animated SVG:
\begin{lstlisting}
-\documentclass[dvisvgm]{article}
-
-\pagestyle{empty} % suppress page number
+\documentclass[dvisvgm]{standalone}
\usepackage{animate}
\usepackage{graphicx}
@@ -1340,7 +1347,6 @@ The following code may serve as a template for generating standalone animated SV
%\usepackage{tikz}
\begin{document}
-\begin{center}
%
% \animategraphics{..}{...}{...}{...}
@@ -1350,33 +1356,34 @@ The following code may serve as a template for generating standalone animated SV
% \begin{animateinline}{..} ... \end{animateinline}
%
-\end{center}
\end{document}
\end{lstlisting}
-Note that when animating external graphics with \verb+\animategraphics+, only PDF and PostScript (EPS, PS, MPS) files are converted to inline SVG code; files in other formats (SVG, PNG, JPEG) remain external and must be bundled with the final SVG output. Also note that PostScript files must have all required fonts embedded. This is not always the case for \MP-generated PostScript. Here, embedding of fonts is ensured by putting `\verb+prologues := 3;+' into the header of the \MP{} input. Unfortunately, animating PDF and PostScript files with \verb+\animategraphics+ is limited to vector graphics. If such files contain bitmapped content they must be converted to PNG (or JPEG, if photographs). Of course, these files remain external to the final animated SVG.
+Note that when animating external graphics with \verb+\animategraphics+, only PDF and PostScript (EPS, PS, MPS) files are converted to inline SVG code; files in other formats (SVG, PNG, JPEG) remain external and must be bundled with the final SVG output. Thus, for obtaining self-contained SVG, it is recommended to convert PNG, JPEG and SVG files to PDF or PostScript first. Also note that PostScript files must have all required fonts embedded. This is not always the case for \MP-generated PostScript. Here, embedding of fonts is ensured by putting `\verb+prologues := 3;+' into the header of the \MP{} input.
Use one of
\begin{verbatim}
latex
platex
-lualatex --output-format=dvi
+dvilualatex
xelatex -no-pdf
\end{verbatim}
to produce DVI or XDV output from the \LaTeX{} source. After this, SVG is obtained by running
\begin{verbatim}
-dvisvgm --font-format=woff --exact --zoom=-1
+dvisvgm --font-format=woff --exact --zoom=-1 --page=1,- --optimize ...
\end{verbatim}
on the intermediate DVI or XDV file.
-Option `\verb+--font-format=woff+' (or `\verb+--font-format=woff2+') prompts `\verb+dvisvgm+' to embed document fonts in a format that is understood by Web browsers. It ensures that typeset text looks as in normal PDF output.
+Option `\verb+--font-format=woff+' (or `\verb+--font-format=woff2+') prompts \verb+dvisvgm+ to embed document fonts in a format that is understood by Web browsers. It ensures that typeset text looks as in normal PDF output.
-Option `\verb+--exact+' tells `\verb+dvisvgm+' to calculate exact bounding boxes around font glyphs. This avoids clipping of glyphs in the SVG output, as glyphs usually tend to be slightly bigger than their boxes defined in the font files.
+Option `\verb+--exact+' tells \verb+dvisvgm+ to calculate exact bounding boxes around font glyphs. This avoids clipping of glyphs in the SVG output, as glyphs usually tend to be slightly bigger than their boxes defined in the font files.
The purpose of `\verb+--zoom=-1+' is to produce responsive SVG. If embedded in a Web page, this kind of SVG will automatically scale to fill up the available space of its surrounding container, usually an \verb+<object>+ tag (see below). If viewed standalone in a Web browser, a responsive SVG fills up the complete browser tab.
-By default, `\verb+dvisvgm+' processes only the very first page of the input file. To convert multipage DVI/XDV with several animations, add option `\verb+-p1,-+'.
+By default, \verb+dvisvgm+ processes only the very first page of the input file. To convert multipage DVI/XDV with several animations, add option `\verb+--page=1,-+'.
+
+With option `\verb+--optimize+', \verb+dvisvgm+ applies several optimizations to reduce the output file size.
-As SVG derives from XML it is not known to be particularly economical in terms of file size. Compressed SVG, with file extension `\verb+svgz+', shortens download times and is supported by most Web browsers. It can be generated by adding option `\verb+-z+'. Also, option `\verb+--precision=1+' may be used to reduce the SVG file size. It limits the precision of floating point numbers, such as coordinates, to one decimal figure.
+As SVG derives from XML it is not known to be particularly economical in terms of file size. Compressed SVG, with file extension `\verb+svgz+', shortens download times and is supported by most Web browsers. It can be generated by adding option `\verb+-z+'. Also, option `\verb+--precision=1+' may be used to reduce the SVG file size. It limits the precision of floating point numbers, such as coordinates, to one decimal figure. Sometimes, animations may behave stangely after applying this option. Then, of course, it should be omitted.
The recommended way to include animated SVG into HTML is to use the \verb+<object>+ tag. The \verb+<img>+ tag does not work here, as it ignores the embedded JavaScript. However, it may still be used as fallback. Also, it allows for search engine indexing, if desired:
\begin{lstlisting}
@@ -1395,10 +1402,6 @@ In \TeX4ht documents, the whole \verb+<object>...</object>+ tag can be inserted
\item Animated SVG is best viewed in Web browsers that are based on the Blink rendering engine. The most prominent representatives are Chrome, its open-source base Chromium and Opera. Unfortunately, Firefox is very slow.
-% \item Animations may run very slowly if viewed in the Acrobat Reader web-browser plugin. Instead, open the PDF locally in the Reader application for best results.
-
-% \item The Acrobat Reader setting `Use page cache' (menu `Edit' $\rightarrow$ `Preferences' $\rightarrow$ `Startup') should be \emph{dis}abled for version 7, while remaining \emph{en}abled beginning with version 8 (menu `Edit' $\rightarrow$ `Preferences' $\rightarrow$ `Page Display' $\rightarrow$ `Rendering').
-
\item The \verb+dvips+ option `\verb+-Ppdf+' should be avoided entirely or followed by something like `\verb+-D 1200+' on the command line in order to set a sensible DVI resolution. This does \emph{not} degrade the output quality! The configuration file `config.pdf' loaded by option `\verb+-Ppdf+' specifies an excessively high DVI resolution that will be passed on to the final PDF. Eventually, Acrobat Reader gets confused and will not display the frames within the animation widget.
\item Animations do not work if the PDF was produced with Ghostscript versions older than 9.15.
@@ -1427,7 +1430,7 @@ In \TeX4ht documents, the whole \verb+<object>...</object>+ tag can be inserted
into the editor window that opens, save the file and quit the editor.
\item\label{item:laststep} To rebuild the format, enter\\
{\tt initexmf -{}-dump=latex}
- \item Repeat steps \ref{item:firststep}--\ref{item:laststep} with config files `{\tt pdflatex}' and `{\tt xelatex}'
+ \item Repeat steps \ref{item:firststep}--\ref{item:laststep} with config files {\tt pdflatex} and {\tt xelatex}
\end{enumerate}
\TeX\ Live:
@@ -1450,7 +1453,7 @@ In \TeX4ht documents, the whole \verb+<object>...</object>+ tag can be inserted
\end{itemize}
\section{Acknowledgements}
-I would like to thank François Lafont who discovered quite a few bugs and made many suggestions that helped to improve the functionality of the package. Many thanks to Jin-Hwan Cho, the developer of `\verb+dvipdfmx+', for contributing the `\verb+dvipdfmx+' specific code, and to Walter Scott for proof-reading the documentation.
+I would like to thank François Lafont who discovered quite a few bugs and made many suggestions that helped to improve the functionality of the package. Many thanks to Jin-Hwan Cho, the developer of \verb+dvipdfmx+, for contributing the \verb+dvipdfmx+ specific code, and to Walter Scott for proof-reading the documentation.
\begin{thebibliography}{8}
\bibitem{chupin} Chupin, M.: \emph{Syracuse MetaPost/Animations.} URL: \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\url{http://melusine.eu.org/}} \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\url{syracuse/metapost/animations/chupin/?idsec=scara}}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/Changes b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/Changes
index 8385d17ac3..0cb055b0f6 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/Changes
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/Changes
@@ -1,4 +1,5 @@
+0.21 2020-03-24 - do not use a biber.conf file, definition now in *.bbx (hv)
0.2 2020-03-17 - updated all macros for using with biblatex 3.7 (hv)
0.1g 2013-02-28 - Aktualisierung der readme wg. Einstellung der weiteren Entwicklung
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/README b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/README
index c7ae626e1b..0b4909c10d 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/README
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/README
@@ -1,6 +1,5 @@
-biblatex-juradiss 2020/03/17 v0.2
Copyright (c) 2012 Tobias Schwan <tobias.schwan(aat)gmx.de>
- 2020 Hebrert Voß hvoss@tug.org
+ 2020 Herbert Voß hvoss@tug.org
****************************************************************
This is biblatex-juradiss,
@@ -16,15 +15,8 @@ in my opinion, this package will only be interesting for people
working on German law. Thats why the comments, explaining the
style are in german.
-I created this package while writing my PhD. After I have
-finished it, I am not sure if I will work on it further. So if
-you are interested in developing it further, or translate the
-(coming) documentation in other languages, do not hesitate to
-contact me.
-
This material is subject to the LaTeX Project Public License.
-See
-http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
+See https://latex-project.org/lppl/
for the details of that license.
The former Maintainer of this work was Tobias Schwan.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/doc/biblatex-juradiss.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/doc/biblatex-juradiss.pdf
index 502f27eb70..78e240bd20 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/doc/biblatex-juradiss.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/doc/biblatex-juradiss.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/doc/biblatex-juradiss.tex b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/doc/biblatex-juradiss.tex
index 8807f75128..65aafc97f8 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/doc/biblatex-juradiss.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/doc/biblatex-juradiss.tex
@@ -249,7 +249,7 @@
%%%%%
\title{biblatex-juradiss}
-\subtitle{Ver. 0.2}
+\subtitle{Ver. 0.21}
\author{Tobias Schwan \and Herbert Voß}
\maketitle
@@ -327,8 +327,6 @@ wobei
bei \MiKTeX über das Menü oder allgemein durch Ausführen von \texttt{texhash}
aktualisieren.
-Die \texttt{biber.conf}-Datei legt man einfach in den gleichen Ordner, wie die \TeX-Datei.
-
\section{Dokumentenklasse}
@@ -741,28 +739,27 @@ Möglichkeit in der Literaturdatenbank eigene Feldnamen zu verwenden, die dann b
daher mit user[a-f], in der Literaturdatenbank können aber die aussagekräftigen Namen verwendet
werden.
-Zudem muss man die Datei \texttt{biber.conf} in dem Ordner anlegen, in dem die \texttt{.tex}-Datei
-liegt. Diese hat dann folgenden Inhalt:
+Die Festlegung erfolgt durch:
\begin{lstlisting}
-<map>
- <bibtex>
- <globalfield>
- decision usera
- sign userb
- officialvolume userc
- officialpages userd
- journalyear usere
- decisionname userf
- </globalfield>
- </bibtex>
-</map>
+ \maps[datatype=bibtex]{%
+ \map{
+ \step[fieldsource=decision, fieldtarget=usera]
+ \step[fieldsource=sign, fieldtarget=userb]
+ \step[fieldsource=officialvolume, fieldtarget=userc]
+ \step[fieldsource=officialpages, fieldtarget=userd]
+ \step[fieldsource=journalyear, fieldtarget=usere]
+ \step[fieldsource=decisionname, fieldtarget=userf]
+ }
+ }
\end{lstlisting}
Ausgabe als Fußnote\footcite[3]{bverfg:jubilaeum}, im laufenden Text als \cite[3]{bverfg:jubilaeum}
oder am Ende eines Satzes.~\parencite[3]{bverfg:jubilaeum}
-Einen Eintrag für das Literaturverzeichnis kann ich derzeit noch nicht präsentieren. Bisher habe ich nicht vor, ein eigenes Rechtsprechungsverzeichnis in meiner Promotion anzugeben. Daher habe ich bisher auch noch keine Energie in die Erstellung eines solchen Verzeichnisses investiert.
+Einen Eintrag für das Literaturverzeichnis kann ich derzeit noch nicht präsentieren. Bisher habe ich nicht vor,
+ein eigenes Rechtsprechungsverzeichnis in meiner Promotion anzugeben. Daher habe ich bisher auch noch keine
+Energie in die Erstellung eines solchen Verzeichnisses investiert.
\label{nichtinslitverz}
Damit die Rechtsprechungszitate nicht doch in komischer Form im Literaturverzeichnis auftauchen
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biber.conf b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biber.conf
deleted file mode 100644
index 0d8ddc7581..0000000000
--- a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biber.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-<map>
- <bibtex>
- <globalfield>
- decision usera
- sign userb
- officialvolume userc
- officialpages userd
- journalyear usere
- decisionname userf
- </globalfield>
- </bibtex>
-</map>
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biblatex-juradiss.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biblatex-juradiss.bbx
index d5c30968c1..9a87cf98fa 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biblatex-juradiss.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biblatex-juradiss.bbx
@@ -1,6 +1,6 @@
% biblatex-juradiss.bbx, Tobias Schwan 2012
% Änderungen von Herbert Voß -- 2020-03-17
-\ProvidesFile{biblatex-juradiss.bbx}[2020/03/17 v0.2 biblatex bibliography style]
+\ProvidesFile{biblatex-juradiss.bbx}[2020/03/24 v0.21 biblatex bibliography style]
% Release Notes can be found in the README
\RequireBibliographyStyle{authortitle-dw}%
@@ -584,6 +584,18 @@
% Statt "besucht am" soll "abgerufen am" vor dem Datum des letzten Abrufs stehen
\DefineBibliographyStrings{german}{urlseen = {abgerufen am}}%
+\DeclareStyleSourcemap{%
+ \maps[datatype=bibtex]{%
+ \map{
+ \step[fieldsource=decision, fieldtarget=usera]
+ \step[fieldsource=sign, fieldtarget=userb]
+ \step[fieldsource=officialvolume, fieldtarget=userc]
+ \step[fieldsource=officialpages, fieldtarget=userd]
+ \step[fieldsource=journalyear, fieldtarget=usere]
+ \step[fieldsource=decisionname, fieldtarget=userf]
+ }
+ }
+}
\endinput
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biblatex-juradiss.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biblatex-juradiss.cbx
index e3ec331cce..737b49b001 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biblatex-juradiss.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-juradiss/latex/biblatex-juradiss.cbx
@@ -1,7 +1,7 @@
% biblatex-juradiss.cbx, Tobias Schwan 2012
-% Änderungen von Herbert Voß -- 2020-03-17
+% Änderungen von Herbert Voß -- 2020-03-24
-\ProvidesFile{biblatex-juradiss.cbx}[2020/03/17 v0.2 biblatex citation style]
+\ProvidesFile{biblatex-juradiss.cbx}[2020/03/24 v0.21 biblatex citation style]
% Release Notes can be found in the README.txt
\RequireCitationStyle{authortitle-dw}
diff --git a/macros/latex/contrib/graphics-def/CONTRIBUTING.md b/macros/latex/contrib/graphics-def/CONTRIBUTING.md
new file mode 100644
index 0000000000..1d90f1515c
--- /dev/null
+++ b/macros/latex/contrib/graphics-def/CONTRIBUTING.md
@@ -0,0 +1,96 @@
+Thanks for considering contributing to LaTeX2e: feedback, fixes and
+ideas are all useful. Here, we ([The LaTeX3
+Project](https://www.latex-project.org)) have collected together a few
+pointers to help things along.
+
+## Bugs
+
+There are thousands of packages and tools and the LaTeX Project Team
+only supports a few dozen core packages beside the kernel code. We
+also don't maintain any tools or the TeX-engines themselves! So if a
+bug is due to code from a contributed third-party package then the LaTeX
+Project Team is not able to help or fix the code as that is maintained
+by others. As such, we ask you follow the procedure below as it will
+help to weed cases where we cannot help.
+
+To report a bug it is important to provide a short test file that
+exhibits the issue. The [`latexbug`](https://github.com/latex3/latexbug)
+package should be loaded at the very top of any such test file used to
+report a bug in LaTeX as follows:
+
+```latex
+\RequirePackage{latexbug} % <- first line
+\documentclass{article} % or some other class
+... % code showing the problem
+```
+
+If the `latexbug` package is not part of your distribution you can
+download it
+[GitHub](https://raw.githubusercontent.com/latex3/latexbug/master/latexbug.sty).
+In that case simply place it in the directory next to your test file (or
+place it into your local `texmf` tree so that it will be always found –
+how to do that depends on the installation you use).
+
+If `latexbug` complains about third-party packages you should first
+remove those from your test file. If that is not possible, then the
+bug is most likely in one of these packages and you should report the
+problem to the maintainers of the package instead of opening an issue
+here. However, if you think the bug is in core LaTeX (as maintained
+by the LaTeX Team) even though you need the third-party packages to
+demonstrate the problem, then please continue and send the bug report
+to us but explain this explicitly in your description of the bug.
+
+
+## Font related issues
+
+Problems that are clearly due to using a specific font setup or a
+specific font are normally out of scope as we do not maintain fonts
+for LaTeX and can't help with problems in that area. Especially with
+XeTeX and LuaTeX people may experience issues due to font usage that
+are either due to the font itself or to different versions or
+treatment on different platforms. So please use Computer Modern or
+Latin Modern fonts in the test files.
+
+
+
+## Layout and interface deficiencies
+
+Upfront we should probably stress that 'deficiencies' in the design of
+of the standard document classes (`article`, `report` and `book`) as
+well a questionable but long established interface behavior of commands
+is something that we will normally not change, even if we can all agree
+that a different behavior or a different layout would have been a better
+choice. You are, of course, welcome to report issues in these areas,
+using the procedure explained below, but in all likelihood such reports
+will be marked as 'won't fix'.
+
+The reason is is that the kernel interfaces and the document classes
+have been used for many years in essentially all documents (even
+documents using different classes often build them upon the standard
+classes in the background) and thus such changes would break or as a
+minimum noticeably change nearly all existing documents. See also the
+file [LaTeX2e News Issue
+07](https://www.latex-project.org/news/latex2e-news/ltnews07.pdf) with
+regard to this policy.
+
+## Code contributions
+
+If you want to discuss a possible contribution before (or instead of)
+making a pull request, drop a line to
+[the team](mailto:latex-team@latex-project.org).
+
+The stability of LaTeX is very important and this means that change in
+the kernel is necessarily very conservative. It also means that a lot of
+discussion happens before any changes are made. If you do decide to post
+a pull request, please bear this in mind: we do appreciate ideas, but
+cannot always integrate them into the kernel.
+
+If you are submitting a pull request, notice that
+
+- The first line of commit messages should be a short summary (up to about
+ 50 chars); leave a blank line then give more detail if required
+- We use Travis-CI for (light) testing so add `[ci skip]` to documentation-only
+ commit messages
+- We favour a single linear history so will rebase accepted pull requests
+- Where a commit fixes or closes an issue, please include this information
+ in the first line of the commit message [`(fixes #X)` or similar]
diff --git a/macros/latex/contrib/graphics-def/README.md b/macros/latex/contrib/graphics-def/README.md
index 5473789138..41849da993 100644
--- a/macros/latex/contrib/graphics-def/README.md
+++ b/macros/latex/contrib/graphics-def/README.md
@@ -1,7 +1,7 @@
LaTeX support for color and graphics
====================================
-Release 2018-01-08
+Release 2020-03-24
This bundle contains the 'engine-dependent' part of support for
color and graphics in LaTeX2e (the code here will also function
diff --git a/macros/latex/contrib/graphics-def/dvisvgm.def b/macros/latex/contrib/graphics-def/dvisvgm.def
index e94ec8dc09..46a3c3859c 100644
--- a/macros/latex/contrib/graphics-def/dvisvgm.def
+++ b/macros/latex/contrib/graphics-def/dvisvgm.def
@@ -1,5 +1,5 @@
% Copyright 2015 by Till Tantau
-% Copyright 2016 by Till Tantau and LaTeX3 Project
+% Copyright 2016 2018 by Till Tantau and LaTeX3 Project
%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -15,9 +15,9 @@
%%
%% https://github.com/latex3/graphics-def/issues
%
-\ProvidesFile{dvisvgm.def}[2017/06/20 v1.0b dvisvgm graphics driver for latex]
-\def\GPT@space{ }
+\ProvidesFile{dvisvgm.def}[2020/03/22 v1.2 dvisvgm graphics driver for latex]
% The following is copied from dvips.def:
+\def\GPT@space{ }
\def\c@lor@arg#1{%
\dimen@#1\p@
\ifdim\dimen@<\z@\dimen@\maxdimen\fi
@@ -72,11 +72,85 @@
\def\reset@color{\special{color pop}}
\def\set@page@color{\special{bgcolor \current@color}}
\def\define@color@named#1#2{\expandafter\let\csname col@#1\endcsname\@nnil}
-\def\Grot@start{\special{dvisvgm:raw <g transform="translate({?x},{?y})scale(1,-1)rotate(\Grot@angle)scale(-1,1)translate({?x},{?y})scale(-1)">}}
-\def\Grot@end{\special{dvisvgm:raw </g>}}
-\def\Gscale@start{\special{dvisvgm:raw <g transform="translate({?x},{?y})scale(\Gscale@x,\Gscale@y)scale(-1)translate({?x},{?y})scale(-1)">}}
-\def\Gscale@end{\special{dvisvgm:raw </g>}}
-\def\Gin@extensions{.png,.jpg,.jpeg,.svg}
+\def\Grot@start{%
+ \special{ps: gsave currentpoint currentpoint translate \Grot@angle\GPT@space neg rotate neg exch neg exch translate}%
+ \special{dvisvgm:bbox \strip@pt\wd\z@ pt \strip@pt\ht\z@ pt \strip@pt\dp\z@ pt transform}%
+ \special{ps: grestore}%
+ \special{dvisvgm:raw <g transform="translate({?x},{?y})scale(1,-1)rotate(\Grot@angle)scale(-1,1)translate({?x},{?y})scale(-1)">}%
+ \special{dvisvgm:bbox lock}%
+}
+\def\Grot@end{\special{dvisvgm:bbox unlock}\special{dvisvgm:raw </g>}}
+\def\Gscale@start{%
+ \special{ps: gsave currentpoint currentpoint translate \Gscale@x\GPT@space \Gscale@y\GPT@space scale neg exch neg exch translate}%
+ \special{dvisvgm:bbox \strip@pt\wd\z@ pt \strip@pt\ht\z@ pt \strip@pt\dp\z@ pt transform}%
+ \special{ps: grestore}%
+ \special{dvisvgm:raw <g transform="translate({?x},{?y})scale(\Gscale@x,\Gscale@y)scale(-1)translate({?x},{?y})scale(-1)">}%
+ \special{dvisvgm:bbox lock}%
+}
+\let\Gscale@end\Grot@end
+\def\Gin@extensions{.svg,.eps,.png,.jpg,.jpeg}
+\def\Ginclude@pdf#1{\Ginclude@psorpdf{#1}{pdffile}}
+\def\Ginclude@eps#1{\let\Gin@page\@empty\Ginclude@psorpdf{#1}{PSfile}}
+\def\Ginclude@psorpdf#1#2{%
+ \message{<#1>}%
+ \bgroup
+ \def\@tempa{!}%
+ \dimen@\Gin@req@width
+ \dimen@ii.1bp%
+ \divide\dimen@\dimen@ii
+ \@tempdima\Gin@req@height
+ \divide\@tempdima\dimen@ii
+ \special{#2="#1"\GPT@space
+ \ifx\Gin@page\@empty\else page=\Gin@page\GPT@space\fi
+ llx=\Gin@llx\GPT@space
+ lly=\Gin@lly\GPT@space
+ urx=\Gin@urx\GPT@space
+ ury=\Gin@ury\GPT@space
+ \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\GPT@space\fi
+ \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\GPT@space\fi
+ \ifGin@clip clip\fi
+ }%
+ \egroup}
+\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
+\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+\@namedef{Gin@rule@.mps}#1{{eps}{.mps}{#1}}
+\@namedef{Gin@rule@.pdf}#1{{pdf}{.xbb}{#1}}
+% BoundingBox determination (from dvipdfmx.def)
+\def\Gread@pdf#1{%
+ \Gread@generic{#1}\Gread@extractbb@aux%
+}%
+\def\Gread@extractbb@aux#1{%
+ \ifeof\@inputcheck%
+ \immediate\openin\@inputcheck=%
+ "|extractbb %
+ \ifx\Gin@page\@empty\else -p \Gin@page\GPT@space\fi
+ \ifx\Gin@pagebox\@empty\else -B \Gin@pagebox\GPT@space\fi
+ -O \Gin@base\Gin@ext"%
+ \fi%
+ \Gread@true%
+ \let\@tempb\Gread@false%
+ \ifeof\@inputcheck%
+ \@latex@error%
+ {Cannot run pipe command. Try --shell-escape\MessageBreak%
+ (--enable-pipes in MikTeX) option}%
+ {Alternatively, execute\MessageBreak\space\space
+ extractbb
+ \ifx\Gin@page\@empty\else -p \Gin@page\GPT@space\fi
+ \ifx\Gin@pagebox\@empty\else -B \Gin@pagebox\GPT@space\fi
+ \Gin@base\Gin@ext\MessageBreak in a terminal.}%
+ \else%
+ \loop%
+ \read\@inputcheck to\@tempa%
+ \ifeof\@inputcheck%
+ \Gread@false%
+ \else%
+ \expandafter\Gread@find@bb\@tempa:.\\%
+ \fi%
+ \ifGread@%
+ \repeat%
+ \immediate\closein\@inputcheck%
+ \fi%
+}
\def\Ginclude@bitmap#1{%
\dimen@\Gin@urx pt%
\advance\dimen@ by-\Gin@llx pt%
@@ -87,17 +161,17 @@
\dimen@\Gin@svg@real@height@bp pt%
\advance\dimen@ by-\Gin@ury pt%
\edef\Gin@svg@view@base{\strip@pt\dimen@}%
-% \kern-\Gin@llx bp%
- \raise\Gin@req@height\hbox{%
+ \Gin@req@width0.99626\Gin@req@width%
+ \Gin@req@height0.99626\Gin@req@height%
+ \raise\strip@pt\Gin@req@height bp\hbox{%
\special{dvisvgm: raw
<g transform="translate({?x},{?y})">
<svg overflow="\ifGin@clip hidden\else visible\fi" width="\strip@pt\Gin@req@width" height="\strip@pt\Gin@req@height"
viewBox="\Gin@llx\GPT@space\Gin@svg@view@base\GPT@space\Gin@svg@view@width\GPT@space\Gin@svg@view@height">
- <image width="\Gin@svg@real@width@bp" height="\Gin@svg@real@height@bp"
+ <image width="\Gin@svg@real@width@bp" height="\Gin@svg@real@height@bp"
xlink:href="#1"/>
</svg>
</g>}%
-% \special{dvisvgm: img \strip@pt\Gin@req@width\GPT@space \strip@pt\Gin@req@height\GPT@space #1}
}%
}
@@ -139,32 +213,33 @@
\fi
\edef\Gin@setter{\def\noexpand\Gin@urx{\Gin@urx}\def\noexpand\Gin@ury{\Gin@ury}}%
\expandafter\endgroup\Gin@setter%
- \def\Gin@llx{0}%
+ \def\Gin@llx{0}%
\def\Gin@lly{0}%
\edef\Gin@svg@real@width@bp{\Gin@urx}%
- \edef\Gin@svg@real@height@bp{\Gin@ury}%
+ \edef\Gin@svg@real@height@bp{\Gin@ury}%
}
\def\Gin@partext{\par}
\def\Gread@svg@height#1height={\@ifnextchar\relax{}{\@ifnextchar'\Gread@svg@height@apo\Gread@svg@height@double}}
-\def\Gread@svg@height@apo'#1'#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\dimen@0.99626\dimen@\edef\Gin@ury{\strip@pt\dimen@}}
-\def\Gread@svg@height@double"#1"#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\dimen@0.99626\dimen@\edef\Gin@ury{\strip@pt\dimen@}}
+\def\Gread@svg@height@apo'#1'#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\edef\Gin@ury{\strip@pt\dimen@}}
+\def\Gread@svg@height@double"#1"#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\edef\Gin@ury{\strip@pt\dimen@}}
\def\Gread@svg@width#1width={\@ifnextchar\relax{}{\@ifnextchar'\Gread@svg@width@apo\Gread@svg@width@double}}
-\def\Gread@svg@width@apo'#1'#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\dimen@0.99626\dimen@\edef\Gin@urx{\strip@pt\dimen@}}
-\def\Gread@svg@width@double"#1"#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\dimen@0.99626\dimen@\edef\Gin@urx{\strip@pt\dimen@}}
+\def\Gread@svg@width@apo'#1'#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\edef\Gin@urx{\strip@pt\dimen@}}
+\def\Gread@svg@width@double"#1"#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\edef\Gin@urx{\strip@pt\dimen@}}
\def\Gin@gobble@till@relax#1\relax{}
+\edef\Gin@hash@tag{\string#}
\@namedef{Gin@rule@.jpg}#1{{bitmap}{.xbb}{#1}}
\@namedef{Gin@rule@.jpeg}#1{{bitmap}{.xbb}{#1}}
\@namedef{Gin@rule@.png}#1{{bitmap}{.xbb}{#1}}
-% Replace
+% Replace
\def\Gread@bitmap#1{%
- \Gread@eps{#1}%
- \dimen@\Gin@urx bp%
- \advance\dimen@ by-\Gin@llx bp%
+ \Gread@generic{#1}\Gread@extractbb@aux%
+ \dimen@\Gin@urx pt%
+ \advance\dimen@ by-\Gin@llx pt%
\edef\Gin@svg@real@width@bp{\strip@pt\dimen@}%
- \dimen@\Gin@ury bp%
- \advance\dimen@ by-\Gin@lly bp%
+ \dimen@\Gin@ury pt%
+ \advance\dimen@ by-\Gin@lly pt%
\edef\Gin@svg@real@height@bp{\strip@pt\dimen@}%
}
diff --git a/macros/latex/contrib/graphics-def/luatex.def b/macros/latex/contrib/graphics-def/luatex.def
index c8287ee95f..84ed1109be 100644
--- a/macros/latex/contrib/graphics-def/luatex.def
+++ b/macros/latex/contrib/graphics-def/luatex.def
@@ -128,14 +128,17 @@
\AtBeginDocument{%
\def\KV@Gin@bbllx{%
\PackageError{luatex.def}{%
- Options `bblly', `bblly', `bburx' and `bbury'\MessageBreak
- are not supported by luatex driver:\MessageBreak
+ Options `bblly', `bblly', `bburx', `bbury',\MessageBreak
+ `natheight' and `natwidth' are not\MessageBreak
+ supported by luatex driver:\MessageBreak
use `viewport' instead%
}\@ehc
}%
\let\KV@Gin@bblly\KV@Gin@bbllx
\let\KV@Gin@bburx\KV@Gin@bbllx
\let\KV@Gin@bbury\KV@Gin@bbllx
+ \let\KV@Gin@natwidth\KV@Gin@bbllx
+ \let\KV@Gin@natheight\KV@Gin@bbllx
\def\KV@Gin@bb{%
\PackageInfo{luatex.def}%
{Option `bb' equivalent to `viewport' for luatex driver}%
@@ -575,18 +578,18 @@
% b) and shell escape is enabled (possibly restricted),
% c) and \DoNotLoadEpstopdf either does not exist or is not \relax,
% d) and neither pst-pdf nor pdftricks is loaded (by \begin{document}).
-%
+%
% In other words, by default .eps files will be automatically
% converted to .pdf files when outputting pdf. This can be wrong!
% If the .pdf is the source, rather than the .eps, you should put
% \newcommand{\DoNotLoadEpstopdf}{}
% before even the \documentclass line of your document.
-%
+%
% More information about the epstopdf run will be in the .log file;
% see http://ctan.org/pkg/epstopdf-pkg for more info about the
% epstopdf package itself. In turn, it calls the epstopdf script
% (http://ctan.org/pkg/epstopdf).
-%
+%
% For the first discussion and background on this, see the thread on latex-l:
% http://thread.gmane.org/gmane.comp.tex.latex.latex3/1465
%
diff --git a/macros/latex/contrib/graphics-def/pdftex.def b/macros/latex/contrib/graphics-def/pdftex.def
index 3d064430f0..0c9d2da548 100644
--- a/macros/latex/contrib/graphics-def/pdftex.def
+++ b/macros/latex/contrib/graphics-def/pdftex.def
@@ -142,14 +142,17 @@ E \else
\AtBeginDocument{%
\def\KV@Gin@bbllx{%
\PackageError{pdftex.def}{%
- Options `bblly', `bblly', `bburx' and `bbury'\MessageBreak
- are not supported by pdftex driver:\MessageBreak
+ Options `bblly', `bblly', `bburx', `bbury',\MessageBreak
+ `natheight' and `natwidth' are not\MessageBreak
+ supported by pdftex driver:\MessageBreak
use `viewport' instead%
}\@ehc
}%
\let\KV@Gin@bblly\KV@Gin@bbllx
\let\KV@Gin@bburx\KV@Gin@bbllx
\let\KV@Gin@bbury\KV@Gin@bbllx
+ \let\KV@Gin@natwidth\KV@Gin@bbllx
+ \let\KV@Gin@natheight\KV@Gin@bbllx
\def\KV@Gin@bb{%
\PackageInfo{pdftex.def}%
{Option `bb' equivalent to `viewport' with pdftex driver}%
@@ -585,18 +588,18 @@ E \else
% b) and shell escape (\write18) is enabled (possibly restricted),
% c) and \DoNotLoadEpstopdf either does not exist or is not \relax,
% d) and neither pst-pdf nor pdftricks is loaded (by \begin{document}).
-%
+%
% In other words, by default .eps files will be automatically
% converted to .pdf files when outputting pdf. This can be wrong!
% If the .pdf is the source, rather than the .eps, you should put
% \newcommand{\DoNotLoadEpstopdf}{}
% before even the \documentclass line of your document.
-%
+%
% More information about the epstopdf run will be in the .log file;
% see http://ctan.org/pkg/epstopdf-pkg for more info about the
% epstopdf package itself. In turn, it calls the epstopdf script
% (http://ctan.org/pkg/epstopdf).
-%
+%
% For the first discussion and background on this, see the thread on latex-l:
% http://thread.gmane.org/gmane.comp.tex.latex.latex3/1465
%
diff --git a/macros/latex/contrib/mathtools/README b/macros/latex/contrib/mathtools/README
deleted file mode 100644
index 3528dc78a8..0000000000
--- a/macros/latex/contrib/mathtools/README
+++ /dev/null
@@ -1,84 +0,0 @@
-The mathtools bundle
-=============
-Morten Hoegholm (c) 2002-2011
-Lars Madsen (c) 2012-
-email: daleif@math.au.dk
-License: LaTeX Project Public License
-
-The files in the mathtools bundle are:
- mhsetup.dtx
- mathtools.dtx
- empheq.dtx
-and derived files. The derived files of each .dtx-file are listed
-at the top of the respective .dtx-file.
-
-
-INSTALLATION
-============
-Running TeX on each dtx file extracts the runtime files. See the dtx
-files for details.
-
-DESCRIPTION
-===========
-
-
-mathtools
-=========
-
-The mathtools package provides many useful tools for mathematical
-typesetting. It is based on amsmath and fixes various deficiencies
-of amsmath and standard LaTeX. It provides:
- -- Extensible symbols, such as brackets, arrows, harpoons, etc.
- -- Various symbols such as \coloneqq (:=).
- -- Easy creation of new tag forms.
- -- Showing only the referenced equations.
- -- Extensible arrows, harpoons and hookarrows.
- -- Starred versions of the amsmath matrix environments for
- specifying the column alignment.
- -- More building blocks: multlined, cases-like environments, new
- gathered environments.
- -- Math versions of \makebox, \llap, \rlap etc.
- -- Cramped math styles.
- -- Macro generators.
- -- and more...
-
-mathtools requires mhsetup.
-
-empheq
-======
-
-The empheq package is a visual markup extension designed to
-function on top of amsmath. It features:
- -- Boxing multi line math displays while leaving equation
- numbers untouched at the margin. Any kind of box will do.
- -- Making the ntheorem package place end-of-theorem markers
- perfectly.
- -- Placing arbitrary material on either side of math displays.
- This includes delimiters that automatically scale to the
- correct size.
-
-empheq requires mathtools.
-
-
-mhsetup
-=======
-
-The mhsetup package defines various programming tools needed by
-both empheq and mathtools. The syntax is the same as for expl3,
-but there is no code overlap (anymore as of May 2017).
-In the future, most of these tools will probably be an integral part of LaTeX3 (they were).
-
-
-BUG REPORTS
-===========
-
-The bundle is maintained by:
-
- Morten H\o gholm
- Lars Madsen <daleif@math.au.dk>
-
-
-Please report bugs to daleif@math.au.dk
-
-===========
-This README file was last revised 2017/05/24.
diff --git a/macros/latex/contrib/mathtools/README.md b/macros/latex/contrib/mathtools/README.md
new file mode 100644
index 0000000000..1cad9aafcf
--- /dev/null
+++ b/macros/latex/contrib/mathtools/README.md
@@ -0,0 +1,56 @@
+The `mathtools` bundle
+======================
+
+`mathtools`
+-----------
+
+The `mathtools` package provides many useful tools for mathematical
+typesetting. It is based on `amsmath` and fixes various deficiencies
+of `amsmath` and standard LaTeX. It provides:
+
+- Extensible symbols, such as brackets, arrows, harpoons, etc.
+- Various symbols such as `\coloneqq` (:=).
+- Easy creation of new tag forms.
+- Showing only the referenced equations.
+- Extensible arrows, harpoons and hook arrows.
+- Starred versions of the `amsmath` matrix environments for
+ specifying the column alignment.
+- More building blocks: multlined, cases-like environments, new
+ gathered environments.
+- Math versions of `\makebox`, `\llap`, `\rlap`, etc.
+- Cramped math styles.
+- and more ...
+
+`mathtools` requires `mhsetup`.
+
+`empheq`
+--------
+
+The `empheq` package is a visual markup extension designed to
+function on top of `amsmath`. It features:
+
+- Boxing multi line math displays while leaving equation
+ numbers untouched at the margin. Any kind of box will do.
+- Making the `ntheorem` package place end-of-theorem markers
+ perfectly.
+- Placing arbitrary material on either side of math displays.
+ This includes delimiters that automatically scale to the
+ correct size.
+
+`empheq` requires `mathtools`.
+
+`mhsetup`
+---------
+
+The `mhsetup` package defines various programming tools needed by
+both `empheq` and `mathtools`. In the future, most of these tools will
+probably be an integral part of LaTeX3.
+
+-----
+
+Copyright (C) 2002-2011 Morten Hoegholm
+Copyright (C) 2012-2019 Lars Madsen
+Copyright (C) 2020 Lars Madsen, The LaTeX3 Project
+<https://latex-project.org/>
+All rights reserved.
+
diff --git a/macros/latex/contrib/mathtools/empheq.dtx b/macros/latex/contrib/mathtools/empheq.dtx
index 45dace201f..7f4b76b8ae 100644
--- a/macros/latex/contrib/mathtools/empheq.dtx
+++ b/macros/latex/contrib/mathtools/empheq.dtx
@@ -1,7 +1,8 @@
% \iffalse meta-comment
%
% Copyright (C) 2002-2007 by Morten Hoegholm
-% Copyright (C) 2012 by Lars Madsen
+% Copyright (C) 2012-2019 by Lars Madsen
+% Copyright (C) 2020 by Lars Madsen, The LaTeX3 Project
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -14,7 +15,7 @@
% This work has the LPPL maintenance status "maintained".
%
% This Current Maintainer of this work is
-% Lars Madsen
+% Lars Madsen, The LaTeX3 Project
%
% This work consists of the main source file empheq.dtx
% and the derived files
@@ -68,7 +69,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: empheq 2017/03/31 v2.15 empheq}
+\Msg{* Package: empheq 2020/03/24 v2.16 empheq}
\Msg{************************************************************************}
\keepsilent
@@ -79,7 +80,8 @@
This is a generated file.
Copyright (C) 2002-2007 by Morten Hoegholm
-Copyright (C) 2012- by Lars Madsen
+Copyright (C) 2012-2019 by Lars Madsen
+Copyright (C) 2020- by Lars Madsen, The LaTeX3 Project
This work may be distributed and/or modified under the
@@ -93,7 +95,7 @@ LaTeX version 2005/12/01 or later.
This work has the LPPL maintenance status "maintained".
This Current Maintainer of this work is
-Lars Madsen
+Lars Madsen, The LaTeX3 Project
This work consists of the main source file empheq.dtx
and the derived files
@@ -131,7 +133,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{empheq.drv}%
- [2017/03/31 v2.15 Emphasizing equations]
+ [2020/03/24 v2.16 Emphasizing equations]
\documentclass{ltxdoc}
\usepackage{mathpazo}
\usepackage[overload]{empheq}
@@ -142,6 +144,7 @@ and the derived files
\hyphenation{emph-eq}
\makeatletter
\providecommand*\pkg[1]{\textsf{#1}}
+\providecommand*\cls[1]{\textsf{#1}}
\providecommand*\env[1]{\texttt{#1}}
\providecommand*\email[1]{\href{mailto:#1}{\texttt{#1}}}
\providecommand*\mode[1]{\texttt{[#1]}}
@@ -149,6 +152,17 @@ and the derived files
\addtolength\marginparwidth{-30pt}
+\newcommand\lineref[1]{
+ \begingroup
+ % \p@CodelineNo \normalfont \scriptsize 475
+ \let\p@CodelineNo\relax
+ \let\normalfont\relax
+ %\let\scriptsize\relax
+ \ref{#1}
+ \endgroup
+}
+
+
\newcommand*\AddDescribe[3]{%
\@namedef{Describe#1}{\leavevmode\@bsphack\begingroup\MakePrivateLetters
\@nameuse{Describe@#1}}
@@ -323,7 +337,8 @@ and the derived files
\DocInput{empheq.dtx}
\end{document}
%</driver>
-% \fi
+% \fi
+% \changes{v2.16}{2020/03/24}{fixed several bugs related to amsart/-book}
% \changes{v2.15}{2017/03/31}{Fixed a bug in relation to the AMS
% classes and completed prefixing macros belonging to \pkg{mhsetup}
% and \pkg{empheq}}
@@ -366,7 +381,7 @@ and the derived files
% \title{The \pkg{empheq} package\thanks{This file has version number
% \fileversion, last revised \filedate.}\\
% Emphasizing equations in \LaTeXe}
-% \author{Morten H\o gholm, Lars Madsen}
+% \author{Morten Hoegholm, Lars Madsen, The LaTeX3 Project}
%
% \date{\filedate}
%
@@ -1624,11 +1639,10 @@ and the derived files
% \section{Contact information}
%
% Should you have any feature request, suggestions, or bug reports
-% then feel free to contact Lars Madsen at
+% then feel free to open an issue at (it also covers \pkg{empheq})
% \begin{quote}
-% \email{daleif@math.au.dk}
+% \url{https://github.com/latex3/mathtools}
% \end{quote}
-% Please put `empheq' in the subject line.
%
% \subsection*{Contributors}
%
@@ -1874,6 +1888,7 @@ and the derived files
% \begin{macro}{\l_EQ_totalwidth_dim}
% \begin{macro}{\l_EQ_displaywidth_dim}
% \begin{macro}{\l_EQ_temp_linewidth_dim}
+% \begin{macro}{\l_EQ_linewidth_dim}
% \begin{macro}{\EmphEqdelimitershortfall}
% \begin{macro}{\EmphEqdelimiterfactor}
% \begin{macro}{\g_EQ_toptag_height_dim}
@@ -1889,9 +1904,13 @@ and the derived files
\newdimen\l_EQ_displaywidth_dim
% \end{macrocode}
% Just to make it accessible.
+% \changes{v2.16}{2020/03/23}{Added \cs{l_EQ_linewidth_dim} since due
+% to the \AmS\ classes being able to not rely on \cs{linewidth} can be
+% useful.}
% \begin{macrocode}
\def\EmphEqdisplaywidth{\l_EQ_displaywidth_dim}
\newdimen\l_EQ_temp_linewidth_dim
+\newdimen\l_EQ_linewidth_dim
\newdimen\EmphEqdelimitershortfall
\newcount\EmphEqdelimiterfactor
\EmphEqdelimiterfactor950
@@ -1913,6 +1932,7 @@ and the derived files
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\EQ_outerbox:}
% \begin{macro}{\EQ_innerbox:}
@@ -2049,8 +2069,8 @@ and the derived files
\MH_else:
\setkeys{\MT_options_name:}{multlined-pos=t}
\MH_fi:
- \g@addto@macro\EQ_complete_mathdisplay:{
- \begin{MTmultlined}\relax}
+ \g@addto@macro\EQ_complete_mathdisplay:{
+ \begin{MTmultlined}\relax}
}
\g@addto@macro\EQ_complete_mathdisplay:\EQ_mathbody:
\MH_if_boolean:nT {outer_mult}{
@@ -2220,7 +2240,45 @@ and the derived files
% \begin{macrocode}
\MH_let:NwN\SetTagPlusEndMark\EQ_tag_plus_endmark:
\MH_let:NwN\SetOnlyEndMark\EQ_only_endmark:
+% \end{macrocode}
+% \changes{v2.16}{2020/03/19}{Added fix for amsart and amsbook}
+% \changes{v2.16}{2020/03/23}{Added additional length as it is useful
+% against amsart and friends}
+% \begin{macrocode}
\l_EQ_temp_linewidth_dim\linewidth
+ \l_EQ_linewidth_dim\linewidth
+% \end{macrocode}
+% In classes like \cls{amsart} and \cls{amsbook} thye set
+% \cs{displaywidth} to a fixed value. This gives problems inside
+% lists, where these classes want to use the full width, not the
+% effective width. They do this via \cs{everydisplay}
+% which is actually too late for when \cs{EQ_initialize:} runs!
+% We know that \cls{amsart/book} defines
+% \begin{verbatim}
+% \def\fullwidthdisplay{\displayindent\z@ \displaywidth\columnwidth}
+% \end{verbatim}
+% and then adds this to \cs{everydisplay}. So our fix will be to see
+% if \cs{fullwidthdisplay} is defined, run it locally and then extract
+% the value of \cs{displaywidth} using a global scratch variable. If
+% that size is then larger than the current \cs{linewidth} we will use
+% it. Additionally we also save this value in a static length, so we
+% can use this everywhere instead of \cs{linewidth}.
+% \begin{macrocode}
+ \@tempdima\z@
+ \begingroup
+ \ifdefined\fullwidthdisplay\relax
+ \fullwidthdisplay
+ \global\@tempdima\displaywidth
+ \fi
+ \endgroup
+ \ifdim\@tempdima>\linewidth\relax
+ \l_EQ_temp_linewidth_dim\@tempdima
+ \l_EQ_linewidth_dim\@tempdima
+ \fi
+ \@tempdima\z@
+% \end{macrocode}
+% -- end of \cls{amsart/-book} fix.
+% \begin{macrocode}
\g_EQ_toprow_height_dim\z@
\g_EQ_bottomrow_depth_dim\z@
\g_EQ_toptag_height_dim\z@
@@ -2303,7 +2361,9 @@ and the derived files
% \subsubsection{Separating Tags and Display}
%
% \begin{macro}{\EQ_typeset_tags:}
-% Typesetting the tags without the display.
+% Typesetting the tags without the display. The main idea here is to
+% typeset everything inside a box of a massive width, so wide that
+% the math part is way outside the area of the text block.
% \begin{macrocode}
\def\EQ_typeset_tags:{%
\sbox\EQ_tag_box{%
@@ -2319,7 +2379,7 @@ and the derived files
% The AMS classes sets \cs{displaywidth} equal to \cs{columnwidth} in
% \cs{everydisplay}. This is bad for us as then the reqno equation
% numbers are not typeset at the right edge of the parbox we are
-% in. Simplest solution: Locally reset \cs{columnwidth}.
+% in. Simplest solution: Locally reset \cs{columnwidth}.
% \changes{v2.15}{2017/03/28}{Resetting \cs{columnwidth} as a fix for
% a setting in AMS classes}
% \begin{macrocode}
@@ -2727,9 +2787,13 @@ and the derived files
% math display.
% \changes{v2.15}{2017/03/31}{added MH\_ prefix}
% \changes{v2.15}{2017/03/31}{added EQ\_ prefix}
+% \changes{v2.16}{2020/03/23}{switched \cs{linewidth} to
+% \cs{l_EQ_linewidth_dim} due to amsart forcing full width displays}
% \begin{macrocode}
\setlength{\l_EQ_temp_linewidth_dim}{%
- \linewidth-\l_EQ_totalwidth_dim-\widthof{\EQ_outerbox:{}}}%
+ % \linewidth
+ \l_EQ_linewidth_dim
+ -\l_EQ_totalwidth_dim-\widthof{\EQ_outerbox:{}}}%
\MH_fi:}
\def\EQ_modify_linewidth_ii:{\EQ_modify_linewidth_i:}
\def\EQ_find_displaywidth_i:{%
@@ -2777,6 +2841,13 @@ and the derived files
% This was fairly easy, but then I had to take care of \ldots
%
% \subsubsection{The \env{multline} Family}
+%
+% \emph{Note: These next three paragraphs are rather confusing. They
+% are referring to an older implementation (also available via the
+% \opt{oldmultline} option, where the \env{multline} feature was
+% implemented via \env{flalign}, nowadays we use \env{multlined} from
+% \pkg{mathtools} wrapped inside a \env{gather} for the equation number.}
+%
% This was quite a pickle. Its implementation in \pkg{amsmath} is
% very strange indeed; for instance the tag is typeset in the
% measuring phase! So instead I thought I could fake it, but how
@@ -2798,6 +2869,10 @@ and the derived files
% \cs{MakeKeyvalAliasAddon} now}
% Then we make \env{multline} into an alias for {flalign} but with
% an extra switch \cs{ifEQ_multline:} set to true.
+%
+% Note this version of the \env{multline} code is being used when we
+% use the \emph{bad} \env{multline} implementation, see code line
+% \lineref{goodandbad} onwards.
% \begin{macrocode}
\MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{multline}
{flalign}{\MH_set_boolean_T:n {multline}}
@@ -2863,78 +2938,108 @@ and the derived files
\MH_let:NwN \endMTmultlined \endmultlined
% \end{macrocode}
% \end{environment}
-% We make a choice here: the good \env{multline} or the bad?
+% We make a choice here: the good \env{multline} or the bad?
+% \refstepcounter{CodelineNo}\label{goodandbad}\addtocounter{CodelineNo}{-1}
% \begin{macrocode}
\MH_if_boolean:nTF {good_mult}{
% \end{macrocode}
% The good:
% \changes{v2.15}{2017/03/31}{added MH\_ prefix}
% \changes{v2.15}{2017/03/31}{added EQ\_ prefix}
-% \begin{macrocode}
-\MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{multline}{gather}
- {\MH_set_boolean_T:n {outer_mult}}
-\MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{multline*}{gather*}
- {\MH_set_boolean_T:n {outer_mult}}
-\def\EQ_modify_linewidth_iii_mult:{
- \setlength{\l_EQ_temp_linewidth_dim}{%
- \linewidth-\widthof{\EQ_outerbox:{}}}%
- \MH_if_dim:w \g_EQ_widesttag_dim>\z@
- \EQ_multline_modify_linewidth_tag:
- \MH_else:
- \EQ_multline_modify_linewidth_notag:
- \MH_fi:
- \MH_setlength:dn \l_MT_multwidth_dim{\l_EQ_temp_linewidth_dim}
-}
-\def\EQ_modify_linewidth_iv_mult:{\EQ_modify_linewidth_iii_mult:}
-\def\EQ_find_displaywidth_iii_mult:{%
- \MH_setlength:dn \l_EQ_displaywidth_dim{\totwidth@}%
- \MH_if_case:w \l_EQ_alignmentmode_int \MH_or: \MH_or: % #1 & #2:
- \MH_or: % #3:
- \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
- \MH_or: % #4:
- \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
- \MH_fi:}
-\def\EQ_find_displaywidth_iv_mult:{\EQ_find_displaywidth_iii_mult:}
-\def\EQ_place_display_iii_mult:{
- \MH_if_case:w \l_EQ_alignmentmode_int
- \MH_or: % #1:
+% \changes{v2.16}{2020/03/23}{switched \cs{linewidth} to
+% \cs{l_EQ_linewidth_dim} due to amsart forcing full width displays}
+% \begin{macrocode}
+ \MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{multline}{gather}
+ {\MH_set_boolean_T:n {outer_mult}}
+ \MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{multline*}{gather*}
+ {\MH_set_boolean_T:n {outer_mult}}
+ \def\EQ_modify_linewidth_iii_mult:{
+ \setlength{\l_EQ_temp_linewidth_dim}{%
+ % \linewidth
+ \l_EQ_linewidth_dim
+ -\widthof{\EQ_outerbox:{}}}%
\MH_if_dim:w \g_EQ_widesttag_dim>\z@
- \abovedisplayshortskip=\abovedisplayskip
- \rlap{
- \kern-.5\linewidth
- \kern\multlinegap
- \EQ_use_mathdisplay:
- }
+ \EQ_multline_modify_linewidth_tag:
\MH_else:
- \EQ_use_mathdisplay:
+ \EQ_multline_modify_linewidth_notag:
\MH_fi:
- \MH_or: % #2:
- \MH_if_dim:w \g_EQ_widesttag_dim>\z@
- \llap{
+ \MH_setlength:dn \l_MT_multwidth_dim{\l_EQ_temp_linewidth_dim}
+% \end{macrocode}
+% Here is an interesting issue. We have just calculated
+% \cs{l_MT_multwidth_dim} which will be the width of the internal
+% \env{multline}. But we are typesetting inside \env{gather} inside a
+% box of width \cs{l_EQ_temp_linewidth_dim} so the effective width of
+% the display is \cs{@mathmargin} less. Solution: add \cs{@mathmargin}
+% back in:
+% \changes{v2.16}{2020/03/23}{Added \cs{@mathmargin} back into the box
+% width}
+% \begin{macrocode}
+ \MH_if_case:w \l_EQ_alignmentmode_int
+ \MH_or: \MH_or: % 1 and 2
+ \MH_or:
+ \MH_addtolength:dn
+ \l_EQ_temp_linewidth_dim{\@mathmargin}%
+ \MH_or:
+ \MH_addtolength:dn
+ \l_EQ_temp_linewidth_dim{\@mathmargin}%
+ \MH_fi:
+ }
+ \def\EQ_modify_linewidth_iv_mult:{\EQ_modify_linewidth_iii_mult:}
+ \def\EQ_find_displaywidth_iii_mult:{%
+ \MH_setlength:dn \l_EQ_displaywidth_dim{\totwidth@}%
+ \MH_if_case:w \l_EQ_alignmentmode_int \MH_or: \MH_or: % #1 & #2:
+ \MH_or: % #3:
+ \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
+ \MH_or: % #4:
+ \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
+ \MH_fi:}
+ \def\EQ_find_displaywidth_iv_mult:{\EQ_find_displaywidth_iii_mult:}
+% \end{macrocode}
+% \changes{v2.16}{2020/03/23}{switched \cs{linewidth} to
+% \cs{l_EQ_linewidth_dim} due to amsart forcing full width displays}
+% \begin{macrocode}
+ \def\EQ_place_display_iii_mult:{
+ \MH_if_case:w \l_EQ_alignmentmode_int
+ \MH_or: % #1:
+ \MH_if_dim:w \g_EQ_widesttag_dim>\z@
+ \abovedisplayshortskip=\abovedisplayskip
+ \rlap{
+ % \kern-.5\linewidth
+ \kern-.5\l_EQ_linewidth_dim
+ \kern\multlinegap
+ \EQ_use_mathdisplay:
+ }
+ \MH_else:
\EQ_use_mathdisplay:
- \kern-.5\linewidth
- \kern\multlinegap
- }%
- \MH_else:
+ \MH_fi:
+ \MH_or: % #2:
+ \MH_if_dim:w \g_EQ_widesttag_dim>\z@
+ \llap{
+ \EQ_use_mathdisplay:
+ % \kern-.5\linewidth
+ \kern-.5\l_EQ_linewidth_dim
+ \kern\multlinegap
+ }%
+ \MH_else:
+ \EQ_use_mathdisplay:
+ \MH_fi:
+ \MH_or: % #3:
+ \EQ_use_mathdisplay:
+ \MH_or: % #4:
\EQ_use_mathdisplay:
\MH_fi:
- \MH_or: % #3:
- \EQ_use_mathdisplay:
- \MH_or: % #4:
- \EQ_use_mathdisplay:
- \MH_fi:
-}
-\def\EQ_place_display_iv_mult: {\EQ_place_display_iii_mult:}
+ }
+ \def\EQ_place_display_iv_mult: {\EQ_place_display_iii_mult:}
% \end{macrocode}
% \begin{macrocode}
-}{
+}{% on to the 'bad' version
% \end{macrocode}
% The bad
% \begin{macrocode}
-\def\EQ_generic_multline:nnnnn #1#2#3#4#5{%
+ \def\EQ_generic_multline:nnnnn #1#2#3#4#5{%
% \end{macrocode}
% This is a very tricky little detail. If we're in \mode{leqno} mode
-% we need just a we little width inside the \env{flalign}, so we put
+% we need just a wee little width inside the \env{flalign}, so we put
% in the smallest possible amount. Otherwise we wind up in a
% \begin{verbatim}
% ! Arithmetic overflow.
@@ -2946,8 +3051,8 @@ and the derived files
% how many users can fix this by themselves?
% \changes{v2.15}{2017/03/31}{added MH\_ prefix}
% \begin{macrocode}
- \hskip1sp#2#3{{}#5}#4%
- \MH_if:w *#1\relax\MH_else:\notag\MH_fi:}
+ \hskip1sp#2#3{{}#5}#4%
+ \MH_if:w *#1\relax\MH_else:\notag\MH_fi:}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2958,51 +3063,51 @@ and the derived files
% first three are the general purpose ones that also have a starred
% version. The other three are for normal use.
% \begin{macrocode}
-\def\multleft{\@ifstar{%
- \MH_if_boolean:nTF {multlined}{
- \def\EQ_next:{\EQ_multlined_left:n}
- }{
- \def\EQ_next:{
- \EQ_generic_multline:nnnnn {*}{}{\mathrlap}{&&&&&}}
- }
- \EQ_next:}{%
- \MH_if_boolean:nTF {multlined}{
- \def\EQ_next:{\EQ_multlined_left:n}%
- }{
- \def\EQ_next:{
- \EQ_generic_multline:nnnnn {}{}{\mathrlap}{&&&&&}}
- }
- \EQ_next:}}%
-\def\multcenter{\@ifstar{%
- \MH_if_boolean:nTF {multlined}{
- \def\EQ_next:{\EQ_multlined_center:n}%
- }{
- \def\EQ_next:{
- \EQ_generic_multline:nnnnn {*}{&&}{\mathclap}{&&&}}
- }
- \EQ_next:}{%
- \MH_if_boolean:nTF {multlined}{
- \def\EQ_next:{\EQ_multlined_center:n }%
- }{
- \def\EQ_next:{
- \EQ_generic_multline:nnnnn {}{&&}{\mathclap}{&&&}}
- }
- \EQ_next:}}%
-\def\multright{\@ifstar{%
- \MH_if_boolean:nTF {multlined}{
- \def\EQ_next:{\EQ_multlined_right:n }%
- }{
- \def\EQ_next:{
- \EQ_generic_multline:nnnnn {*}{&&&&&}{\mathllap}{}}
- }
- \EQ_next:}{%
- \MH_if_boolean:nTF {multlined}{
- \def\EQ_next:{\EQ_multlined_right:n }%
- }{
- \def\EQ_next:{
- \EQ_generic_multline:nnnnn {}{&&&&&}{\mathllap}{}}
- }
- \EQ_next:}}
+ \def\multleft{\@ifstar{%
+ \MH_if_boolean:nTF {multlined}{
+ \def\EQ_next:{\EQ_multlined_left:n}
+ }{
+ \def\EQ_next:{
+ \EQ_generic_multline:nnnnn {*}{}{\mathrlap}{&&&&&}}
+ }
+ \EQ_next:}{%
+ \MH_if_boolean:nTF {multlined}{
+ \def\EQ_next:{\EQ_multlined_left:n}%
+ }{
+ \def\EQ_next:{
+ \EQ_generic_multline:nnnnn {}{}{\mathrlap}{&&&&&}}
+ }
+ \EQ_next:}}%
+ \def\multcenter{\@ifstar{%
+ \MH_if_boolean:nTF {multlined}{
+ \def\EQ_next:{\EQ_multlined_center:n}%
+ }{
+ \def\EQ_next:{
+ \EQ_generic_multline:nnnnn {*}{&&}{\mathclap}{&&&}}
+ }
+ \EQ_next:}{%
+ \MH_if_boolean:nTF {multlined}{
+ \def\EQ_next:{\EQ_multlined_center:n }%
+ }{
+ \def\EQ_next:{
+ \EQ_generic_multline:nnnnn {}{&&}{\mathclap}{&&&}}
+ }
+ \EQ_next:}}%
+ \def\multright{\@ifstar{%
+ \MH_if_boolean:nTF {multlined}{
+ \def\EQ_next:{\EQ_multlined_right:n }%
+ }{
+ \def\EQ_next:{
+ \EQ_generic_multline:nnnnn {*}{&&&&&}{\mathllap}{}}
+ }
+ \EQ_next:}{%
+ \MH_if_boolean:nTF {multlined}{
+ \def\EQ_next:{\EQ_multlined_right:n }%
+ }{
+ \def\EQ_next:{
+ \EQ_generic_multline:nnnnn {}{&&&&&}{\mathllap}{}}
+ }
+ \EQ_next:}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3014,65 +3119,70 @@ and the derived files
% be placed in the first line.
% \changes{v2.15}{2017/03/31}{added MH\_ prefixes}
% \begin{macrocode}
-\def\multfirst{%
- \MH_if_boolean:nTF {multlined}{
- \def\EQ_next:{\EQ_multlined_left:n }%
- }{
- \MH_if_case:w \l_EQ_alignmentmode_int
- \MH_or: % #1:
- \def\EQ_next:{\multleft}%
- \MH_or: % #2:
- \def\EQ_next:{\multleft*}%
- \MH_or: % #3:
- \def\EQ_next:{\multleft}%
- \MH_or: % #4:
- \def\EQ_next:{\multleft*}%
- \MH_fi:
- }
- \EQ_next:}
-% \end{macrocode}
-% Pretend the star was never there.
-% \begin{macrocode}
-\def\multmiddle{%
- \def\EQ_next:{%
+ \def\multfirst{%
\MH_if_boolean:nTF {multlined}{
- \expandafter\EQ_multlined_center:n
+ \def\EQ_next:{\EQ_multlined_left:n }%
}{
- \expandafter\multcenter
+ \MH_if_case:w \l_EQ_alignmentmode_int
+ \MH_or: % #1:
+ \def\EQ_next:{\multleft}%
+ \MH_or: % #2:
+ \def\EQ_next:{\multleft*}%
+ \MH_or: % #3:
+ \def\EQ_next:{\multleft}%
+ \MH_or: % #4:
+ \def\EQ_next:{\multleft*}%
+ \MH_fi:
}
- }%
- \@ifstar{\EQ_next:}{\EQ_next:}}
+ \EQ_next:}
+% \end{macrocode}
+% Pretend the star was never there.
+% \begin{macrocode}
+ \def\multmiddle{%
+ \def\EQ_next:{%
+ \MH_if_boolean:nTF {multlined}{
+ \expandafter\EQ_multlined_center:n
+ }{
+ \expandafter\multcenter
+ }
+ }%
+ \@ifstar{\EQ_next:}{\EQ_next:}}
% \end{macrocode}
% If we're using the \mode{reqno} option, the equation number
% should be placed in the last line.
% \changes{v2.15}{2017/03/31}{added MH\_ prefixes}
% \begin{macrocode}
-\def\multlast{%
- \MH_if_boolean:nTF {multlined}{
- \def\EQ_next:{\EQ_multlined_right:n }%
- }{
- \MH_if_case:w \l_EQ_alignmentmode_int
- \MH_or: % #1:
- \def\EQ_next:{\multright*}%
- \MH_or: % #2:
- \def\EQ_next:{\multright}%
- \MH_or: % #3:
- \def\EQ_next:{\multright*}%
- \MH_or: % #4:
- \def\EQ_next:{\multright}%
- \MH_fi:
- }
- \EQ_next:}
+ \def\multlast{%
+ \MH_if_boolean:nTF {multlined}{
+ \def\EQ_next:{\EQ_multlined_right:n }%
+ }{
+ \MH_if_case:w \l_EQ_alignmentmode_int
+ \MH_or: % #1:
+ \def\EQ_next:{\multright*}%
+ \MH_or: % #2:
+ \def\EQ_next:{\multright}%
+ \MH_or: % #3:
+ \def\EQ_next:{\multright*}%
+ \MH_or: % #4:
+ \def\EQ_next:{\multright}%
+ \MH_fi:
+ }
+ \EQ_next:}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\multlinedwidth}
% Here begins the code for \env{multlined}.
-% \begin{macrocode}
-\MH_new_boolean:n {multlined}
-\newdimen\multlinedwidth
-\MH_setlength:dn \multlinedwidth{.7\linewidth}
+% \changes{v2.16}{2020/03/23}{switched \cs{linewidth} to
+% \cs{l_EQ_linewidth_dim} due to amsart forcing full width displays}
+% \begin{macrocode}
+ \MH_new_boolean:n {multlined}
+ \newdimen\multlinedwidth
+ \MH_setlength:dn \multlinedwidth{
+ % .7\linewidth
+ 0.7\l_EQ_linewidth_dim
+ }
% \end{macrocode}
% \end{macro}
% \begin{environment}{multlined}
@@ -3084,25 +3194,25 @@ and the derived files
% Some trickery as we want to scan for two optional arguments that
% may be interchanged.
% \begin{macrocode}
-\renewenvironment{multlined}%
- {\MH_nospace_ifnextchar:Nnn [ {\EQ_multlined_I:w}
- {\EQ_multlined_I:w[c]}
- }
- { \endaligned }
-\def\EQ_multlined_I:w[#1]{%
- \MH_nospace_ifnextchar:Nnn[ {\EQ_multlined_II:w[#1]}
- {\EQ_multlined_II:w[#1][\multlinedwidth]}}
-\def\EQ_multlined_II:w[#1][#2]{%
+ \renewenvironment{multlined}%
+ {\MH_nospace_ifnextchar:Nnn [ {\EQ_multlined_I:w}
+ {\EQ_multlined_I:w[c]}
+ }
+ { \endaligned }
+ \def\EQ_multlined_I:w[#1]{%
+ \MH_nospace_ifnextchar:Nnn[ {\EQ_multlined_II:w[#1]}
+ {\EQ_multlined_II:w[#1][\multlinedwidth]}}
+ \def\EQ_multlined_II:w[#1][#2]{%
% \end{macrocode}
% We tell \LaTeX\ that we're in \env{multlined}.
% \begin{macrocode}
- \MH_set_boolean_T:n {multlined}
+ \MH_set_boolean_T:n {multlined}
% \end{macrocode}
% \changes{v2.10}{2004/07/26}{Fixed restoration of \cmd{\\}}
% Restore the meaning of \cmd{\\} inside \env{multlined}, else it
% wouldn't work in the \env{equation} environment.
% \begin{macrocode}
- \MH_let:NwN \Let@\MT_saved_Let:
+ \MH_let:NwN \Let@\MT_saved_Let:
% \end{macrocode}
% Then check the first optional argument and call
% \cs{EQ_multlined_III:w}, which sets \cs{multlinewidth} if
@@ -3110,21 +3220,21 @@ and the derived files
% three columns).
% \changes{v2.15}{2017/03/31}{added MH\_ prefix}
% \begin{macrocode}
- \MH_if:w t#1\relax \EQ_multlined_III:nn {#1}{#2}%
- \MH_else:
- \MH_if:w b#1\relax \EQ_multlined_III:nn {#1}{#2}%
+ \MH_if:w t#1\relax \EQ_multlined_III:nn {#1}{#2}%
\MH_else:
- \MH_if:w c#1\relax \EQ_multlined_III:nn {#1}{#2}%
+ \MH_if:w b#1\relax \EQ_multlined_III:nn {#1}{#2}%
\MH_else:
- \EQ_multlined_III:nn {#2}{#1}%
+ \MH_if:w c#1\relax \EQ_multlined_III:nn {#1}{#2}%
+ \MH_else:
+ \EQ_multlined_III:nn {#2}{#1}%
+ \MH_fi:
\MH_fi:
\MH_fi:
- \MH_fi:
- \mkern-\thinmuskip
- \EQ_next:}
-\def\EQ_multlined_III:nn #1#2{%
- \def\EQ_next:{\setlength\multlinedwidth{#2}%
- \start@aligned{#1}{\thr@@}}}
+ \mkern-\thinmuskip
+ \EQ_next:}
+ \def\EQ_multlined_III:nn #1#2{%
+ \def\EQ_next:{\setlength\multlinedwidth{#2}%
+ \start@aligned{#1}{\thr@@}}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3136,12 +3246,12 @@ and the derived files
% The internal versions of \cs{multleft} etc.\ adapted for
% \env{multlined}.
% \begin{macrocode}
-\def\EQ_multlined_left:n #1{%
- \mathrlap{#1}&\hskip.5\multlinedwidth&&\hskip.5\multlinedwidth&&}
-\def\EQ_multlined_center:n #1{%
- &\hskip.5\multlinedwidth&&\mathclap{#1}\hskip.5\multlinedwidth&&}
-\def\EQ_multlined_right:n #1{%
- &\hskip.5\multlinedwidth&&\hskip.5\multlinedwidth&&\mathllap{#1}}
+ \def\EQ_multlined_left:n #1{%
+ \mathrlap{#1}&\hskip.5\multlinedwidth&&\hskip.5\multlinedwidth&&}
+ \def\EQ_multlined_center:n #1{%
+ &\hskip.5\multlinedwidth&&\mathclap{#1}\hskip.5\multlinedwidth&&}
+ \def\EQ_multlined_right:n #1{%
+ &\hskip.5\multlinedwidth&&\hskip.5\multlinedwidth&&\mathllap{#1}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3155,12 +3265,16 @@ and the derived files
% \subsubsection{The Code for \env{flalign} \& \env{multline}}
% \changes{v2.15}{2017/03/31}{added MH\_ prefix}
% \changes{v2.15}{2017/03/31}{added EQ\_ prefix}
+% \changes{v2.16}{2020/03/23}{switched \cs{linewidth} to
+% \cs{l_EQ_linewidth_dim} due to amsart forcing full width displays}
% \begin{macrocode}
\EQ_new_equationtype:nnn {EmphEqEnv}{flalign}{5}
\EQ_new_equationtype:nnn {EmphEqEnv}{flalign*}{6}
\def\EQ_modify_linewidth_v:{%
\setlength{\l_EQ_temp_linewidth_dim}{%
- \linewidth-\l_EQ_totalwidth_dim-\widthof{\EQ_outerbox:{}}}%
+ % \linewidth
+ \l_EQ_linewidth_dim
+ -\l_EQ_totalwidth_dim-\widthof{\EQ_outerbox:{}}}%
\MH_if_dim:w \g_EQ_widesttag_dim>\z@
\MH_if_boolean:nTF {multline}{
\EQ_multline_modify_linewidth_tag:
@@ -3190,16 +3304,24 @@ and the derived files
\MH_setlength:dn
\l_EQ_displaywidth_dim{\l_EQ_temp_linewidth_dim}}
\def\EQ_find_displaywidth_vi:{\EQ_find_displaywidth_v:}
+% \end{macrocode}
+% \changes{v2.16}{2020/03/23}{switched \cs{linewidth} to
+% \cs{l_EQ_linewidth_dim} due to amsart forcing full width displays}
+% \begin{macrocode}
\def\EQ_place_display_v:{%
\MH_if_case:w \l_EQ_alignmentmode_int
\MH_or: % #1:
\MH_if_dim:w \g_EQ_widesttag_dim>\z@
\MH_if_boolean:nTF {multline}{
- \rlap{\kern\multlinegap \kern-.5\linewidth
+ \rlap{\kern\multlinegap
+ % \kern-.5\linewidth
+ \kern-.5\l_EQ_linewidth_dim
\EQ_use_mathdisplay:
\kern-\mintagsep \kern\multlinetaggap}%
}{
- \rlap{\kern-.5\linewidth\EQ_use_mathdisplay:}%
+ \rlap{%\kern-.5\linewidth
+ \kern-.5\l_EQ_linewidth_dim
+ \EQ_use_mathdisplay:}%
}
\MH_else:
\EQ_use_mathdisplay:
@@ -3209,15 +3331,27 @@ and the derived files
\MH_if_boolean:nTF {multline}{
\llap{\kern-\mintagsep \kern\multlinetaggap
\EQ_use_mathdisplay:
- \kern\multlinegap \kern-.5\linewidth}%
+ \kern\multlinegap
+ % \kern-.5\linewidth
+ \kern-.5\l_EQ_linewidth_dim
+ }%
}{
- \llap{\EQ_use_mathdisplay:\kern-.5\linewidth}%
+ \llap{\EQ_use_mathdisplay:
+ % \kern-.5\linewidth
+ \kern-.5\l_EQ_linewidth_dim
+ }%
}
\MH_else:
\EQ_use_mathdisplay:
\MH_fi:
\MH_or: % #3:
- \MH_if_boolean:nF {multline}{ \kern-\multlinetaggap }
+% \end{macrocode}
+% \changes{v2.16}{2020/03/24}{\cs{multlinetaggap} should be added when
+% \opt{multline} is true, and if false \cs{\@mathmargin} should ned
+% kerned away}
+% \begin{macrocode}
+ \MH_if_boolean:nTF {multline}{ \kern-\multlinetaggap }
+ { \kern-\@mathmargin }
\EQ_use_mathdisplay:
\MH_or: % #4:
\MH_if_dim:w \g_EQ_widesttag_dim>\z@
@@ -3538,6 +3672,81 @@ and the derived files
% \end{macro}
%
%
+% \subsection{Adjusting for \cls{amsart} and \cls{amsbook}}
+% \label{sec:adjust-clsams-clsams}
+%
+% As mentioned earlier the \AmS{} classes \cls{amsart} and
+% \cls{amsbook} explicitly sets \cs{displaywidth} to
+% \cs{columnwidth}. The main reason for this (1) they use equation
+% numbers on the left and (2) if an equation is inside a list, they
+% still want the equation to use the full width (the standard classes
+% under \opt{leqno} will have their equation number indented to match
+% the effective line width/indentation).
+%
+% Why is problematic for us? Firstly, this messes up our trick to
+% separate the tags (equation numbers) from the display (as we need
+% the construction to follow our \emph{very large} line
+% width). Secondly this messes up the calculations of \cs{alignsep@},
+% since we can no longer assume that \cs{alignsep@} was calculated
+% against the with of the box we wanted. Here is an example that
+% \begin{verbatim}
+% \makeatletter
+% \begingroup
+% \fbox{\parbox{0.5\textwidth}{%
+% \def\maketag@@@#1{\kern1sp\vphantom{#1}}%
+% \begin{align}
+% align &= align & align &= align \\ &= align
+% \end{align}}}
+% \par\noindent
+% \def\fullwidthdisplay{\displayindent\z@ \displaywidth\columnwidth}
+% \edef\@tempa{\noexpand\fullwidthdisplay\the\everydisplay}
+% \everydisplay\expandafter{\@tempa}
+% \fbox{\parbox{0.5\textwidth}{%
+% \def\maketag@@@#1{\kern1sp\vphantom{#1}}%
+% \begin{align}
+% align &= align & align &= align \\ &= align
+% \end{align}}\vspace{-2\baselineskip}}
+% \endgroup
+% \makeatletter
+% \end{verbatim}
+% \makeatletter
+% \begingroup^^A
+% \fboxsep=2pt
+% \abovedisplayskip0pt
+% \belowdisplayskip0pt
+% \abovedisplayshortskip0pt
+% \belowdisplayshortskip0pt
+% \fbox{\parbox{0.5\textwidth}{%
+% \def\maketag@@@#1{\kern1sp\vphantom{#1}}%
+% \begin{align}
+% align &= align & align &= align \\ &= align
+% \end{align}}}
+% \par\noindent
+% \def\fullwidthdisplay{\displayindent\z@ \displaywidth\columnwidth}^^A
+% \edef\@tempa{\noexpand\fullwidthdisplay\the\everydisplay}^^A
+% \everydisplay\expandafter{\@tempa}^^A
+% \fbox{\parbox{0.5\textwidth}{%
+% \def\maketag@@@#1{\kern1sp\vphantom{#1}}%
+% \begin{align}
+% align &= align & align &= align \\ &= align
+% \end{align}}\vspace{-2\baselineskip}}
+% \endgroup
+% \makeatletter
+% \par\medskip\noindent
+% It is pretty obvious that the space between the two alignment
+% columns are wrong. Like when we handled the tag separation, one
+% solution could be to explicitly set \cs{columnwidth} to be the
+% effective line width. Alternatively we could redefine
+% \cs{fullwidthdisplay} to do nothing. The latter is probably the
+% less severe.
+% \begin{macrocode}
+\g@addto@macro\EQ_typeset_display_hook:{
+ % \columnwidth\linewidth
+ \def\fullwidthdisplay{}
+}
+% \end{macrocode}
+%
+%
% \section{The \opt{overload} option}
% \begin{macro}{\EQ_overload_ams_begin:n}
% A helper for saving snapshots:
diff --git a/macros/latex/contrib/mathtools/empheq.ins b/macros/latex/contrib/mathtools/empheq.ins
new file mode 100644
index 0000000000..632545df72
--- /dev/null
+++ b/macros/latex/contrib/mathtools/empheq.ins
@@ -0,0 +1,94 @@
+%%
+%% This is file `empheq.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% empheq.dtx (with options: `install')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2002-2007 by Morten Hoegholm
+%% Copyright (C) 2012-2019 by Lars Madsen
+%% Copyright (C) 2020- by Lars Madsen, The LaTeX3 Project
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is
+%% Lars Madsen, The LaTeX3 Project
+%%
+%% This work consists of the main source file empheq.dtx
+%% and the derived files
+%% empheq.sty, empheq.pdf, empheq.ins, empheq.drv.
+%%
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: empheq 2017/03/31 v2.15 empheq}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2002-2007 by Morten Hoegholm
+Copyright (C) 2012-2019 by Lars Madsen
+Copyright (C) 2020- by Lars Madsen, The LaTeX3 Project
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+This Current Maintainer of this work is
+Lars Madsen, The LaTeX3 Project
+
+This work consists of the main source file empheq.dtx
+and the derived files
+ empheq.sty, empheq.pdf, empheq.ins, empheq.drv.
+
+\endpreamble
+
+\generate{%
+ \file{empheq.ins}{\from{empheq.dtx}{install}}%
+ \file{empheq.drv}{\from{empheq.dtx}{driver}}%
+ \usedir{tex/latex/mh}%
+ \file{empheq.sty}{\from{empheq.dtx}{package}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* empheq.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `empheq.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+\endinput
+%%
+%% End of file `empheq.ins'.
diff --git a/macros/latex/contrib/mathtools/empheq.pdf b/macros/latex/contrib/mathtools/empheq.pdf
index f0fbac2512..c8e8077f11 100644
--- a/macros/latex/contrib/mathtools/empheq.pdf
+++ b/macros/latex/contrib/mathtools/empheq.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathtools/mathtools.dtx b/macros/latex/contrib/mathtools/mathtools.dtx
index 0a08c4fb26..472c713942 100644
--- a/macros/latex/contrib/mathtools/mathtools.dtx
+++ b/macros/latex/contrib/mathtools/mathtools.dtx
@@ -1,7 +1,8 @@
% \iffalse meta-comment
%
% Copyright (C) 2004-2011 by Morten Hoegholm
-% Copyright (C) 2012- by Lars Madsen
+% Copyright (C) 2012-2019 by Lars Madsen
+% Copyright (C) 2020 by Lars Madsen, The LaTeX3 team
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -68,7 +69,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: mathtools 2020/01/17 v1.23}
+\Msg{* Package: mathtools 2020/03/24 v1.24}
\Msg{************************************************************************}
\keepsilent
@@ -79,7 +80,8 @@
This is a generated file.
Copyright (C) 2002-2011 by Morten Hoegholm
-Copyright (C) 2012- by Lars Madsen
+Copyright (C) 2012-2019 by Lars Madsen
+Copyright (C) 2020 by Lars Madsen, the LaTeX3 project
This work may be distributed and/or modified under the
@@ -93,7 +95,7 @@ LaTeX version 2005/12/01 or later.
This work has the LPPL maintenance status "maintained".
This Current Maintainer of this work is
-Lars Madsen
+Lars Madsen and the LaTeX3 project
This work consists of the main source file mathtools.dtx
and the derived files
@@ -131,7 +133,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{mathtools.drv}%
- [2020/01/17 v1.23 mathematical typesetting tools]
+ [2020/03/24 v1.24 mathematical typesetting tools]
\documentclass{ltxdoc}
\IfFileExists{fourier.sty}{\usepackage{fourier}}{}
\addtolength\marginparwidth{-25pt}
@@ -319,12 +321,12 @@ colorlinks,
%
% \GetFileInfo{mathtools.drv}
%
-% \CheckSum{3144}
+% \CheckSum{3333}
%
% \title{The \pkg{mathtools} package\thanks{This file has version number
% \fileversion, last revised \filedate.}}
%
-% \author{Morten H\o gholm, Lars Madsen}
+% \author{Morten Høgholm, Lars Madsen and the \LaTeX3 project}
% \date{\filedate}
%
% \maketitle
@@ -354,19 +356,20 @@ colorlinks,
% lists over the years, although more often than not without being
% released as stand-alone packages.
%
-%
% The \pkg{mathtools} package is exactly what its name implies: tools
% for mathematical typesetting. It is a collection of many of these
% often needed small tweaks---with some big tweaks added as well. It
% can only do so by having harvesting newsgroups for code and/or you
% writing the maintainers with wishes for code to be included, so if
% you have any good macros or just macros that help you when writing
-% mathematics, then don't hesitate to report them. It is
-% easiest to just contact Lars Madsen at
-% \begin{quote}\email{daleif@math.au.dk}\end{quote}
-% This is of course also the address to use in case of bug reports.
-% Please put `\texttt{mathtools}' in the subject line.
-%
+% mathematics, then don't hesitate to report them.
+%
+% As of 2020, \pkg{mathtools} (and \pkg{empheq}) is now hosted at the
+% \LaTeX3 team GitHub at
+% \begin{center}
+% \url{https://github.com/latex3/mathtools}
+% \end{center}
+% So if you have any issue, feel free to register an issue there.
%
% \medskip\noindent
% Update 2013: We now make \cs{(}\cs{)} and \cs[\cs]
@@ -1117,6 +1120,12 @@ colorlinks,
% A &\xrightleftharpoons[below]{above} B &
% A &\xleftrightharpoons[below]{above} B \\
% \end{align*}
+% Change in 2020: In \cs{xLeftarrow}, \cs{xRightarrow} and
+% \cs{xLeftrightarrow} we added a space to the argument(s), making
+% the arrow slightly longer and moving the argument away from the
+% large arrow head.
+%
+%
%
%
%
@@ -1748,16 +1757,22 @@ colorlinks,
% doing this as a normal line in an alignment leaves us with excessive
% space which \verb?\shortvdotswithin{=}? takes care with for us.
%
-% \verb?\shortvdotswithin{=}? corresponds to
+% The macro call \verb?\shortvdotswithin{=}? corresponds to
+% \begin{verbatim}
+% \MTFlushSpaceAbove
+% & \vdotswithin{=}
+% \MTFlushSpaceBelow
+% \end{verbatim}
+% whereas \verb?\shortvdotswithin*{=}? is the case with
% \begin{verbatim}
% \MTFlushSpaceAbove
-% & \vdotswithin{=} \\
+% \vdotswithin{=} &
% \MTFlushSpaceBelow
% \end{verbatim}
-% whereas \verb?\shortvdotswithin*{=}? is the case with
-% \verb?\vdotswithin{=} & \\?. This also means one cannot write more
-% on the line when using \verb?\shortvdotswithin? or the starred
-% version. But one can de-construct the macro and arrive at
+% Note how \verb?\MTFlushSpaceBelow? implicitly adds a \verb?\\? at
+% the end of the line. Thus one cannot have more on the line when
+% using \verb?\shortvdotswithin? or the starred version. But, if
+% needed, one can de-construct the macro and arrive at
% \begin{verbatim}
% \begin{alignat*}{3}
% A&+ B &&= C &&+ D \\
@@ -2635,8 +2650,8 @@ colorlinks,
% \subsection{Split fractions}
%
% \begin{codesyntax}
-% \SpecialUsageIndex{\splitfrac}\cs{splitfrac}\marg{numer}\marg{denom}\texttt{~~}
-% \SpecialUsageIndex{\splitdfrac}\cs{splitdfrac}\marg{numer}\marg{denom}
+% \SpecialUsageIndex{\splitfrac}\cs{splitfrac}\marg{start line}\marg{continuation}\\
+% \SpecialUsageIndex{\splitdfrac}\cs{splitdfrac}\marg{start line}\marg{continuation}
% \end{codesyntax}
% \cttPosting{Michael J.~Downes}{2001/12/06}
% These commands provide split fractions e.g., multiline fractions:
@@ -2666,6 +2681,160 @@ colorlinks,
% }
% {z}
% \]
+% The difference between \cs{splitfrac} and \cs{splitdfrac} is that
+% the former forces its arguments to be typeset in text-mode math, the
+% latter does not.
+%
+% \medskip\noindent \textbf{Note:} If you try to nest \cs{splitfrac}
+% inside each other you may need to add \cs{mathstrut} to the first
+% argument of the nested fraction to get the spacing look even. It is
+% not added by default as often a more cramped looked is desired:
+% \begin{verbatim}
+% \[
+% \frac{
+% \splitfrac{xy + xy + xy + xy + xy}
+% {
+% \splitfrac{xy + xy + xy + xy + xy}
+% {+ xy + xy + xy + xy}
+% }
+% }
+% {z}
+% =\frac{
+% \splitfrac{xy + xy + xy + xy + xy}
+% {
+% \splitfrac{\mathstrut xy + xy + xy + xy + xy}
+% {+ xy + xy + xy + xy}
+% }
+% }
+% {z}
+% \]
+% \end{verbatim}
+% \[
+% \frac{
+% \splitfrac{xy + xy + xy + xy + xy}
+% {
+% \splitfrac{xy + xy + xy + xy + xy}
+% {+ xy + xy + xy + xy}
+% }
+% }
+% {z}
+% =\frac{
+% \splitfrac{xy + xy + xy + xy + xy}
+% {
+% \splitfrac{\mathstrut xy + xy + xy + xy + xy}
+% {+ xy + xy + xy + xy}
+% }
+% }
+% {z}
+% \]
+% Note how the line spaces aren't even on the left hand side.
+%
+% For even more control, one can use \env{aligned} or \env{gathered}
+% instead of \cs{splitfrac}.
+%
+%
+% \newpage
+%
+% \section{New additions}
+%
+% \subsection{Variable math strut}
+% \begin{codesyntax}
+% \SpecialUsageIndex{\xmathstrut}\cs{xmathstrut}\oarg{depth increase}\marg{increase}
+% \end{codesyntax}
+% \FeatureRequest{Frank Mittelbach}{2020} In typography we use
+% \emph{struts} to ensure specific line spacing. In text we have the
+% \cs{strut} and in math \cs{mathstrut}. Both have no width, but
+% equals the height and depth of an »(« from the current text/math
+% font and size. In math we often need to make minute adjustments in
+% macro definitiones etc. The \emph{extended} math strut
+% \cs{xmathstrut} allows to \emph{increase} (decrease if negative)
+% the math strut in two ways.
+%
+% For an \meta{increase} (a decimal number), say~\verb|0.1|,
+% \begin{center}
+% \verb|\xmathstrut{0.1}|
+% \end{center}
+% will give you a new strut where 10\% of the \emph{total height of
+% the normal math stut} (\verb|\mathstrut=\mathstrut{0}|) will be
+% added to both \emph{the height} and \emph{the depth} of the
+% original strut (thus 20\% gets added in total). On the other hand
+% \begin{center}
+% \verb|\xmathstrut[0.2]{0.1}|
+% \end{center}
+% will result in a strut where 20\% is added to the depth and 10\% is
+% added to the height, resulting in a strut that is 30\% larger than
+% normal.
+%
+% The following example is inspired (with permission) from an example
+% showcasing \cs{xmathstrut} in the upcoming third edition of
+% \emph{The LaTeX Companion}. The example is very relevant as the
+% entries of the \env{cases(*)} environment are typeset in \emph{text
+% style} math and thus may end up looking quite
+% squished.\footnote{Which is why Frank suggested the macro
+% (including its implementation) in the first place.}
+% \[
+% \begin{cases*}
+% \frac{\frac{ x-1 }{ x-\sin x} }{ \sqrt{ 1 -x }} & $x >0$ \\
+% 0 & otherwise
+% \end{cases*}
+% \qquad\text{vs.}\qquad
+% \begin{cases*}
+% \frac{\frac{ \xmathstrut{0.1} x-1 }{ \xmathstrut{0.25} x-\sin x} }{\xmathstrut{0.4} \sqrt{ 1 -x }} & $x >0$ \\
+% 0 & otherwise
+% \end{cases*}
+% \]
+% \begin{verbatim}
+% \[ \begin{cases*}
+% \frac{\frac{ x-1 }{ x-\sin x} }{ \sqrt{ 1 -x }} & $x >0$ \\
+% 0 & otherwise
+% \end{cases*}
+% \qquad\text{vs.}\qquad
+% \begin{cases*}
+% \frac{ \frac{ \xmathstrut{0.1} x-1 }
+% { \xmathstrut{0.25} x-\sin x} }
+% {\xmathstrut{0.4} \sqrt{ 1 -x } } & $x >0$ \\
+% 0 & otherwise
+% \end{cases*} \]
+% \end{verbatim}
+%
+% To showcase the optional argument, it is
+% probably easiest to make the strut visible. Here you'll see that
+% \verb|\mathstrut| and \verb|\xmathstrut{0}| is the same:
+% \newcommand\vfb[1]{\begingroup\fboxsep=0pt\boxed{\,#1\,}\endgroup}
+% \[
+% \llap{\rlap{\rule{18mm}{0.1pt}}\quad}a \vfb{\mathstrut} \ \vfb{\xmathstrut{0}}\
+% \vfb{\xmathstrut{0.5} } \ \vfb{\xmathstrut{-0.1} }\ \vfb{\xmathstrut[0.5]{0}} a
+% \]
+% \begin{verbatim}
+% \newcommand\vfb[1]{\begingroup\fboxsep=0pt\boxed{\,#1\,}\endgroup}
+% \[
+% a \vfb{\mathstrut} \ % normal strut
+% \vfb{\xmathstrut{0}} \ % just 0 => normal strut
+% \vfb{\xmathstrut{0.5} } \ % twice as large 50% + 50%
+% \vfb{\xmathstrut{-0.1} } \ % negative gives something smaller
+% \vfb{\xmathstrut[0.5]{0}} a % change only the depth
+% \]
+% \end{verbatim}
+% -- the last box showcases a strut where we have only changed the
+% depth of the strut. One can see \verb|\xmathstrut[B]{0}| kind of the
+% opposite of \verb|\smash[b]{...}|, the former makes the depth larger
+% and the latter ignores the depth.
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
%
%
%
@@ -2676,6 +2845,10 @@ colorlinks,
%
%
%
+%
+%
+%
+%
%
%
%
@@ -2789,10 +2962,12 @@ colorlinks,
% Ellen Swanson,
% \emph{Mathematics into type}.
% American Mathematical Society, updated edition, 1999.
-% Updated by Arlene O'Sean and Antoinette Schleyer.
+% Updated by Arlene O'Sean and Antoinette Schleyer. Available from
+% the AMS at \url{http://www.ams.org/arc/styleguide/mit-2.pdf}
+%
% \bibitem{TBT}
% Victor Eijkhout, \emph{\TeX\ by Topic, A Texnician's Reference}, 2007.
-% Freely available at \url{http://ctan.org/tex-archive/info/texbytopic}.
+% Freely available at \url{https://ctan.org/pkg/texbytopic}.
% \end{thebibliography}
%
%
@@ -2806,7 +2981,7 @@ colorlinks,
% \begin{macrocode}
%<*package>
\ProvidesPackage{mathtools}%
- [2020/01/17 v1.23 mathematical typesetting tools]
+ [2020/03/24 v1.24 mathematical typesetting tools]
% \end{macrocode}
% \changes{v1.10}{2011/02/12}{Might as well make sure that we need the
% latest version of \texttt{mhsetup}}
@@ -3361,17 +3536,20 @@ colorlinks,
% \begin{macro}{\xLeftrightarrow}
%
% These are straight adaptions from \pkg{amsmath}.
+% \changes{v1.24}{2020/03/13}{Added spaces to move the argument away
+% from the arrow head in \cs{xLeftarrow}, \cs{xRightarrow} and
+% \cs{xLeftrightarrow}. Suggested by FM}
% \begin{macrocode}
\providecommand*\xleftrightarrow[2][]{%
\ext@arrow 3095\MT_leftrightarrow_fill:{#1}{#2}}
\def\MT_leftrightarrow_fill:{%
\arrowfill@\leftarrow\relbar\rightarrow}
\providecommand*\xLeftarrow[2][]{%
- \ext@arrow 0055{\Leftarrowfill@}{#1}{#2}}
+ \ext@arrow 0055{\Leftarrowfill@}{\ #1}{\ #2}}
\providecommand*\xRightarrow[2][]{%
- \ext@arrow 0055{\Rightarrowfill@}{#1}{#2}}
+ \ext@arrow 0055{\Rightarrowfill@}{#1\ }{#2\ }}
\providecommand*\xLeftrightarrow[2][]{%
- \ext@arrow 0055{\Leftrightarrowfill@}{#1}{#2}}
+ \ext@arrow 0055{\Leftrightarrowfill@}{\ #1\ }{\ #2\ }}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -6138,7 +6316,7 @@ colorlinks,
{\textstyle#1\quad\hfill}%
{\textstyle\hfill\quad\mathstrut#2}%
}
-\newcommand*\splitdfrac[2]{%
+\newcommand*\splitdfrac[2]{%
\genfrac{}{}{0pt}{0}{#1\quad\hfill}{\hfill\quad\mathstrut #2}%
}
% \end{macrocode}
@@ -6266,6 +6444,66 @@ colorlinks,
% \end{macrocode}
% \end{macro}
%
+% \section{Additional features 2020–}
+%
+% The selection below is meant for additions addeed 2020 onwards that
+% are not integrated into existing macros.
+%
+% \subsection{\cs{xmathstrut}}
+%
+% \begin{macro}{\xmathstrut@box}
+% \begin{macro}{\xmathstrut@dim}
+% \begin{macro}{\xmathstrut}
+% \begin{macro}{\xmathstrut@}
+% \begin{macro}{\xmathstrut@do}
+% Suggested and implemented by Frank Mittelbach. The basic idea is to
+% add (or subtract) a fraction of the total height of the normal math
+% strut to both the height and depth of the new strut. The input from
+% the user is suppose to be a decimal number. The value zero results
+% in no change compared to the normal math strut.
+% \changes{v1.24}{2020/03/06}{Added \cs{xmathstrut}}
+% \begin{macrocode}
+\newbox\xmathstrut@box
+\newdimen\xmathstrut@dim
+\def\xmathstrut{\@dblarg\xmathstrut@}
+\def\xmathstrut@[#1]#2{%
+ \def\xmathstrut@dp{#1}%
+ \vphantom{\mathpalette\xmathstrut@do{#2}}%
+}
+% \end{macrocode}
+% The algorithm is simple. Start by recording the size (a box) of \verb|$($|
+% in the current style (via \verb|\mathpalette|)
+% \begin{macrocode}
+\def\xmathstrut@do#1#2{%
+ \setbox\xmathstrut@box\hbox{$#1($}%)%emacs
+ \xmathstrut@dim\dimexpr\ht\xmathstrut@box+\dp\xmathstrut@box\relax
+% \end{macrocode}
+% Then manipulate the size of the box by adding the user input times
+% the total height of the original box to the height and depth
+% respectfully.
+% \begin{macrocode}
+ \ht\xmathstrut@box\dimexpr\ht\xmathstrut@box
+ +#2\xmathstrut@dim
+ \relax
+ \dp\xmathstrut@box\dimexpr\dp\xmathstrut@box
+ +\xmathstrut@dp\xmathstrut@dim
+ \relax
+% \end{macrocode}
+% In the end ship the modified box (it is typeset inside a \verb|\vphantom|).
+% \begin{macrocode}
+ \box\xmathstrut@box}
+
+% \end{macrocode}
+% Do note that this means that for \verb|\xmathstrut{0.1}| 10\% is
+% added twice. But it make explaining \verb|\xmathstrut[0.2]{0.1}| a
+% lot easier as it is just 10\% added to the height and 20\% added to
+% the depth.
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% This is the end of the \pkg{mathtools} package.
% \begin{macrocode}
%</package>
diff --git a/macros/latex/contrib/mathtools/mathtools.ins b/macros/latex/contrib/mathtools/mathtools.ins
new file mode 100644
index 0000000000..7cb4e3727c
--- /dev/null
+++ b/macros/latex/contrib/mathtools/mathtools.ins
@@ -0,0 +1,94 @@
+%%
+%% This is file `mathtools.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% mathtools.dtx (with options: `install')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2002-2011 by Morten Hoegholm
+%% Copyright (C) 2012-2019 by Lars Madsen
+%% Copyright (C) 2012-2020 by Lars Madsen, the LaTeX3 project
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is
+%% Lars Madsen and the LaTeX3 project
+%%
+%% This work consists of the main source file mathtools.dtx
+%% and the derived files
+%% mathtools.sty, mathtools.pdf, mathtools.ins, mathtools.drv.
+%%
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: mathtools 2020/01/17 v1.23}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2002-2011 by Morten Hoegholm
+Copyright (C) 2012-2019 by Lars Madsen
+Copyright (C) 2012-2020 by Lars Madsen, the LaTeX3 project
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+This Current Maintainer of this work is
+Lars Madsen and the LaTeX3 project
+
+This work consists of the main source file mathtools.dtx
+and the derived files
+ mathtools.sty, mathtools.pdf, mathtools.ins, mathtools.drv.
+
+\endpreamble
+
+\generate{%
+ \file{mathtools.ins}{\from{mathtools.dtx}{install}}%
+ \file{mathtools.drv}{\from{mathtools.dtx}{driver}}%
+ \usedir{tex/latex/mh}%
+ \file{mathtools.sty}{\from{mathtools.dtx}{package}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* mathtools.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `mathtools.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+\endinput
+%%
+%% End of file `mathtools.ins'.
diff --git a/macros/latex/contrib/mathtools/mathtools.pdf b/macros/latex/contrib/mathtools/mathtools.pdf
index 2c468fadbe..f779170580 100644
--- a/macros/latex/contrib/mathtools/mathtools.pdf
+++ b/macros/latex/contrib/mathtools/mathtools.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathtools/mhsetup.dtx b/macros/latex/contrib/mathtools/mhsetup.dtx
index ffd0833dba..b44eea12cb 100644
--- a/macros/latex/contrib/mathtools/mhsetup.dtx
+++ b/macros/latex/contrib/mathtools/mhsetup.dtx
@@ -1,7 +1,8 @@
% \iffalse meta-comment
%
% Copyright (C) 2002-2007,2010 by Morten Hoegholm
-% Copyright (C) 2017 by Lars Madsen
+% Copyright (C) 2017-2019 by Lars Madsen
+% Copyright (C) 2020- by Lars Madsen, The LaTeX3 team
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -13,7 +14,9 @@
%
% This work has the LPPL maintenance status "maintained".
%
-% This Current Maintainer of this work is Lars Madsen <daleif@math.au.dk>
+% This Current Maintainer of this work is Lars Madsen
+% <daleif@math.au.dk>, the LaTeX3 team,
+% https://github.com/latex3/mathtools
%
% This work consists of the main source file mhsetup.dtx
% and the derived files
@@ -78,7 +81,8 @@
This is a generated file.
Copyright (C) 2002-2007,2010 by Morten Hoegholm
-Copyright (C) 2017 by Lars Madsen
+Copyright (C) 2017-2019 by Lars Madsen
+Copyright (C) 2020- by Lars Madsen, The LaTeX3 team
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -90,7 +94,8 @@ LaTeX version 2005/12/01 or later.
This work has the LPPL maintenance status "maintained".
-This Current Maintainer of this work is Lars Madsen <daleif@math.au.dk>
+This Current Maintainer of this work is Lars Madsen
+<daleif@math.au.dk>, The LaTeX3 team https://github.com/latex3/mathtools
This work consists of the main source file mhsetup.dtx
and the derived files
@@ -163,7 +168,7 @@ and the derived files
%
% \title{The \pkg{mhsetup} package\thanks{This package has version
% number \fileversion, last revised on \filedate.}}
-% \author{Morten H\o gholm (maintained by Lars Madsen)}
+% \author{Morten H\o gholm (maintained by Lars Madsen and The LaTeX3 team)}
% \date{\filedate}
% \maketitle
%
diff --git a/macros/latex/contrib/mathtools/mhsetup.pdf b/macros/latex/contrib/mathtools/mhsetup.pdf
index 8f608c74ae..2af0d0843c 100644
--- a/macros/latex/contrib/mathtools/mhsetup.pdf
+++ b/macros/latex/contrib/mathtools/mhsetup.pdf
Binary files differ
diff --git a/macros/latex/contrib/media9/ChangeLog b/macros/latex/contrib/media9/ChangeLog
index 9174c425f6..8b2e4840c0 100644
--- a/macros/latex/contrib/media9/ChangeLog
+++ b/macros/latex/contrib/media9/ChangeLog
@@ -1,3 +1,15 @@
+2020-03-24
+ * v1.09 : media9.sty
+ * v0.40 : pdfbase.sty
+ * fix : pdfbase.sty, dvisvgm driver: supporting latest dvisvgm-2.9.1
+ additions
+
+2020-03-23
+ * v1.08 : media9.sty
+ * v0.39 : pdfbase.sty
+ * fix : pdfbase.sty, dvisvgm driver: minor change of transform attr in
+ \pbs_pdfxform:nnnnn to cope with a dvisvgm issue
+
2020-03-20
* v1.07 : media9.sty
* v0.38 : pdfbase.sty
diff --git a/macros/latex/contrib/media9/doc/media9.pdf b/macros/latex/contrib/media9/doc/media9.pdf
index 83893419db..8bf6dd7aec 100644
--- a/macros/latex/contrib/media9/doc/media9.pdf
+++ b/macros/latex/contrib/media9/doc/media9.pdf
Binary files differ
diff --git a/macros/latex/contrib/media9/media9.sty b/macros/latex/contrib/media9/media9.sty
index d179c794f9..e393be3d76 100644
--- a/macros/latex/contrib/media9/media9.sty
+++ b/macros/latex/contrib/media9/media9.sty
@@ -37,8 +37,8 @@
\RequirePackage{xparse}
\RequirePackage{atbegshi}
-\def\g@mix@date@tl{2020/03/20}
-\def\g@mix@version@tl{1.07}
+\def\g@mix@date@tl{2020/03/24}
+\def\g@mix@version@tl{1.09}
\ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl}
{acrobat-9/X compatible media}
diff --git a/macros/latex/contrib/media9/pdfbase.sty b/macros/latex/contrib/media9/pdfbase.sty
index 6281a190c4..c6bc82b002 100644
--- a/macros/latex/contrib/media9/pdfbase.sty
+++ b/macros/latex/contrib/media9/pdfbase.sty
@@ -159,8 +159,8 @@
\RequirePackage{expl3}
\RequirePackage{l3keys2e}
-\def\g@pbs@date@tl{2020/03/20}
-\def\g@pbs@version@tl{0.38}
+\def\g@pbs@date@tl{2020/03/24}
+\def\g@pbs@version@tl{0.40}
\ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl}
{driver independent access to low-level PDF features}
@@ -750,10 +750,7 @@
\makebox[\c_zero_dim][l]{
\raisebox{\c_zero_dim}[\c_zero_dim][\c_zero_dim]{
\special{dvisvgm:raw~{?nl}<defs>{?nl}
- <
- g~transform='scale(-1)translate({?x},{?y})scale(-1)'~#4~
- id='pbs@obj\int_use:N\g_pbs_obj_int'~class='xform'
- >
+ <g~transform='translate({?(-(x))},{?(-(y))})'~#4>
}
\special{dvisvgm:bbox~lock}
\box_use_drop:N#5
diff --git a/macros/latex/contrib/sidenotes/caesar_book.cls b/macros/latex/contrib/sidenotes/caesar_book.cls
index b04a244d91..685f736aef 100644
--- a/macros/latex/contrib/sidenotes/caesar_book.cls
+++ b/macros/latex/contrib/sidenotes/caesar_book.cls
@@ -1,5 +1,5 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{caesar_book.cls}[2016/04/21 v1.00 Caesar book]
+\ProvidesFile{caesar_book.cls}[2020/03/24 v1.00a Caesar book]
% Load the amsmath and the mhchem package before loading microtype
\RequirePackage{amsmath}% better math handling
\RequirePackage[version=3]{mhchem}% chemical formulas
@@ -42,8 +42,8 @@
\RequirePackage{ifluatex}
\ifluatex% in LuaLateX we use fontspec
\RequirePackage{fontspec}%
- \RequirePackage[vargreek-shape=TeX]{unicode-math}%
- \setmathfont{Asana-Math.otf}% asana math works well with palatino
+ \RequirePackage{unicode-math}%
+ \setmathfont{TeX Gyre Pagella Math}% use corresponding math font
\setmainfont[Ligatures=TeX, Numbers=OldStyle]{Tex Gyre Pagella}% free Palatino clone
\setmonofont{Tex Gyre Cursor}% works okay with palatino
\setsansfont{Tex Gyre Heros}% work okay with palatino
@@ -95,6 +95,7 @@
% compatibility with T-L
%
% titlepage
+\RequirePackage{ifthen}
\newcommand{\publisher}[1]{\gdef\caesar@publisher{#1}}
\gdef\caesar@thesis{}
\newcommand{\thesis}[1]{\gdef\caesar@thesis{#1}}
diff --git a/macros/latex/contrib/sidenotes/caesar_example.pdf b/macros/latex/contrib/sidenotes/caesar_example.pdf
index 5994080cb9..ddf07bf4e2 100644
--- a/macros/latex/contrib/sidenotes/caesar_example.pdf
+++ b/macros/latex/contrib/sidenotes/caesar_example.pdf
Binary files differ
diff --git a/macros/latex/contrib/sidenotes/sidenotes.dtx b/macros/latex/contrib/sidenotes/sidenotes.dtx
index aecb8611f6..7c67ad4fd1 100644
--- a/macros/latex/contrib/sidenotes/sidenotes.dtx
+++ b/macros/latex/contrib/sidenotes/sidenotes.dtx
@@ -2,7 +2,7 @@
%
% sidenotes.dtx
%
-% Copyright (C) 2011-2014 by Andy Thomas <andythomas(at)web.de>
+% Copyright (C) 2011-2020 by Andy Thomas <andythomas(at)web.de>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/sidenotes/sidenotes.ins b/macros/latex/contrib/sidenotes/sidenotes.ins
index b43f2a68ba..d6b5ebd8a8 100644
--- a/macros/latex/contrib/sidenotes/sidenotes.ins
+++ b/macros/latex/contrib/sidenotes/sidenotes.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2011-2014 by Andy Thomas <andythomas(at)web.de>
+%% Copyright (C) 2011-2020 by Andy Thomas <andythomas(at)web.de>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/sidenotes/sidenotes.pdf b/macros/latex/contrib/sidenotes/sidenotes.pdf
index e9cdcbc636..31e4fb443e 100644
--- a/macros/latex/contrib/sidenotes/sidenotes.pdf
+++ b/macros/latex/contrib/sidenotes/sidenotes.pdf
Binary files differ