summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-09-23 03:03:31 +0000
committerNorbert Preining <norbert@preining.info>2020-09-23 03:03:31 +0000
commit6639178e654b36f7065a0cdbab783d687550e896 (patch)
tree409157d10a0e6d3d9c828b926a60d23195eb4abb /macros/latex
parent1a37a060977fa92be44dcee0fb99c59e46023afe (diff)
CTAN sync 202009230303
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/gammas/README8
-rw-r--r--macros/latex/contrib/gammas/example_bibliography.bib18
-rw-r--r--macros/latex/contrib/gammas/gammas.cls84
-rw-r--r--macros/latex/contrib/gammas/gammas_template.tex37
-rw-r--r--macros/latex/contrib/knowledge/README.md28
-rw-r--r--macros/latex/contrib/knowledge/knowledge-code.dtx76
-rw-r--r--macros/latex/contrib/knowledge/knowledge.pdfbin729897 -> 733968 bytes
-rw-r--r--macros/latex/contrib/knowledge/knowledge.tex283
-rw-r--r--macros/latex/contrib/ltxcmds/README.md12
-rw-r--r--macros/latex/contrib/ltxcmds/ltxcmds.dtx155
-rw-r--r--macros/latex/contrib/ltxcmds/ltxcmds.pdfbin393914 -> 397106 bytes
-rw-r--r--macros/latex/contrib/lwarp/README.txt2
-rw-r--r--macros/latex/contrib/lwarp/lwarp.dtx2999
-rw-r--r--macros/latex/contrib/lwarp/lwarp.ins9
-rw-r--r--macros/latex/contrib/lwarp/lwarp.pdfbin2923838 -> 2970521 bytes
-rwxr-xr-xmacros/latex/contrib/lwarp/lwarpmk.lua2
16 files changed, 2834 insertions, 879 deletions
diff --git a/macros/latex/contrib/gammas/README b/macros/latex/contrib/gammas/README
index 0bf325af8d..36ffce4d29 100644
--- a/macros/latex/contrib/gammas/README
+++ b/macros/latex/contrib/gammas/README
@@ -1,16 +1,16 @@
This directory contains the LaTeX2e class `gammas'.
- Version: 1.0; February 11, 2019
+ Version: 1.1; September 22, 2020
This is the official document class for typesetting journal articles
-for GAMM Archive for Students (GAMMAS), the open-access online yournal
+for GAMM Archive for Students (GAMMAS), the open-access online journal
run by the GAMM Juniors.
A small template (gammas_template.tex) is provided to show the usage
-of the documentclass. For more details we refer to the educational
+of the documentclass. For more details, we refer to the educational
sample article 'How to write an article for GAMMAS and a longer title'
available at the journal webpage under
https://doi.org/10.14464/gammas.v1i1.417
-Copyright 2019, GAMM Juniors. This ma­te­rial is sub­ject to the LaTeX
+Copyright 2020, GAMM Juniors. This ma­te­rial is sub­ject to the LaTeX
Project Public Li­cense 1.3c.
diff --git a/macros/latex/contrib/gammas/example_bibliography.bib b/macros/latex/contrib/gammas/example_bibliography.bib
index 0ceaaed622..ae038bed6f 100644
--- a/macros/latex/contrib/gammas/example_bibliography.bib
+++ b/macros/latex/contrib/gammas/example_bibliography.bib
@@ -1,12 +1,14 @@
-@book{higham1998handbook,
- title={Handbook of Writing for the Mathematical Sciences},
- author={Higham, N.J.},
- isbn={978-0-898714-20-3},
+@book{higham2020handbook,
+ author = {Nicholas J. Higham},
+ title = {Handbook of Writing for the Mathematical Sciences},
+ publisher = {Society for Industrial and Applied Mathematics},
series={Miscellaneous Titles in Applied Mathematics Series},
- year={1998},
- publisher={Society for Industrial and Applied Mathematics},
- doi={10.1137/1.9780898719550}
-}
+ address = {Philadelphia, PA, USA},
+ edition = {Third},
+ year = {2020},
+ isbn = {978-1-611976-09-0},
+ pages = {xxi+353}
+ }
@article{fehr2016best,
title={Best practices for replicability, reproducibility and reusability of computer-based experiments exemplified by model reduction software},
diff --git a/macros/latex/contrib/gammas/gammas.cls b/macros/latex/contrib/gammas/gammas.cls
index 1da7df12d1..ca9f93640b 100644
--- a/macros/latex/contrib/gammas/gammas.cls
+++ b/macros/latex/contrib/gammas/gammas.cls
@@ -1,8 +1,8 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Copyright of Matthias Bartelt, Benjamin Unger and Dominik Kern %
-% email: dominik.kern@mb.tu-chemnitz.de %
-% This work may be distributed and/or modified under the %
-% conditions of the LaTeX Project Public License version 1.3c %
+% Copyright of Matthias Bartelt, Benjamin Unger and Dominik Kern %
+% email cf. website https://www.bibliothek.tu-chemnitz.de/ojs/index.php/GAMMAS/about/contact %
+% This work may be distributed and/or modified under the %
+% conditions of the LaTeX Project Public License version 1.3c %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -12,7 +12,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{gammas}[2019/02/11 v1.0 class definition for GAMM Archiv for Students]
+\ProvidesClass{gammas}[2020/09/22 v1.1 class definition for GAMM Archiv for Students]
\LoadClass[11pt, twoside, numbers=noenddot]{scrartcl}
@@ -38,6 +38,7 @@
\RequirePackage{amsthm}
\RequirePackage{mathtools}
\RequirePackage{mathrsfs}
+\RequirePackage{subdepth} % all subscripts at the same position
% graphics/color packages
\RequirePackage{graphicx}
@@ -56,7 +57,12 @@
\setitemize{parsep=0pt,itemsep=0pt}
\setenumerate{parsep=0pt,itemsep=0pt}
\setdescription{parsep=0pt,itemsep=0pt,labelindent=1em,font=\textit}
-\RequirePackage{lastpage}
+\RequirePackage[margin=10pt,font=small,labelfont=bf,labelsep=endash]{caption}
+
+% lastpage can be referred to with this label instead of loading package lastpage
+\AtEndDocument{%
+ \label{LastPage}%
+}
% Packages for units
\RequirePackage[binary-units=true]{siunitx}
@@ -166,6 +172,13 @@
\def\gammauthore#1{\def\GAMMAUTHORE{#1}} \def\GAMMAUTHORE{}
\def\gammauthorf#1{\def\GAMMAUTHORF{#1}} \def\GAMMAUTHORF{}
+\def\gammauthoraorcid#1{\def\GAMMAUTHORAORCID{#1}} \def\GAMMAUTHORAORCID{}
+\def\gammauthorborcid#1{\def\GAMMAUTHORBORCID{#1}} \def\GAMMAUTHORBORCID{}
+\def\gammauthorcorcid#1{\def\GAMMAUTHORCORCID{#1}} \def\GAMMAUTHORCORCID{}
+\def\gammauthordorcid#1{\def\GAMMAUTHORDORCID{#1}} \def\GAMMAUTHORDORCID{}
+\def\gammauthoreorcid#1{\def\GAMMAUTHOREORCID{#1}} \def\GAMMAUTHOREORCID{}
+\def\gammauthorforcid#1{\def\GAMMAUTHORFORCID{#1}} \def\GAMMAUTHORFORCID{}
+
\def\gammaddressa#1{\def\GAMMADDRESSA{#1}} \def\GAMMADDRESSA{}
\def\gammaddressb#1{\def\GAMMADDRESSB{#1}} \def\GAMMADDRESSB{}
\def\gammaddressc#1{\def\GAMMADDRESSC{#1}} \def\GAMMADDRESSC{}
@@ -176,10 +189,20 @@
\newcommand{\inst}[1]{\textsuperscript{\textit{#1}}}
\newcommand{\corauth}{\textsuperscript{,$\star$}}
-
\def\gammauthorhead#1{\def\GAMMAUTHORHEAD{#1}} \def\GAMMAUTHORHEAD{}
\def\gammcorrespondence#1{\def\GAMMCORRESPONDENCE{#1}} \def\GAMMCORRESPONDENCE{}
-\def\gammsupervisor#1{\def\GAMMSUPERVISOR{#1}} \def\GAMMSUPERVISOR{}
+
+\def\gammsupervisor{\@ifnextchar[{\@gammsupervisors}{\@gammsupervisor}}
+\def\@gammsupervisor#1{\def\GAMMSUPERVISOR{#1}}
+\def\@gammsupervisors[#1]#2{\@gammsupervisortext{#1}\def\GAMMSUPERVISOR{#2}}
+\def\GAMMSUPERVISOR{}
+\def\GAMMSUPERVISORTEXT{supervisor}
+\newcommand{\@gammsupervisortext}[1]{%
+ \ifthenelse{\equal{#1}{multiple}}%
+ {\def\GAMMSUPERVISORTEXT{supervisors}}
+ {}
+ }
+
\def\gammotherpublication#1{\def\GAMMOTHERPUBLICATION{#1}} \def\GAMMOTHERPUBLICATION{}
\def\gammbibfilename#1{\def\GAMMBIBFILENAME{#1}} \def\GAMMBIBFILENAME{mybibfile}
@@ -192,7 +215,8 @@
% definition for title this option must be set
\newcommand*{\gammtitle}[1]{\def\gammtitle{#1}}
-
+% command for ORCiD - ORCiD logo is included by publisher
+\newcommand{\orcid}[1]{\,\href{https://orcid.org/#1}{$\bigcirc$}\,}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -203,7 +227,7 @@
\newenvironment{gammabstract}{\indent\textbf{Abstract:}\begin{itshape}}{\end{itshape}\par}
\newenvironment{gammkeywords}{\indent\textbf{Keywords:}}{\par}
\newenvironment{gammacknowledgement}{\bigskip\indent\textbf{Acknowledgements:}}{\par}
-\newenvironment{gammacode}{\bigskip\indent\textbf{Code Availability:}}{\par}
+\newenvironment{gammacode}{\bigskip\indent\hypertarget{gammasSec:codeAvailability}{\textbf{Code Availability:}}}{\par}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -286,26 +310,50 @@
\begin{center}%
{\LARGE \textbf{\gammtitle{}}\par}%
\vspace{1cm}%
- \GAMMAUTHORA{}%
+ \GAMMAUTHORA{}%
+ \ifx \GAMMAUTHORAORCID\empty%
+ \else%
+ \orcid{\GAMMAUTHORAORCID}
+ \fi%
\ifx\GAMMAUTHORB\empty%
\else%
, \GAMMAUTHORB{}%
+ \ifx \GAMMAUTHORBORCID\empty%
+ \else%
+ \orcid{\GAMMAUTHORBORCID}
+ \fi%
\fi%
\ifx\GAMMAUTHORC\empty%
\else%
, \GAMMAUTHORC{}%
+ \ifx \GAMMAUTHORCORCID\empty%
+ \else%
+ \orcid{\GAMMAUTHORCORCID}
+ \fi%
\fi%
\ifx\GAMMAUTHORD\empty%
\else%
, \GAMMAUTHORD{}%
+ \ifx \GAMMAUTHORDORCID\empty%
+ \else%
+ \orcid{\GAMMAUTHORDORCID}
+ \fi%
\fi%
\ifx\GAMMAUTHORE\empty%
\else%
, \GAMMAUTHORE{}%
+ \ifx \GAMMAUTHOREORCID\empty%
+ \else%
+ \orcid{\GAMMAUTHOREORCID}
+ \fi%
\fi%
\ifx\GAMMAUTHORF\empty%
\else%
, \GAMMAUTHORF{}%
+ \ifx \GAMMAUTHORFORCID\empty%
+ \else%
+ \orcid{\GAMMAUTHORFORCID}
+ \fi%
\fi%
\\\vspace{0.5cm}\par%
\ifx\GAMMADDRESSA\empty%
@@ -341,7 +389,7 @@
{\footnotesize * corresponding author: \GAMMCORRESPONDENCE}\par%
\ifx\GAMMSUPERVISOR\empty%
\else%
- {\footnotesize supervisor: \GAMMSUPERVISOR}\par%
+ {\footnotesize \GAMMSUPERVISORTEXT: \GAMMSUPERVISOR}\par%
\fi%
\ifx\GAMMOTHERPUBLICATION\empty%
\else%
@@ -428,11 +476,21 @@
\ifx\GAMMLOADOPTBIBTEX\empty%
\else% for bibtex
\RequirePackage[numbers,sort]{natbib}
- \newcommand{\setbib}[1]{\bibliographystyle{gammas}\begingroup \hbadness 10000\relax\bibliography{#1}\endgroup}%
+ \newcommand{\setbib}[1]{\bibliographystyle{gammas}
+ \begingroup
+ \hypersetup{urlcolor=GAMMgreen}
+ \hbadness 10000\relax\bibliography{#1}
+ \endgroup}%
\newcommand{\setbiber}[1]{}%
\fi%
+\AtBeginDocument{%
+ \setbiber{\GAMMBIBFILENAME}%
+}
+\AtEndDocument{%
+ \setbib{\GAMMBIBFILENAME}%
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% end %
diff --git a/macros/latex/contrib/gammas/gammas_template.tex b/macros/latex/contrib/gammas/gammas_template.tex
index 7e8aebaa43..48ac3a4ab7 100644
--- a/macros/latex/contrib/gammas/gammas_template.tex
+++ b/macros/latex/contrib/gammas/gammas_template.tex
@@ -3,7 +3,6 @@
% class options %
% options can be modified %
% %
-% %
% -> usebiber - default option: uses the biblatex package %
% -> usebibtex - use the classical bibtex with plain format %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -26,26 +25,30 @@
\gammauthorb{Author two\inst{a}}
\gammauthorc{Author three\inst{b}}
+% authors are encouraged to include their orcid in the manuscript
+% a circle placeholder will appear next to the author in the header
+\gammauthoraorcid{1234-5678-1234-5678}
+
% Use the short forms of the author names for the header
\gammauthorhead{O.~Author, T.~Author, T.~Author}
-% author affiliations (full postal adress must be provided in the online form but not on the manuscript)
+% author affiliations (full postal address must be provided in the online form but not on the manuscript)
\gammaddressb{Technische Universität Berlin, Berlin, Germany}
\gammaddressa{Technische Universität Chemnitz, Chemnitz, Germany} %
% additional information of the corresponding author
\gammcorrespondence{email@example.com}
-% Supervisor
-\gammsupervisor{FirstName LastName, TU Gammburg, Asymtopia} % optional, if supervisor wants to be mentioned
+% Supervisor: optional, if the supervisor wants to be mentioned
+\gammsupervisor{FirstName LastName, TU Gammburg, Asymtopia}
% name of the bibfile without '.bib'
\gammbibfilename{example_bibliography}
-
+\usepackage{blindtext}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% newcommands %
-% this is optional but it makes live very easy %
+% this is optional but it makes live very easy %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Theorem-like environments
@@ -58,12 +61,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% begindocument start %
% do not modify this %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\setbiber{\GAMMBIBFILENAME}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\begin{document}
\maketitle
-
+%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% begindocument end %
% do not modify this %
@@ -84,7 +86,7 @@
\end{gammkeywords}
\section{Introduction}
-This is the introduction.
+This is the introduction. The authors are encouraged to include their \textsf{ORCiD} in the manuscript. The circle next to the author will be replaced by the logo during copyediting.
\section{Contents}
This is some scientific content. Make sure to use the commands from the \texttt{siunitx} package for all numbers. For instance, we have
@@ -93,10 +95,10 @@ This is some scientific content. Make sure to use the commands from the \texttt{
{\sisetup{fixed-exponent=-9,scientific-notation=fixed}\SIrange{80e-9}{120e-9}{\kilogram}}, \qquad \num{5.4321e-9}.
\end{gather*}
For more details about the typesetting in GAMMAS, we refer to \cite{kern2019gammas}. For a concise introduction to scientific writing
-in mathematics we refer to the excellent monograph \cite{higham1998handbook}. Consult the documentation of the \texttt{amsmath}\footnote{\url{https://ctan.org/pkg/amsmath}} package for useful hints on typesetting equations in \LaTeX{}.
+in mathematics we refer to the excellent monograph~\cite{higham2020handbook}. Consult the documentation of the \texttt{amsmath}\footnote{\url{https://ctan.org/pkg/amsmath}} package for useful hints on typesetting equations in \LaTeX{}.
\section{Summary}
-This is a great summary.
+This is a great summary.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% code availability block (not optional) %
@@ -104,13 +106,13 @@ This is a great summary.
% Every accepted article for GAMMAS must contain a code availability statement.
% You can modify the following example to account for your requirements.
\begin{gammacode}
- The source code of the implementations used to compute the presented results is available as supplementary material and can be obtained under the
+ Both, the \LaTeX{} source code for reference~\cite{kern2019gammas} as well as the python-script for the simulation, are available as supplementary material and can be obtained under the
\begin{center}
- \href{https://doi.org/10.14464/gammas.v1i1.417}{doi:~10.14464/gammas.v1i1.417}.
+ \href{https://doi.org/10.14464/gammas.v1i1.417}{DOI:~10.14464/gammas.v1i1.417}.
\end{center}
- % If you want to attach the code as supplementary material, then this doi will be the same as the doi for your article and inserted by the copyeditor. Otherwise you can use another stable location.
+ % If you want to attach the code as supplementary material, then this DOI will be the same as the DOI for your article and inserted by the copyeditor. Otherwise, you can use another stable location.
%
- If the source code is not shared, a simple statement should be given for explanation, e.g.\ for license issues, non-disclosure agreements or trade secrets. For \emph{best practices} for code we refer to \cite{fehr2016best}.
+ If the source code is not shared, a simple statement should be given for explanation, e.g., for license issues, non-disclosure agreements or trade secrets. For \emph{best practices} for code we refer to \cite{fehr2016best}.
\end{gammacode}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -126,11 +128,10 @@ This is a great summary.
\appendix
\section{Appendix}
-This is an (optional) appendix
+This is an (optional) appendix.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% enddocument start %
% do not modify this %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\setbib{\GAMMBIBFILENAME}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/knowledge/README.md b/macros/latex/contrib/knowledge/README.md
index 5d3e671a10..e0aaa063a6 100644
--- a/macros/latex/contrib/knowledge/README.md
+++ b/macros/latex/contrib/knowledge/README.md
@@ -1,31 +1,31 @@
%%%%%%%%
This directory contains the package
- name: knowledge
- license: LaTeX Project Public License version 1.2 or above
- version: v1.23
- date: 2020/04/25
- author: Thomas Colcombet
- mail: thomas.colcombet@irif.fr
- web: https://www.irif.fr/~colcombe/knowledge_en.html
+ name: knowledge
+ license: LaTeX Project Public License version 1.2 or above
+ version: v1.24
+ date: 2020/09/22
+ author: Thomas Colcombet
+ mail: thomas.colcombet@irif.fr
+ web: https://www.irif.fr/~colcombe/knowledge_en.html
-Purpose:
+### Purpose:
The knowledge package for LaTeX offers a systematic way to handle
notions/concepts/terms throughout a document. In combination with
- hyperref, it is used for easily handling links inside a document (every
+ `hyperref`, it is used for easily handling links inside a document (every
use of a concept is linked to its introduction), or outside the document
(for centralizing the url's in a separate part). It also helps building an
index, and deals with scoping of concepts as well as mathematics.
It is designed to--as much as possible--not interfere with the writing of
the document.
-Install:
+### Install:
It is sufficient to have the file knowledge.sty accessible by LaTeX.
- It can be produced by `make knowledge.sty' if necessary.
- The documentation is in the file knowledge.pdf.
- A starting example can be found in knowledge-example.tex.
+ It can be produced by `make knowledge.sty` if necessary.
+ The documentation is in the file `knowledge.pdf`.
+ A starting example can be found in `knowledge-example.tex`.
-Content of the file knowledge-sources.zip:
+### Content of knowledge-sources.zip:
- README.md: this file generated while compiling knowledge.ins,
the content is in knowledge-code.dtx
- knowledge.sty: the package file (generated using knowledge.ins)
diff --git a/macros/latex/contrib/knowledge/knowledge-code.dtx b/macros/latex/contrib/knowledge/knowledge-code.dtx
index c76b3f0aac..947040dac9 100644
--- a/macros/latex/contrib/knowledge/knowledge-code.dtx
+++ b/macros/latex/contrib/knowledge/knowledge-code.dtx
@@ -23,7 +23,7 @@
%
% \iffalse
%<head>\usepackage{expl3}
-%<head>\ProvidesExplPackage{knowledge}{2020/03/05}{1.23}{}
+%<head>\ProvidesExplPackage{knowledge}{2020/09/22}{1.24}{}
%<*driver>
\def\knowledgecode{active}
\input{knowledge.tex}
@@ -56,6 +56,7 @@
% \changes{1.21}{2020/01/26}{bug fix} %
% \changes{1.22}{2020/03/05}{improvements} %
% \changes{1.23}{2020/04/25}{minor change} %
+% \changes{1.24}{2020/09/22}{silent option} %
% \GetFileInfo{knowledge.sty} %
% \DoNotIndex{}
%
@@ -73,31 +74,31 @@
% \begin{macrocode}
This directory contains the package
- name: knowledge
- license: LaTeX Project Public License version 1.2 or above
- version: v1.23
- date: 2020/04/25
- author: Thomas Colcombet
- mail: thomas.colcombet@irif.fr
- web: https://www.irif.fr/~colcombe/knowledge_en.html
+ name: knowledge
+ license: LaTeX Project Public License version 1.2 or above
+ version: v1.24
+ date: 2020/09/22
+ author: Thomas Colcombet
+ mail: thomas.colcombet@irif.fr
+ web: https://www.irif.fr/~colcombe/knowledge_en.html
-Purpose:
+### Purpose:
The knowledge package for LaTeX offers a systematic way to handle
notions/concepts/terms throughout a document. In combination with
- hyperref, it is used for easily handling links inside a document (every
+ `hyperref`, it is used for easily handling links inside a document (every
use of a concept is linked to its introduction), or outside the document
(for centralizing the url's in a separate part). It also helps building an
index, and deals with scoping of concepts as well as mathematics.
It is designed to--as much as possible--not interfere with the writing of
the document.
-Install:
+### Install:
It is sufficient to have the file knowledge.sty accessible by LaTeX.
- It can be produced by `make knowledge.sty' if necessary.
- The documentation is in the file knowledge.pdf.
- A starting example can be found in knowledge-example.tex.
+ It can be produced by `make knowledge.sty` if necessary.
+ The documentation is in the file `knowledge.pdf`.
+ A starting example can be found in `knowledge-example.tex`.
-Content of the file knowledge-sources.zip:
+### Content of knowledge-sources.zip:
- README.md: this file generated while compiling knowledge.ins,
the content is in knowledge-code.dtx
- knowledge.sty: the package file (generated using knowledge.ins)
@@ -200,10 +201,11 @@ Content of the file knowledge-sources.zip:
% \begin{macrocode}
\cs_new:Nn\knowledge_info:n
{\msg_info:nnn{knowledge}{knowledge~info}{#1}}
-\cs_new:Nn\knowledge_warning:n
- {\msg_warning:nnn{knowledge}{knowledge~warning}{#1}}
+\cs_new:Nn\knowledge_warning:n{
+ \msg_warning:nnn{knowledge}{knowledge~warning}{#1}
+ }
\cs_new:Nn\knowledge_error:n
- {\msg_error:nnn{knowledge}{knowledge~error}{#1}}
+ {\msg_error:nnn{knowledge}{knowledge~error}{#1}}
% \end{macrocode}
% The command \csintro{\knowledge_werror:Nn} takes a boolean as argument, and behaves like \cs{\knowledge_error:n} if it is true, and \cs{\knowledge_warning:n} otherwise.
% \begin{macrocode}
@@ -220,6 +222,33 @@ Content of the file knowledge-sources.zip:
\cs_generate_variant:Nn\knowledge_warning:n{x}
\cs_generate_variant:Nn\knowledge_error:n{x}
% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Npn\knowledge_warning:nn{
+ \bool_if:NTF\knowledge_warningsilent_bool
+ \use_none:nn
+ \msg_warning:nn
+}
+\cs_new:Npn\knowledge_warning:nnn{
+ \bool_if:NTF\knowledge_warningsilent_bool
+ \use_none:nnn
+ \msg_warning:nnn
+}
+\cs_new:Npn\knowledge_warning:nnnn{
+ \bool_if:NTF\knowledge_warningsilent_bool
+ \use_none:nnnn
+ \msg_warning:nnnn
+}
+\cs_generate_variant:Nn\knowledge_warning:nnnn{nnxx}
+\cs_new:Npn\knowledge_warning:nnnnn{
+ \bool_if:NTF\knowledge_warningsilent_bool
+ \use_none:nnnnn
+ \msg_warning:nnnnn
+}
+\cs_generate_variant:Nn\knowledge_warning:nnnnn{nnxxx}
+% \end{macrocode}
+%
+%
%\AP We provide now the `official' messages \csintro{knowledge~recursion}, \csintro{knowledge~unknown},
% \csintro{knowledge~unknown~in~scope}, \csintro{knowledge~unknown~label}, \csintro{package~required} and \csintro{knowledge~exists}.
% \begin{macrocode}
@@ -440,6 +469,11 @@ Content of the file knowledge-sources.zip:
\KnowledgeConfigureBooleanOption[\knowledge_warningstrict_bool]{strict}
% \end{macrocode}
% \begin{macrocode}
+\bool_new:N\knowledge_warningsilent_bool
+\bool_set_false:N\knowledge_warningsilent_bool
+\KnowledgeConfigureBooleanOption[\knowledge_warningsilent_bool]{silent}
+% \end{macrocode}
+% \begin{macrocode}
\bool_new:N\knowledge_configuration_quotation_bool
\KnowledgeConfigureBooleanOptionTF[\knowledge_configuration_quotation_bool]{quotation}{\klactivatequotation}{\kldeactivatequotation}
\KnowledgeConfigureTrigger{protect~quotation}{\kl_protect_environment_quotation:n{#1}}
@@ -2799,7 +2833,7 @@ Content of the file knowledge-sources.zip:
\cs_new:Nn\knowledge_kl_error_unknown_firsttime:
{\bool_if:cTF{\knowledge_variant_var:n{unknownwarning_bool}}
{\IfKnowledgePaperModeF{
- \msg_warning:nnxxx{ knowledge }{ knowledge~unknown }
+ \knowledge_warning:nnxxx{ knowledge }{ knowledge~unknown }
{\exp_not:V\knowledge_kl_key_tl}
{\exp_not:V\knowledge_kl_namespace_tl}
{\seq_use:Nn\knowledge_visible_instances_seq{|}}}
@@ -2833,7 +2867,7 @@ Content of the file knowledge-sources.zip:
\cs_new:Nn\knowledge_kl_error_unknown_in_scope_firsttime:
{\bool_if:cTF{\knowledge_variant_var:n{unknownwarning_bool}}
{\IfKnowledgePaperModeF{
- \msg_warning:nnxxx{ knowledge }{ knowledge~unknown~in~scope }
+ \knowledge_warning:nnxxx{ knowledge }{ knowledge~unknown~in~scope }
{\exp_not:V\knowledge_kl_key_tl}
{\exp_not:V\knowledge_kl_namespace_tl}
{\knowledge_kl_linkscope_tl}}}{}
@@ -2869,7 +2903,7 @@ Content of the file knowledge-sources.zip:
}
%
\IfKnowledgePaperModeF{
- \msg_warning:nnxx{ knowledge }{ knowledge~unknown~label }
+ \knowledge_warning:nnxx{ knowledge }{ knowledge~unknown~label }
{\exp_not:V\knowledge_kl_key_tl}
{\knowledge_kl_linkscope_tl}}
%
diff --git a/macros/latex/contrib/knowledge/knowledge.pdf b/macros/latex/contrib/knowledge/knowledge.pdf
index 272989ef3c..46e28720fa 100644
--- a/macros/latex/contrib/knowledge/knowledge.pdf
+++ b/macros/latex/contrib/knowledge/knowledge.pdf
Binary files differ
diff --git a/macros/latex/contrib/knowledge/knowledge.tex b/macros/latex/contrib/knowledge/knowledge.tex
index 98fc76744c..7250cc4907 100644
--- a/macros/latex/contrib/knowledge/knowledge.tex
+++ b/macros/latex/contrib/knowledge/knowledge.tex
@@ -6,7 +6,7 @@
\usepackage{expl3}
\usepackage{hyperref}
%\usepackage{complexity}
-\usepackage[quotation,scope]{knowledge}
+\usepackage[quotation,scope,silent]{knowledge}
\knowledgeconfigure{visible anchor points=false}
\knowledgeconfigure{notion,diagnose line=false}
\GetFileInfo{knowledge.sty}
@@ -84,6 +84,13 @@
\let\subsubsubsection\paragraph
+\knowledge{notion}
+ | semigroup@ex1
+ | semigroups@ex1
+
+\knowledge{notion}
+ | semigroup morphism@ex1
+
\knowledge{not implemented}{link=to be done}
\knowledge{to be done}{color=DarkRed}
@@ -150,8 +157,6 @@
-\knowledge{_monoid}{style=kl unknown}
-\knowledge{_semigroup}{style=kl unknown}
@@ -295,6 +300,7 @@
\knowledge{protect link}{directive}
\knowledge{strict}{directive}
+\knowledge{silent}{directive}
\knowledge{emphasize}{directive}
\knowledge{underline}{directive}
\knowledge{up}{directive}
@@ -386,6 +392,7 @@
\knowledge{complexity}{package,url={https://www.ctan.org/pkg/complexity}}
\knowledge{expl3}{package,url={https://www.ctan.org/pkg/expl3}}
\knowledge{hyperref}{package,url={https://www.ctan.org/pkg/hyperref}}
+ \knowledge{acmart}{package,url={https://www.ctan.org/pkg/acmart}}
\knowledge{tikzcd}{package,url={https://www.ctan.org/pkg/tikz-cd}}
\knowledge{standalone}{package,url={https://www.ctan.org/pkg/standalone}}
\knowledge{xcolor}{package,url={https://www.ctan.org/pkg/xcolor}}
@@ -743,8 +750,10 @@ I have seen Till Tantau who explained me how to test whether a material is displ
\item[2019-12-03] Corrected bug in the scope access. V1.20.
\item[2020-01-25] Corrected bug when "knowledge@@package" is used without "hyperref@@package" (thanks to Rémi Nollet).
\item[2020-01-25] Corrected bug that made the kaux file not stabilize (thanks to Rémi Nollet). V1.21 on CTAN.
-\item[2020-03-05] No \texttt{hidelinks} and \texttt{breaklinks} are automatically activated unless the new option \kl{no patch} is activated. Doc update. V1.22 on CTAN.
+\item[2020-03-05] Now \texttt{hidelinks} and \texttt{breaklinks} are automatically activated unless the new option \kl{no patch} is activated. Doc update. V1.22 on CTAN.
\item[2020-04-25] Made the package compatible with 2016 versions of LaTeX. Useful when \texttt{knowledge.sty} is included with and compile in arXiv. V1.23 on CTAN.
+\item[2020-05-02] Doc update ("acmart@@package" colors, thanks to Daniela Petri\c san).
+\item[2020-09-22] Adding the "silent" option as suggested by Patrick Lambein-Monette. V1.24 on CTAN
\end{compactdesc}
\normalsize
%\restoregeometry
@@ -803,10 +812,6 @@ Then, in the preamble (or in an external file), one uses commands of the form ei
\cs\knowledge\{\kl{url=}\{https://en.wikipedia.org/wiki/LaTeX\}\}\par
\qquad\kl{|}\quad latex
\end{code}
-or equivalently
-\begin{code}
-\cs\knowledge\{latex\}\{\kl{url=}\{https://en.wikipedia.org/wiki/LaTeX\}\}
-\end{code}
This configures the text `\texttt{latex}' to be associated with the sole directive \kl{url=},
which means an hyperreference to this address.
@@ -837,9 +842,10 @@ This package has been written for use in \kl[urllatex]{latex}.
But in fact, I would like `\texttt{latex}' to also be properly typeset \LaTeX{}, and in \textcolor{gray}{gray}.
This requires to load the package with the \kl(option){xcolor} option (for being able to use colors, obviously), or by loading the package "xcolor@@package" before, and then modify the \cs{\knowledge} command using
extra "directives":
-\begin{code}[10.9cm]
-\cs\knowledge\{latex\}\{\kl{url=}https://en.wikipedia.org/wiki/LaTeX,\\
-\indent\qquad\kl{text=}\cs\LaTeX,~\kl{color=}gray\}
+\begin{code}%[10.9cm]
+\cs\knowledge\{\kl{url=}\{https://en.wikipedia.org/wiki/LaTeX\},\par
+ \qquad~\qquad\kl{text=}\cs\LaTeX,~\kl{color=}gray\}\par
+\qquad\kl{|}\quad latex
\end{code}
\noindent
yields with the same text
@@ -860,10 +866,7 @@ It happens very often that there are several ways to name a notion, because of c
the result is that the text `\textit{text}' is displayed, but urls, colors, etc from `\textit{knowledge}' are used.
Another more systematic way to do it is to declare synonyms.
-This can be achieved using a `\vbar' separated list of texts in the \kl[\knowledge synonyms]{optional parameter} of the\cs{\knowledge} command, it is possible to add a list of `synonyms', such as in:
-%
-\marginpar{\begin{hint}
- Another syntax (called the "`\vbar'-notation") is:
+This obtained by adding the corresponding lines:
\begin{code}[4.35cm]
\cs{\knowledge}\{"url="\dots\}\\
\indent~\vbar~Donald Ervin Knuth\\
@@ -871,50 +874,34 @@ This can be achieved using a `\vbar' separated list of texts in the \kl[\knowled
\indent~\vbar~D. Knuth\\
\indent~\vbar~Knuth
\end{code}
- Other possibilities are to use the
- "synonym" or "link=" directives.
- \end{hint}}
-%
-\begin{code}[12.4cm]
-\cs{\knowledge}\{latex\}[LaTeX\vbar Latex\vbar LATEX]\\
-\indent\qquad\{\kl{url=}http://en.wikipedia.org/wiki/LaTeX,\\
-\indent\qquad\kl{text=}\cs{\LaTeX}, \kl{color=}gray\}
-\end{code}
-This is interesting for people's name that can be displayed in various ways depending on the context. Hence
-%
- \begin{code}[12.4cm]
- \cs\knowledge\{Donald Ervin Knuth\}[Donald Knuth\vbar Knuth]\\
- \indent\qquad\{\kl{url=}https://fr.wikipedia.org/wiki/Donald\_Knuth\}
- \end{code}
\noindent would allow
\begin{center}
\smallcode{\cs\kl\{Knuth\}}~~~as well as~~~\smallcode{\cs\kl\{Donald Knuth\}},\\
or simply \smallcode{\kl"Knuth\kl"}~~~as well as~~~\smallcode{\kl"Donald Knuth\kl"} and so on
\end{center} to all point to the same web address.
-It is even more convenient to use it for nouns that are sometimes in plural form or at the beginning of a sentence. Hence:
-\begin{code}[12.4cm]
-\cs\knowledge\{group\}[groups\vbar Groups\vbar group morphism\\
-\indent~~~~~~~~~~\vbar group morphisms\vbar Group morphisms]\\
-\indent~~~~~ \{\kl{url=}https://en.wikipedia.org/wiki/Group\_(mathematics)\}
-\end{code}
-\noindent
-or the more readable and maintainable:
+It is even more convenient to use it for nouns that are sometimes in plural form or at the beginning of a sentence. There is also a scoping feature that helps distinguishing the same names in a different context. For instance:
\begin{code}[12.4cm]
\cs\knowledge\{\kl{url=}https://en.wikipedia.org/wiki/Group\_(mathematics)\}
-\indent~~~\vbar~~group\\
-\indent~~~\vbar~~groups\\
-\indent~~~\vbar~~Groups\\
-\indent~~~\vbar~~group morphism\\
-\indent~~~\vbar~~group morphisms\\
-\indent~~~\vbar~~Group morphisms
+\qquad\indent~~~\vbar~~group\\
+\qquad\indent~~~\vbar~~groups\\
+\qquad\indent~~~\vbar~~Groups\\
+\qquad\indent~~~\vbar~~group morphism\\
+\qquad\indent~~~\vbar~~group morphisms\\
+\qquad\indent~~~\vbar~~Group morphisms\\
+\qquad\indent~~~\vbar~~morphism@GROUP\\
+\qquad\indent~~~\vbar~~morphisms@GROUP\\
+\qquad\indent~~~\vbar~~Morphisms@GROUP
\end{code}
\end{variation}
\noindent
makes it possible to use the notions in many contexts:
\begin{code}
-\kl"Groups\kl" form a category when equipped with \kl"group morphisms\kl".
+\kl"Groups\kl" form a category when equipped with \kl"group morphisms\kl". Consider now some \kl"morphism@@GROUP\kl" \$\cs\alpha\$ ...
\end{code}
-
+In the above code all quoted parts send the reader to the same wikipedia page about groups.
+Note in particular that \smallcode{\kl"morphism@@GROUP\kl"} simply displays `morphism' at compilation.
+The \smallcode{GROUP} part is a "scope".
+In another part of the document, \smallcode{\kl"morphism@@RING\kl"} can be safely using while using an unspecialised \smallcode{\kl"morphism\kl"} would become quickly unmanageable.
@@ -946,108 +933,120 @@ Then write the document using \cs{\intro} (or \kl{""...""} if \kl(option){quotat
\cs{\kl} (or \kl{"..."} if \kl(option){quotation} is activated) when it is used. For instance:
\begin{code}[12cm]
\cs\AP{}
-A \cs\intro\{semigroup\} is an ordered pair \verb|$(S,\cdot)$| where \verb|$\cdot$| is an
-associative binary operator over~\verb|$S$|.\\
+A \cs\intro\{semigroup\} is an ordered pair \verb|$(S,\cdot)$| in which \verb|$S$| is a set and \verb|$\cdot$| is an
+associative binary operator over~\verb|$S$|. A \cs\intro\{semigroup morphism\} is \kl{[...]}\\
\kl{[...]}\\
-\cs{\AP}
-A \cs\intro\{monoid\} \verb|$(M,\cdot,1)$| is a \cs\kl\{semigroup\} \verb|$(M,\cdot)$| together
-with a neutral element \verb|$1$|.
+Consider a \cs\kl\{semigroup morphism\} between \cs\kl\{semigroups\} \verb|$S$| and \verb|$T$|. \kl{[...]}
\end{code}
\noindent or when the "quotation notation" is activated:
\begin{code}[12cm]
\cs\AP{}
-A \kl{""}semigroup\kl{""} is an ordered pair \verb|$(S,\cdot)$| where \verb|$\cdot$| is an
-associative binary operator over~\verb|$S$|.\\
-\kl{[...]}\\
+A \kl{""}semigroup\kl{""} is an ordered pair \verb|$(S,\cdot)$| in which \verb|$S$| is a set and \verb|$\cdot$| is an
+associative binary operator over~\verb|$S$|.
\cs\AP{}
-A \kl{""}monoid\kl{""} \verb|$(M,\cdot,1)$| is a \kl"semigroup\kl" \verb|$(M,\cdot)$| together
-with a neutral element \verb|$1$|.
+A \kl{""}semigroup morphism\kl{""} is \kl{[...]}\\
+\kl{[...]}\\
+Consider a \kl"semigroup morphism\kl" between \kl"semigroups\kl" \verb|$S$| and \verb|$T$|. \kl{[...]}
\end{code}
This yields
\knowledgeconfigure{visible anchor points=true}%
-\marginpar{Note that the \cs{\AP} command is made visible thanks to a red corner.}
-\begin{PDFoutput}[10cm]
-\AP A \kl[_semigroup]{semigroup} is an ordered pair $(S,\cdot)$ where $\cdot$ is an
-associative binary operator over~$S$.\\
+\marginpar{Note that the \cs{\AP} command is made visible thanks to a red corner. This red corner is shifted left in order to fall in the margin.}
+\begin{PDFoutput}[11cm]
+\AP A \intro[_semigroup]{semigroup} is an ordered pair $(S,\cdot)$ in which~$S$ is a set and $\cdot$ is an
+associative binary operator over~$S$.
+\AP A \intro[_semigroup morphism]{semigroup morphism} is \kl{[...]}\\
\kl{[...]}\\
-\AP A \kl[_monoid]{monoid}
-$(M,\cdot,1)$ is a \kl[_semigroup]{semigroup} $(M,\cdot)$ together
-with a neutral element~$1$.
+Consider a \kl[_semigroup morphism]{semigroup morphism} between \kl[_semigroups]{semigroups} $S$ and $T$. \kl{[...]}
\end{PDFoutput}
\knowledgeconfigure{visible anchor points=false}%
-\kl{Undefined knowledges} are in brown (it is an important feature that the compilation does not fail: undefined knowledges should not interfere with the writing of the document, which is the main activity of the writer).
-One can now see the list of such problems in the file `\kl{filename.diagnose}'.
-One can in particular find in the "`Undefined knowledges' section":
+\marginpar{"Undefined knowledges" also yield warnings during the compilation. These can be avoided using the "silent" option.}%
+\kl{Undefined knowledges} are displayed in orange the first time, and in brown the subsequent ones (it is an important feature that the compilation does not fail: undefined knowledges should not interfere with the main activity of the writer which is writing).
+One can now see the list of such problems in the file `\kl{filename.diagnose}', in particular in the "`Undefined knowledges' section":
\begin{verbatim}
-\knowledge{semigroup}{}
-\knowledge{monoid}{}\end{verbatim}
-Which means that both `monoid' and `semigroup' are unknown \kl{knowledges}.
+\knowledge{ignore}
+ | semigroup
+ | semigroups
+ | semigroup morphism
+\end{verbatim}\noindent
+which means that the strings `\texttt{semigroup}', `\texttt{semigroups}' and `\texttt{semigroup morphism}' are used but unknown knowledges.
\AP
-To solve this, let us copy these two (or more) lines in the paper\footnote{It is good practice to use a separate file, something like `paper-knowledge.tex'.}, adding the \kl{notion} directive (which is a configured version of the \kl{autoref} directive, meaning essentially that you want to use the features of the \cs{\intro} command), i.e., in the preamble:
+To solve this, let us copy these four lines in the preamble\footnote{It is good practice to use a separate file, something like `paper-knowledge.tex'.}, replacing ignore by the \kl{notion} \kl{directive} and separating it into two blocks. We obtain:
\begin{code}[6.7cm]
-\cs\knowledge\{semigroup\}\{\kl{notion}\}\\
-\cs\knowledge\{monoid\}\{\kl{notion}\}
+\cs\knowledge\{\kl{notion}\}\\
+\indent~~~\klbn|~~semigroup\\
+\indent~~~\klbn|~~semigroups\\
+\cs\knowledge\{\kl{notion}\}\\
+\indent~~~\klbn|~~semigroup morphism
\end{code}
+\noindent
+This informally means that `\texttt{semigroup}' and `\texttt{semigroups}' are two strings that represent the same notion, and that
+`\texttt{semigroup morphism}' is a different one.
+
The result is then (after two compilations):
%
\knowledgeconfigure{visible anchor points=true}%
-\begin{PDFoutput}[10cm]
-\knowledge{semigroup}{scope=document,notion}%
-\knowledge{monoid}{scope=document,notion}%
-\AP A \intro{semigroup} is an ordered pair $(S,\cdot)$ where $\cdot$ is an
-associative binary operator over~$S$.
+\marginpar{Note that the \cs{\AP} command is made visible thanks to a red corner.}
+\begin{PDFoutput}[11cm]
+\AP A \intro(ex1){semigroup} is an ordered pair $(S,\cdot)$ in which~$S$ is a set and $\cdot$ is an
+associative binary operator over~$S$.
+\AP A \intro(ex1){semigroup morphism} is \kl{[...]}\\
\kl{[...]}\\
-\AP A \intro{monoid} $(M,\cdot,1)$ is a \kl{semigroup} $(M,\cdot)$ together
-with a neutral element~$1$.
+Consider a \kl(ex1){semigroup morphism} between \kl(ex1){semigroups} $S$ and $T$. \kl{[...]}
\end{PDFoutput}
\knowledgeconfigure{visible anchor points=false}%
%
-Clicking on `semigroup' now jumps to the place where it was introduced, and very precisely at the
-location of the red corner depicting the presence of the \cs{\AP}-command.
-If now one adds the option \kl{electronic} while loading the package, then the red corners disappear as well as the brownish undefined knowledges which become black. When using the option \kl{paper}, the links are still there, but all texts are in black.
+Clicking on `semigroups' now jumps to the place where it was introduced, and very precisely at the
+location of the red corner depicting the presence of the \cs{\AP}-command before. The same goes for `semigroup morphism'.
+If now one adds the option \kl{electronic} while loading the package, then the red corners disappear as well as the undefined knowledges which become black. When using the option \kl{paper}, the links are still there, but all texts are in black.
-\AP
-It is very often the case that for plain english (or other languages) some terms can be used in several forms; verbs can be conjugated; nouns can be plural, and so on.
-So usually the lines added to the file look more like:
-\begin{code}[10.7cm]
-\cs\knowledge\{semigroup\}[semigroups\vbar Semigroups]\{\kl{notion}\}\\
-\cs\knowledge\{monoid\}[monoid\vbar Monoids]\{\kl{notion}\}
-\end{code}
-\noindent
-or, using the more readable "`\vbar'-notation":
-\begin{code}[10.7cm]
+A more complete example would look as follows:
+\begin{code}[6.7cm]
\cs\knowledge\{\kl{notion}\}\\
\indent~~~\klbn|~~semigroup\\
\indent~~~\klbn|~~semigroups\\
\indent~~~\klbn|~~Semigroups\\
\cs\knowledge\{\kl{notion}\}\\
-\indent~~~\klbn|~~monoid\\
-\indent~~~\klbn|~~monoids\\
-\indent~~~\klbn|~~Monoids
-\end{code}
-Now, using a text like
-\begin{code}[11cm]
-\kl"Monoids\kl" are simply \kl{"}semigroups\kl{"} in which\dots
-\end{code}
-\noindent will properly be linked to the definition of a semigroup and a monoid.
+\indent~~~\klbn|~~semigroup morphism\\
+\indent~~~\klbn|~~semigroup morphisms\\
+\indent~~~\klbn|~~morphism@SG\\
+\indent~~~\klbn|~~morphisms@SG
+\end{code}\noindent
+The most interesting part consists of the two last lines. These define `\texttt{morphism}' and `\texttt{morphisms}' to represent the same notion as `\texttt{semigroup morphism}' when in the scope `\texttt{SG}' (a convenient abbreviation chosen by the writer for meaning `semigroup'). This is particularly useful for separating morphisms of semigroups from, say, ring morphisms.
+Now, using \smallcode{Take a \cs\kl\{morphism\} ...} would yield an unknown knowledge. However,
+\smallcode{Take a \cs\kl(SG)\{morphism\} ...} or \smallcode{Take a \kl"morphism@@SG\kl" ...} would yield
+\begin{PDFoutput}[6cm]
+Take a \kl(ex1)[semigroup morphism]{morphism} ...
+\end{PDFoutput}\noindent
+which is properly linked to a semigroup morphism.
+One can in particular imagine that \smallcode{\kl"morphism@@RG\kl"} would instead represent ring morphisms.
+
+Sometimes, one does not want to expand the knowledge base because the word is not specific. For instance
+ \smallcode{These \cs\kl[semigroup]\{algebraic objects\} \kl{[...]}}, or
+ \smallcode{These \kl"algebraic objects@semigroup\kl"\} \kl{[...]}},
+yields
+\begin{PDFoutput}[6cm]
+These \kl(ex1)[semigroup]{algebraic objects} \kl{[...]}
+\end{PDFoutput}\noindent
+The term is properly linked to the definition of semigroups.
Finally, in particular for large documents, it is good to have an "index". For this,
one should load the package "makeidx@@package" before "knowledge@@package".
-Then use it normally: putting \cs{\makeindex} in the preamble and \cs{\printindex} at the end of the document. The \cs{knowledge} commands are not easily adapted:
+Then use it normally: putting \cs{\makeindex} in the preamble and \cs{\printindex} at the end of the document.
+Finally, the \cs{knowledge} commands are adapted in a straightforward manner:
\begin{code}[10.7cm]
-\cs\knowledge\{"notion","index="semigroup\}\\
-\indent~~~\vbar~~semigroup\\
-\indent~~~\vbar~~semigroups\\
-\indent~~~\vbar~~Semigroups\\
-\cs\knowledge\{"notion","index="monoid\}\\
-\indent~~~\vbar~~monoid\\
-\indent~~~\vbar~~monoids\\
-\indent~~~\vbar~~Monoids
-\end{code}
-\noindent
-Now, the index (after running \texttt{makeidx}) contains all entries and references to the use of semigroups and monoids.
+\cs\knowledge\{\kl{notion},"index="semigroup\}\\
+\indent~~~\klbn|~~semigroup\\
+\indent~~~\klbn|~~semigroups\\
+\indent~~~\klbn|~~Semigroups\\
+\cs\knowledge\{\kl{notion},"index="semigroup morphism\}\\
+\indent~~~\klbn|~~semigroup morphism\\
+\indent~~~\klbn|~~semigroup morphisms\\
+\indent~~~\klbn|~~morphism@SG\\
+\indent~~~\klbn|~~morphisms@SG
+\end{code}\noindent
+Now, the index (after running \texttt{makeidx}) contains all entries and references to the use of semigroups and semigroup morphisms.
See Section~\ref{subsection:makeidx option} for more details on making an index.
%
@@ -1061,16 +1060,22 @@ See Section~\ref{subsection:makeidx option} for more details on making an index.
\label{subsection:mathematics scenario}
The examples above show various techniques for using \kl{knowledges} for enhancing the information associated to terms. In fact, these techniques are not incompatible with mathematics. Imagine, for instance that you would like each time a macro \kl[@token]{\monoid} is met, to display $\mathcal M$, you would do for instance:
-\marginpar{%
- \begin{hint}
- Defining new macros is best done using \cs{\newrobustcmd}
- (of the "etoolbox@@package" package), rather than \cs{\newcommand} as usual in \LaTeX.
- This remark is general independently of the use of "knowledge@@package"
- \end{hint}.}
\begin{code}[7cm]
\cs\newrobustcmd\kl[@token]\monoid\{\cs\mathcal\ M\}
\end{code}\noindent
Imagine that furthermore, you would like to hyperlink to the definition of a monoid. A standard \cs{\kl} command does the job\footnote{It is highly advised to not use the "quotation notation" in math mode or macros.}:
+%
+\marginpar{%
+ \begin{hint}
+ Defining new macros is best done using \cs{\newrobustcmd}
+ (of the "etoolbox@@package" package), rather than \cs{\newcommand} as usual in \LaTeX.
+ This remark is general independently of the use of "knowledge@@package".
+ \end{hint}
+ \begin{hint}
+ The package "mathcommand@@package" offers severals capabilities for redefining commands for math mode.
+ See Section~\ref{subsubsection:mathcommand} for more.
+ \end{hint}}
+%
\begin{code}[9cm]
\cs\newrobustcmd\kl[@token]\monoid\{\cs\kl
monoid]\{\cs\mathcal\ M\}\}\\~
@@ -1249,6 +1254,7 @@ be used in the optional parameter of \cs{\usepackage} when loading the "knowledg
This is typically useful around, e.g. the table of contents.
\itemAP[\kl(option){quotation}] activates the "quotation notation", which allows to use \kl{"..."}, \kl{"...@..."} and \kl{"...@...@..."}
instead of \cs{\kl} commands and \kl{""...""}, \kl{""...@...""} and \kl{""...@...@...""} instead of the \cs{\intro} command.
+\itemAP[""silent""] is a Boolean option which, when activated, switches off all warnings during the compilation, but the recap ones at the end.
\itemAP[""strict""] is a Boolean option which, when activated, turns some warnings (for instance when a knowledge is redefined) into errors.
\itemAP[\kl{visible anchor points}] is an option that makes visible or invisible the \kl{anchor points} of the \cs{\AP} and \cs{\itemAP} commands. Usually, this is automatically set to true when the "composition mode" is used (the default),
and to false when the "paper mode" or the "electronic mode" are used.
@@ -1268,12 +1274,11 @@ A \intro{knowledge} is often informally used in this document. Essentially, it c
Internally, a \kl{knowledge} is identified by three components:
\begin{compactdesc}
\itemAP[The \intro{knowledge name}] is a \kl{tex} string that has almost no limitation (but being well balanced, and containing no $\sharp$). It is the text entered by the user for defining and using the \kl{knowledge}.
-\itemAP[The \intro{scope}] which is a simple string identifying where the \kl{knowledge} is usable. The scopes are generated by the system.
+\itemAP[The \intro{scope}] which is a simple string identifying where the \kl{knowledge} is usable. Scopes can be created by the user, or automatically generated by the system.
For instance, internally, each section will be uniquely named `\texttt{section-1}', `\texttt{section-2}', and so on (this is invisible for the user). Each \kl{knowledge} is primarily valid in
exactly one such \kl{scope}. \kl{Knowledges} defined in the preamble are given the \kl{scope} `\texttt{document}'.
- Usually, the user refers to scope using, for instance, labels.
\itemAP[The \intro{namespace}] is a simple string that is used for avoiding clashes. It is most of the time simply `\texttt{default}'. It is `\texttt{style}' for \kl{styles} (that are internally as knowledges).
- It is a possibility available to a developer to, when developing a new set of functionalities, use a different \kl{namespace} for avoiding clashes of names (for instance if one wants a french and an english set of knowledges that should not conflict, and would use separate sets of macros).
+ It is a possibility available to a developer to, when creating a new set of functionalities, use a different \kl{namespace} for avoiding clashes of names (for instance if one wants a french and an english set of knowledges that should not conflict, and would use separate sets of macros).
Usually, a normal user does not see \kl{namespaces}.
\end{compactdesc}
@@ -1286,7 +1291,7 @@ In this section, we describe the main commands that create \kl{knowledges}.
The main one is \cs{\knowledge}. It can also be used in combination with \cs{\knowledgedirective}, \cs{\knowledgestyle} and \cs{\knowledgedefault}.
\subsubsection{General description of the \cs{\knowledge} command}
-
+\label{subsubsection:knowledge command general}
The key command for introducing knowledges is \cs{\knowledge}.
There are two syntaxes. The standard one is:
\begin{center}
@@ -2379,12 +2384,13 @@ should point to the same introduction location.
\item[Variables] The more advanced case is when one wants to track variables. For instance, a macro variable~\cs\x\ could have a different meaning in two distinct theorems. This case is more similar to variables in a programming language, that have a scope.
Here the situation is slightly more complicated since a variable could be introduced in a theorem, and then used many pages later in a proof section for instance.
\end{description}
-The first use is fairly easy. The second one requires a bit more care. We review them one after the other.
+The first use is fairly easy. The second one requires a bit more care. We review them one after the other, after some advertisements for the "mathcommand@@package" package.
\subsubsection{Defining macros for math: the "mathcommand@@package" package}
+\label{subsubsection:mathcommand}
-Defining macros is standard in \TeX, and it should be used systematically in writing scientific documents, in particular
-when using the "knowledge@@package" package.
+Defining macros is standard in \TeX, and it should be used systematically in writing scientific documents.
+This is particularly true when using the "knowledge@@package" package.
The standard way in \LaTeX\ for defining macros is to use \cs\newcommand. However, the resulting macro, if it has
no optional parameters, is then expandable, and it is better to avoid it using instead \cs\newrobustcmd\ from the "etoolbox@@package"
package (it has the same syntax).
@@ -2407,10 +2413,10 @@ We shall use it in the advanced examples below. It allows:
\item The package also gives access to the exponents and indices as well as primes that follow a command (see the documentation).
\item It also has some facilities for disabling \LaTeX\ commands and provide suggestions of replacement (useful for remembering the macros and working with colleagues).
\item Finally, it offers some commodity for redefining many variables in one command.
- E.g. for defining \cs\calA, \cs\calB,\dots to be shortcuts for \smallcode{\cs\cal A}, \smallcode{\cs\cal B},\dots:
+ E.g. for defining \cs\calA, \cs\calB,\dots to be shortcuts for \smallcode{\cs\cal\{A\}}, \smallcode{\cs\cal\{B\}}, \dots:
\begin{code}
\cs\LoopCommands\{ABCDEFGHIJKLMNOPQRSTUVWXYZ\}[cal\#1]\par
- ~~~~\quad\{\cs\newmathcommand\#2\{\cs\cal~\#1\}\}
+ ~~~~\quad\{\cs\newmathcommand\#2\{\cs\cal\{\#1\}\}\}
\end{code}
\end{itemize}
@@ -2428,7 +2434,7 @@ Five points have to be kept in mind:
\item Use the control sequence of the macro itself as the "knowledge" name.
This does not cause problems and is easier to maintain.
\item Use the \cs{\intro*} notation for introducing macros.
-\item The surrounding space is broken by using the command \cs{\kl}. Commands like \cs\mathrel\ should be used to recover it.
+\item The surrounding typography is broken when using the command \cs{\kl} (if someone knows how to solve that, please contact me). Commands such as \cs\mathrel\ should be used to recover it.
\end{itemize}
These five points are illustrated in the following code:
\begin{code}
@@ -2446,8 +2452,8 @@ Two variation may be comfortable to use.
When writing a paper, in particular with coauthors, one may be tempted to not always use the macros designed for each case.
For helping to remember the macro, one can use instead (using the "mathcommand@@package" package):
\begin{code}
-\cs\disablecommand\cs\rho\\
-\cs\suggestcommand\cs\rho\{Use \cs\myFunction.\}\\
+\cs\disablecommand\cs\circ\\
+\cs\suggestcommand\cs\rho\{Use instead \cs\comp\ for function composition.\}\\
\cs\newrobustcmd\cs\myFunction\{\cs\kl[\cs\myFunction]\{\cs\LaTeXrho\}\}\\
\cs\knowledge\cs\myFunction\{notion\}\\
{[...]}\\
@@ -2461,7 +2467,7 @@ that in the definition of \cs\myFunction, \cs\LaTeXrho\ is used instead of~\cs\r
but~\cs\LaTeXrho\ gives access to its original meaning.
\paragraph{Redefining the original \TeX\ macro}
-Another situation is that one would like to use the \cs\rho\ control sequence for accessing our function instead of \cs\myFunction (simply because this is more convenient and easy to remember, and we know in advance that no confusion may arise).
+Another situation is that one would like to use the \cs\rho\ control sequence for accessing our function instead of \cs\myFunction\ (simply because this is more convenient and easy to remember, and we know in advance that no confusion may arise).
In this case, the "mathcommand@@package" package can also be of some help:
\begin{code}
\cs\renewmathcommand\cs\rho\{\cs\kl[\cs\rho]\{\cs\LaTeXrho\}\}\\
@@ -2504,7 +2510,7 @@ For obtaining this, this requires:
In this section, we present some fixes that have been added to help the user solve problems.
-\paragraph{Hyperref and twocolumn} It happens that the "hyperref@@package" and two-column mode yields a fatal error. This happens when a link spans across the boundary between two pages. This is an issue which is not related to the "knowledge@@package" package, but becomes severely more annoying when more links have to be used.
+\paragraph{Hyperref and twocolumn} It happens that the "hyperref@@package" and two-column mode together may yield a fatal error. This happens when a link spans across the boundary between two pages. This is an issue which is not related to the "knowledge@@package" package, but becomes severely more annoying when more links have to be used.
A \emph{workaround} can be tried by using using
\begin{center}
\smallcode{\cs\knowledgeconfigure\{""fix hyperref twocolumn""\}}.
@@ -2686,7 +2692,7 @@ the incriminated environment using \cs\phantomsection, and then use \cs{\reintro
\subsection{Name clash (eg with the "complexity@@package" package)}
It may happen that an already defined command is redefined by the "knowledge@@package" package.
-This happens in particular wen used in combination with the "complexity@@package" package: both package redefine the command \cs\AP. For "complexity@@package", this denotes a complexity class, and for "knowledge@@package", it is an "anchor point".
+This happens in particular wen used in combination with the "complexity@@package" package: both packages try to define the command \cs\AP. For "complexity@@package", this denotes a complexity class, and for "knowledge@@package", it is an "anchor point".
The problem has to be resolved by hand. The two following solutions are quick hacks:
\begin{center}
\begin{tabular}{ccc}
@@ -2733,7 +2739,15 @@ The preamble thus looks like:
This is an annoying feature of the "hyperref@@package" package to surround all links by red boxes (that may appear or not depending on the viewer). This is very heavy in document with many links. By default, this is deactivated when using the "knowledge@@package",
unless the "no patch" option is used when loading the package. When the "no patch" option is used, the same effect can nevertheless be obtain, eg using \smallcode{\cs\hypersetup\{hidelinks\}}.
+\subsubsection{Incorrect color for links in "paper mode" (e.g. red in with \kl(package){acmart})}
+Some classes, like \kl(package){acmart}, change the default color of the hyperlinks of \kl(package){hyperref}. Since "knowledge@@package" does not apply any color to the links in "paper mode", this unexpected color appears. The black color of the "paper mode" can be forced by using:
+\begin{code}
+\cs\IfKnowledgePaperMode\\
+ \cs\knowledgestyle\{"kl@@style"\}\{"color="black\}\\
+ \cs\knowledgestyle\{"notion@@style"\}\{"color="black\}\\
+\cs{\ fi}
+\end{code}
\subsection{Problems with scope}
\subsubsection{Problems in combination with \cs{\bibitem} and "thebibliography@@env"}
@@ -2895,6 +2909,7 @@ If other kind of problems occur, report them to \texttt{thomas.colcombet@irif.fr
\item[\kl{protect link co} and \kl{unprotect link co}] starts and ends respectively a zone in which the "knowledge@@package" package does not create hyperlinks.
\item[\kl{protect quotation=}\textmd{\{environment list\}}] declares a list of environment in which the "quotation notation" should be deactivated.
\item[{{\kl(option)[quotation]{quotation=}\textmd{\{true,false\}}}}] activates or deactivates the "quotation notation".
+\item["silent"] is a Boolean option which, when activated, switches off all warnings during the compilation, but the recap ones at the end.
\item["strict"] is a Boolean which, when true, makes the compilation more restrictive by turning some of the warnings into errors (in particular in case of redefinition of knowledges).
\item[\kl{visible anchor points=}\textmd{\{true,false\}}] makes the \kl{anchor points} either visible or invisible.
\end{compactdesc}
diff --git a/macros/latex/contrib/ltxcmds/README.md b/macros/latex/contrib/ltxcmds/README.md
index 9cc3a34e32..2aef65aa3a 100644
--- a/macros/latex/contrib/ltxcmds/README.md
+++ b/macros/latex/contrib/ltxcmds/README.md
@@ -1,10 +1,14 @@
-# ltxcmds
-
-ltxcmds package for latex
-
+# ltxcmds package for latex
+Version: 2020-05-10 v1.25
The package ltxcmds exports some utility macros
from the LaTeX kernel into a separate namespace and
also provides them for other formats such as plain-TeX.
+## Copyright (C)
+* 2007, 2009-2011 Heiko Oberdiek
+* 2016-2020 Oberdiek Package Support Group
+
+## License
+LATEX Project Public License, version 1.3c or later.
diff --git a/macros/latex/contrib/ltxcmds/ltxcmds.dtx b/macros/latex/contrib/ltxcmds/ltxcmds.dtx
index f9169a21db..9940671d4d 100644
--- a/macros/latex/contrib/ltxcmds/ltxcmds.dtx
+++ b/macros/latex/contrib/ltxcmds/ltxcmds.dtx
@@ -1,12 +1,12 @@
% \iffalse meta-comment
%
% File: ltxcmds.dtx
-% Version: 2019/12/15 v1.24
+% Version: 2020-05-10 v1.25
% Info: LaTeX kernel commands for general use
%
% Copyright (C)
% 2009-2011 Heiko Oberdiek
-% 2016-2019 Oberdiek Package Support Group
+% 2016-2020 Oberdiek Package Support Group
% https://github.com/ho-tex/ltxcmds/issues
%
% This work may be distributed and/or modified under the
@@ -86,7 +86,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO)}
+\Msg{* Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -98,11 +98,11 @@
This is a generated file.
Project: ltxcmds
-Version: 2019/12/15 v1.24
+Version: 2020-05-10 v1.25
Copyright (C)
2009-2011 Heiko Oberdiek
- 2016-2019 Oberdiek Package Support Group
+ 2016-2020 Oberdiek Package Support Group
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -166,7 +166,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{ltxcmds.drv}%
- [2019/12/15 v1.24 LaTeX kernel commands for general use (HO)]%
+ [2020-05-10 v1.25 LaTeX kernel commands for general use (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2011/11/22]
\usepackage{zref-savepos}
@@ -183,7 +183,7 @@ and the derived files
% \GetFileInfo{ltxcmds.drv}
%
% \title{The \xpackage{ltxcmds} package}
-% \date{2019/12/15 v1.24}
+% \date{2020-05-10 v1.25}
% \author{Heiko Oberdiek\thanks
% {Please report any issues at \url{https://github.com/ho-tex/ltxcmds/issues}}}
%
@@ -334,7 +334,7 @@ and the derived files
% \end{declcs}
%
% Macros with uppercase letters are expandable in two expansion steps.
-% Changes in version 2019/12/15 v1.24:
+% Changes in version 2020-05-10 v1.25:
% \begin{itemize}
% \item
% Macros \cs{ltx@carsecond}, \cs{ltx@carthird}, \cs{ltx@carfourth},
@@ -701,7 +701,7 @@ and the derived files
\fi
\expandafter\x\csname ver@ltxcmds.sty\endcsname
\ProvidesPackage{ltxcmds}%
- [2019/12/15 v1.24 LaTeX kernel commands for general use (HO)]%
+ [2020-05-10 v1.25 LaTeX kernel commands for general use (HO)]%
% \end{macrocode}
%
% \begin{macrocode}
@@ -1486,103 +1486,46 @@ and the derived files
% \end{macro}
%
% \subsubsection{Version date check}
-%
-% \begin{macro}{\ltx@iffilelater}
-% \begin{macrocode}
-\def\ltx@iffilelater#1#2{%
- \ltx@iffileloaded{#1}{%
- \expandafter\LTXcmds@IfLater\expandafter{%
- \number
- \expandafter\expandafter\expandafter\LTXcmds@ParseVersion
- \expandafter\expandafter\expandafter{%
- \csname ver@#1\endcsname
- }%
- \expandafter}\expandafter{%
- \number
- \expandafter\LTXcmds@ParseVersion\expandafter{#2}%
- }%
- }\ltx@secondoftwo
+% changed 2020-05-10 to adapt to dates with dashes (ISO)
+% The core of the commands are copies from the latex commands.
+% \begin{macro}{\ltx@ifl@ter}
+% \begin{macro}{\ltx@parse@version@}
+% \begin{macrocode}
+\def\ltx@ifl@ter#1#2{%
+ \expandafter\ltx@ifl@t@r
+ \csname ver@#2.#1\endcsname}
+\def\ltx@ifl@t@r#1#2{%
+ \ifnum\expandafter\ltx@parse@version@#1//00\@nil<%
+ \expandafter\ltx@parse@version@#2//00\@nil
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi}
+\def\ltx@parse@version@#1{\ltx@parse@version0#1}
+\def\ltx@parse@version#1/#2/#3#4#5\@nil{%
+\ltx@parse@version@dash#1-#2-#3#4\@nil
}
+\def\ltx@parse@version@dash#1-#2-#3#4#5\@nil{%
+ \if\relax#2\relax\else#1\fi#2#3#4 }
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\LTXcmds@IfLater}
+% \end{macro}
+% \begin{macro}{\ltx@iffilelater}
% \begin{macrocode}
-\def\LTXcmds@IfLater#1#2{%
- \ifcase 0%
- \ifnum#1<19940101 %
- \else
- \ifnum#2<19940101 %
- \else
- \ifnum#2>#1 %
- \else
- 1%
- \fi
- \fi
- \fi
- \ltx@space
- \expandafter\ltx@secondoftwo
- \else
- \expandafter\ltx@firstoftwo
- \fi
-}
+\def\ltx@iffilelater#1{\expandafter\ltx@ifl@t@r\csname ver@#1\endcsname}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\ltx@ifclasslater}
% \begin{macrocode}
-\def\ltx@ifclasslater#1{%
- \ltx@iffilelater{#1.\ltx@clsextension}%
-}
+\def\ltx@ifclasslater{\ltx@ifl@ter\ltx@clsextension}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\ltx@ifpackagelater}
% \begin{macrocode}
-\def\ltx@ifpackagelater#1{%
- \ltx@iffilelater{#1.\ltx@pkgextension}%
-}
+\def\ltx@ifpackagelater{\ltx@ifl@ter\ltx@pkgextension}
% \end{macrocode}
% \end{macro}
%
-% \begin{macrocode}
-\ltx@IfUndefined{pdfmatch}{%
-% \end{macrocode}
-% \begin{macro}{\LTXcmds@ParseVersion}
-% \begin{macrocode}
- \def\LTXcmds@ParseVersion#1{%
- \LTXcmds@@ParseVersion#10000/00/00\@nil
- }%
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\LTXcmds@@ParseVersion}
-% \begin{macrocode}
- \def\LTXcmds@@ParseVersion#1#2#3#4/#5#6/#7#8#9\@nil{%
- #1#2#3#4#5#6#7#8%
- }%
-% \end{macrocode}
-% \end{macro}
-% \begin{macrocode}
-}{%
-% \end{macrocode}
-% \begin{macro}{\LTXcmds@ParseVersion}
-% \begin{macrocode}
- \def\LTXcmds@ParseVersion#1{%
- \ifnum\pdfmatch{%
- ^%
- (199[4-9]|[2-9][0-9][0-9][0-9])/%
- (0[1-9]|1[0-2])/%
- (0[1-9]|[1-2][0-9]|3[0-1])%
- }{#1}=1 %
- \ltx@StripPrefix\pdflastmatch1 %
- \ltx@StripPrefix\pdflastmatch2 %
- \ltx@StripPrefix\pdflastmatch3 %
- \else
- 0%
- \fi
- }%
-% \end{macrocode}
-% \end{macro}
-% \begin{macrocode}
-}
-% \end{macrocode}
%
% \subsection{Macro additions}
%
@@ -2040,28 +1983,9 @@ $ \next
% \end{description}
%
%
-% \paragraph{Bundle.} All the packages of the bundle `ltxcmds'
-% are also available in a TDS compliant ZIP archive. There
-% the packages are already unpacked and the documentation files
-% are generated. The files and directories obey the TDS standard.
-% \begin{description}
-% \item[\CTANinstall{install/macros/latex/contrib/ltxcmds.tds.zip}]
-% \end{description}
-% \emph{TDS} refers to the standard ``A Directory Structure
-% for \TeX\ Files'' (\CTANpkg{tds}). Directories
-% with \xfile{texmf} in their name are usually organized this way.
-%
-% \subsection{Bundle installation}
-%
-% \paragraph{Unpacking.} Unpack the \xfile{ltxcmds.tds.zip} in the
-% TDS tree (also known as \xfile{texmf} tree) of your choice.
-% Example (linux):
-% \begin{quote}
-% |unzip ltxcmds.tds.zip -d ~/texmf|
-% \end{quote}
-%
% \subsection{Package installation}
-%
+% The package is at best installed with the package manager of the \TeX~system.
+% Manual installation is possible too:
% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting
% \docstrip\ archive. The files are extracted by running the
% \xfile{.dtx} through \plainTeX:
@@ -2417,6 +2341,13 @@ $ \next
% \item
% Documentation updates.
% \end{Version}
+% \begin{Version}{2020-05-10 v1.25}
+% \item Changed the definitions of \cs{ltx@iffilelater}, \cs{ltx@ifpackagelater}
+% and \cs{ltx@ifclasslater} to support dates in ISO format in same way as the
+% LaTeX kernel does it since 2017. The commands now use the same test as the
+% LaTeX kernel. \cs{pdfmatch} is no longer used with pdftex, and the tests for dates before
+% 1994 have been removed
+% \end{Version}
% \end{History}
%
% \PrintIndex
diff --git a/macros/latex/contrib/ltxcmds/ltxcmds.pdf b/macros/latex/contrib/ltxcmds/ltxcmds.pdf
index dc3eabc9e7..1dfb9104f3 100644
--- a/macros/latex/contrib/ltxcmds/ltxcmds.pdf
+++ b/macros/latex/contrib/ltxcmds/ltxcmds.pdf
Binary files differ
diff --git a/macros/latex/contrib/lwarp/README.txt b/macros/latex/contrib/lwarp/README.txt
index 771e3d6635..602ea9e737 100644
--- a/macros/latex/contrib/lwarp/README.txt
+++ b/macros/latex/contrib/lwarp/README.txt
@@ -1,5 +1,5 @@
-LaTeX lwarp package v0.89 README.txt
+LaTeX lwarp package v0.891 README.txt
Files included are:
diff --git a/macros/latex/contrib/lwarp/lwarp.dtx b/macros/latex/contrib/lwarp/lwarp.dtx
index de330000f3..8a40c80c2f 100644
--- a/macros/latex/contrib/lwarp/lwarp.dtx
+++ b/macros/latex/contrib/lwarp/lwarp.dtx
@@ -16,7 +16,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{lwarp}
-%<package> [2020/09/03 v0.89 Allows LaTeX to directly produce HTML5 output.]
+%<package> [2020/09/22 v0.891 Allows LaTeX to directly produce HTML5 output.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -1254,8 +1254,9 @@ before and after each image.
\subsubsection{\brand{MathJax} option}
\label{sec:limitsmathjax}
-The popular \brand{MathJax} alternative (\url{mathjax.org}) may be used to display math.
+The \brand{MathJax} (\url{mathjax.org}) \LaTeX-math to \HTML\ converter
\margintag{\brand{MathJax} math option}
+may be used to display math.
\DescribeProgram{MathJax}
\gindex{math>mathjax=\brand{MathJax} summary}
\gindex{mathjax=\brand{MathJax}>summary}
@@ -1267,8 +1268,9 @@ equation numbering and cross referencing to be almost entirely under the control
\item As detokenized printed \LaTeX{} commands placed directly into the \HTML\ output
for interpretation by the \brand{MathJax} display scripts. An additional script is used to
pre-set the equation number format and value according to the current \LaTeX\ values,
-and the \brand{MathJax} cross-referencing system is ignored in favor of the \LaTeX\ internal system,
-seamlessly integrating with the rest of the \LaTeX\ code.
+and the \brand{MathJax} equation numbering system is ignored in favor of the \LaTeX\ internal system,
+seamlessly integrating with the rest of the \HTML\ output, including any math
+appearing in non-\brand{MathJax} \SVG\ output.
\end{enumerate}
\subsubsection{Customizing \brand{MathJax}}
@@ -1329,13 +1331,23 @@ Limitations when using \brand{MathJax} include:
While \brand{MathJax} is enabled inside \env{tabbing}, the browser may not correctly
render the horizontal alignment of the math and text following after on the same line.
-\item Other math-related macros and packages are not directly supported by \brand{MathJax},
+\item \brand{MathJax} includes the \prog{textmacros} extension,
+ \margintag{\cs{text}}
+ which supports various macros which are commonly used inside \cs{text},
+ such as \cs{textbf} and text accents.
+ \pkg{Lwarp} supports this extension.
+
+\item Many other math-related macros and packages are
\trouble[other macros and packages]{mathjax=\brand{MathJax}>unsupported packages}
- including \cs{ensuremath} and \pkg{bigdelim},
- and occasionally-used macros such as \cs{relax}.
+ \trouble{package>mathjax=\brand{MathJax} support}
+ not directly supported by \brand{MathJax},
+ including \cs{ensuremath} and occasionally-used macros such as \cs{relax}.
While using \brand{MathJax}, \pkg{lwarp} provides emulation
- for footnotes, \pkg{bm}, \pkg{mathtools},
- \pkg{nicefrac}, \pkg{siunitx}, and \pkg{units}.
+ for many of these macros, as well as for footnotes and emulation for
+ dozens of packages (see \cref{tab:supported}).
+ In many cases these emulations simply ignore the package in a source-compatible way.
+ Others produce a result which represents the meaning, even if they don't look exact.
+ Look up each package in this document for a description of the limitations of each.
\end{itemize}
}
@@ -1514,7 +1526,7 @@ For \brand{MathJax}, use \cs{ifnextchar} instead of \cs{@ifnextchar}:
\trouble{mathjax=\brand{MathJax}>@ifnextchar=\cs{@ifnextchar} macros}
\trouble{math>@ifnextchar=\cs{@ifnextchar} macros and \brand{MathJax}}
\begin{sourcedisplay}
-\cs{CustomizeMathJax}\{cs{def}\cs{myname}\{\cs{ifnextchar} X \cs{found}\cs{notfound}\}\}
+\cs{CustomizeMathJax}\{\cs{def}\cs{myname}\{\cs{ifnextchar} X \cs{found}\cs{notfound}\}\}
\end{sourcedisplay}
``\texttt{X}'' may be a single \acro{ASCII} character,
or a hex number inside braces, ex:
@@ -2676,6 +2688,16 @@ If using \cs{newfloat}, \pkg{trivfloat}, and/or
% would appear in the List of Figures/Tables before the enclosing figure/table,
% therefore \pkg{lwarp} does not place subfigures in the LOF/LOT.
+To have correct sub table numbers:
+\trouble[table numbering]{table>numbering>subfig=\pkg{subfig}}
+\trouble{subfig=\pkg{subfig}>numbering}
+\trouble{subtable>numbering>subfig=\pkg{subfig}}
+\begin{sourcedisplay}
+\cs{usepackage}\{caption\}\\
+\cs{captionsetup}[table]\{position=top\}
+\end{sourcedisplay}
+
+
At present, the package options for \optn{lofdepth} and \optn{lotdepth}
\trouble[\optn{lof/lotdepth}]{subfig=\pkg{subfig}>options}
are not working. These counters must be set separately after the
@@ -3005,7 +3027,7 @@ This boolean may be tested by the user for later use.
%<*package>
% \fi
%
-% \CheckSum{47034}
+% \CheckSum{50243}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -3137,6 +3159,7 @@ This boolean may be tested by the user for later use.
% \changes{v0.87}{2020/06/03}{\ 2020/06/03}
% \changes{v0.88}{2020/07/19}{\ 2020/07/19}
% \changes{v0.89}{2020/09/03}{\ 2020/09/03}
+% \changes{v0.891}{2020/09/22}{\ 2020/09/22}
@@ -3171,7 +3194,7 @@ This boolean may be tested by the user for later use.
% used for the final conversion of text and images. Math may be represented
% by \SVG\ images or \brand{MathJax}.
% More than 500 \LaTeX\ packages and classes are supported,
-% of which more than 60 also support \brand{MathJax}.
+% of which more than 70 also support \brand{MathJax}.
%
% Documents may be produced by \DVI\ or \PDF\ \LaTeX, Lua\LaTeX, \XeLaTeX;
% by several CJK engines, classes, and packages;
@@ -3360,6 +3383,35 @@ This boolean may be tested by the user for later use.
%
% \begin{description}
% \needspace{2\baselineskip}
+% \item[v0.891:] \brand{MathJax} additions and improvements.
+% \begin{itemize}
+% \item Now displays inline \cs{verb} text as \cs{texttt}.
+% \margintag{core}
+% \item Fixed \pkg{alltt} and verbatims with \LaTeX\ lists.
+% \item Now generates an error if nested each of \env{warpHTML}, \env{warpprint}, \env{warpMathJax}
+% inside itself.
+% \item Added \brand{MathJax} \prog{textmacros} extension, allowing
+% \margintag{\brand{MathJax}}
+% formatting inside \cs{text}.
+% \item \pkg{biblatex}, \pkg{hyperref}: Added back page references.
+% \margintag{packages}
+% \item \pkg{fancyvrb}: Fixed \env{BVerbatim} with a label.
+% \item \pkg{listings}: Fixed \brand{MathJax} with captions, improved \HTML\ sanitation.
+% \item \pkg{babel-french}: Fixed \cs{texorpdfstring} conflict.
+% \item Now honors Greek package options for \pkg{mathdesign},
+% \pkg{mathpazo}, \pkg{mathptmx},
+% \pkg{newpxmath}, \pkg{newtxmath}.
+% \item Improved \brand{MathJax} for \pkg{colonequals}, \pkg{mathdesign},
+% \pkg{mathdots}, \pkg{mathfixs}, \pkg{mathtools}, \pkg{multiobjective},
+% \pkg{nicefrac}, \pkg{shuffle}, \pkg{units}.
+% \item \pkg{unicode-math}: Added Greek macros, as well as macros for
+% the first several categories listed in \cmds{texdoc unimath-symbols}.
+% Improved symbol shape macros with Greek. Improved documentation.
+% \item Added \pkg{bussproofs}, \pkg{cmbright}, \pkg{fourier},
+% \pkg{kpfonts}, \pkg{kpfonts-otf},
+% \pkg{libertinust1math}, \pkg{scalerel}, \pkg{txgreeks}.
+% \end{itemize}
+% \needspace{2\baselineskip}
% \item[v0.89:] Additional \brand{MathJax} support.
% \begin{itemize}
% \item Adapted to upcoming \LaTeX\ kernel changes.
@@ -5432,6 +5484,8 @@ This boolean may be tested by the user for later use.
% Indexing: & \prog{makeindex}, \prog{xindy}, and \prog{xindex} are supported,
% with hyperlinks.
%
+% \smallskip
+%
% \mpkg{gindex}, \spkg{hvindex}, \epkg{idxlayout}, \mpkg{imakeidx},
% \epkg{index}, \mpkg{makeidx},
% \epkg{repeatindex}, \mpkg{splitidx}, \spkg{varindex}, \spkg{xindex}.
@@ -5488,12 +5542,14 @@ This boolean may be tested by the user for later use.
% Additional math: & Math fonts via \SVG\ images,
% \spkg{accents}\ejax, \spkg{amscd}, \spkg{autobreak}\ejax, \ipkg{autonum},
% \mpkg{backnaur}, \mpkg{bm}\ejax, \spkg{braket}\ejax,
-% \mpkg{breqn}, \mpkg{cases}, \spkg{centernot}\ejax, \spkg{colonequals}\ejax,
-% \spkg{decimal}\ejax,
+% \mpkg{breqn}, \mpkg{bussproofs}\ejax, \mpkg{cases},
+% \spkg{centernot}\ejax, \spkg{cmbright}\ejax,
+% \spkg{colonequals}\ejax, \spkg{decimal}\ejax,
% \spkg{delarray}, \mpkg{DotArrow}\ejax, \spkg{dotlessi}\ejax, \spkg{dotlessj}\sjax,
-% \spkg{extarrows}\ejax, \spkg{fouridx}\ejax,
+% \spkg{extarrows}\ejax, \spkg{fouridx}\ejax, \spkg{fourier}\ejax,
% \spkg{guass}, \spkg{hhtensor}\ejax, \spkg{icomma}\ijax, \spkg{jkmath},
-% \spkg{leftidx}\ejax, \spkg{mathalpha}\ejax,
+% \spkg{kpfonts}\ejax, \spkg{kpfonts-otf}\ejax,
+% \spkg{leftidx}\ejax, \spkg{libertinust1math}\ejax, \spkg{mathalpha}\ejax,
% \spkg{mathcomp}\ejax, \spkg{mathdesign}\ejax,
% \spkg{mathdots}\ejax,
% \spkg{mathfixs}\ejax, \spkg{mathpunctspace}\ijax,
@@ -5502,9 +5558,10 @@ This boolean may be tested by the user for later use.
% \spkg{nicematrix}, \spkg{noitcrul}\ejax,
% \spkg{newpxmath}\ejax, \spkg{newtxmath}\ejax, \spkg{newtxsf}\ejax,
% \spkg{pb-diagram},
-% \ipkg{resizegather}, \spkg{rmathbr}\ejax, \epkg{shuffle}\ejax, \spkg{stackrel}\ejax,
+% \ipkg{resizegather}, \spkg{rmathbr}\ejax, \spkg{scalerel}\ejax,
+% \epkg{shuffle}\ejax, \spkg{stackrel}\ejax,
% \mpkg{statex2}\ejax, \spkg{statmath}\ejax,
-% \spkg{subsupscripts}\ejax, \spkg{textualicomma}\ijax,
+% \spkg{subsupscripts}\ejax, \spkg{textualicomma}\ijax, \spkg{txgreeks}\ejax,
% \spkg{unicode-math}\ejax, \spkg{ushort}\ejax, \mpkg{witharrows}\ejax,
% \mpkg{xfakebold}\ejax, \mpkg{xy}.
% Many others work as-is. \\
@@ -5552,6 +5609,8 @@ This boolean may be tested by the user for later use.
% \epkg{rotating} is emulated but all objects are unrotated.
% \env{picture}, \mpkg{tikz}, and \mpkg{xy} are converted to an \SVG\ image.
%
+% \smallskip
+%
% \mpkg{asymptote}, \spkg{curves}, \spkg{datatool},
% \spkg{eepic}, \epkg{epsfig}, \spkg{epstopdf},
% \epkg{figsize}, \ipkg{fitbox},
@@ -5640,8 +5699,14 @@ This boolean may be tested by the user for later use.
% Appear in \SVG\ math expressions or embedded image environments.
% \mpkg{fontaxes}, \mpkg{nfssext-cfr}, \mpkg{slantsc}, \ipkg{tabfigures}.
%
+% \smallskip
+%
% Tested to work as-is: Special font macros in \spkg{cfr-lm} and others
-% which use \spkg{nfssext-cfr}. \\
+% which use \spkg{nfssext-cfr}.
+%
+% \smallskip
+%
+% Also see the math section for math and \brand{MathJax} support for math font packages. \\
%
% Symbols: & Native \LaTeX\ diacriticals, \mpkg{academicons}, \spkg{amssymb}\sjax,
% \mpkg{bbding},
@@ -8427,7 +8492,8 @@ This boolean may be tested by the user for later use.
% Do \emph{not} place anything else on the same line as |\end{warpHTML}|.
% \trouble[\texttt{\cs{end}\{warpHTML\}}]{warpHTML}
% The exact phrase is used to mark the end of the environment.
-% Do not nest \env{warpHTML} inside itself.\watchout[nesting]
+% Do not nest \env{warpHTML} inside itself. \watchout[nesting]
+% \env{warpMathJax} may be used inside \env{warpHTML}.
%
% \DescribeEnv{warpprint}
% Anything which is to be done only for print output
@@ -8470,7 +8536,8 @@ This boolean may be tested by the user for later use.
% Usually, this is \cs{CustomizeMathJax}, used to add emulation macros.
% |\end{warpMathJax}| must appear on its own line.
% \trouble[\texttt{\cs{end}\{warpMathJax\}}]{warpMathJax}
-% Do not nest \env{warpMathJax} inside itself.\watchout[nesting]
+% Do not nest \env{warpMathJax} inside itself. \watchout[nesting]
+% \env{warpMathJax} may be used inside \env{warpHTML}.
%
%
% \subsection{Commands to be placed into the \env{warpprint} environment}
@@ -12582,7 +12649,8 @@ This boolean may be tested by the user for later use.
% \changes{v0.80}{2020/02/15}{Prevented \pkg{formula}, \pkg{shadethm}, \pkg{slashbox}.}
% \changes{v0.81}{2020/02/15}{Prevented \pkg{statex}.}
% \changes{v0.87}{2020/05/14}{Prevented \pkg{csvtools}.}
-% \changes{v0.88}{2020/07/07}{Added \pkg{shadethm}.}
+% \changes{v0.88}{2020/07/07}{Prevented \pkg{shadethm}.}
+% \changes{v0.891}{2020/09/16}{Prevented \pkg{libgreek}.}
%
% ^^A *earlyloadnever *loadnever
% \begin{macrocode}
@@ -12609,6 +12677,7 @@ This boolean may be tested by the user for later use.
\LWR@earlyloadnever{formula}{siunitx}
\LWR@earlyloadnever{glossary}{glossaries}
\LWR@earlyloadnever{hyper}{hyperref}
+\LWR@earlyloadnever{libgreek}{libertinust1math, newtx}
\LWR@earlyloadnever{newthm}{ntheorem}
\LWR@earlyloadnever{pdfcprot}{microtype}
\LWR@earlyloadnever{picinpar}{floatflt, wrapfig}
@@ -12713,6 +12782,7 @@ This boolean may be tested by the user for later use.
\LWR@loadafter{breakurl}
\LWR@loadafter{breqn}
\LWR@loadafter{bsheaders}
+\LWR@loadafter{bussproofs}
\LWR@loadafter{bxpapersize}
\LWR@loadafter{bytefield}
\LWR@loadafter{cancel}
@@ -12740,6 +12810,7 @@ This boolean may be tested by the user for later use.
\LWR@loadafter{cite}
\LWR@loadafter{citeref}
\LWR@loadafter{cleveref}
+% cmbright may be preloaded
\LWR@loadafter{cmdtrack}
\LWR@loadafter{colonequals}
\LWR@loadafter{color}
@@ -12830,6 +12901,7 @@ This boolean may be tested by the user for later use.
\LWR@loadafter{foreign}
\LWR@loadafter{forest}
\LWR@loadafter{fouridx}
+% fourier may be loaded before lwarp
\LWR@loadafter{framed}
\LWR@loadafter{ftcap}
\LWR@loadafter{ftnright}
@@ -12875,6 +12947,8 @@ This boolean may be tested by the user for later use.
\LWR@loadafter{jurabib}
\LWR@loadafter{karnaugh-map}
\LWR@loadafter{keyfloat}
+% kpfonts may be loaded before lwarp
+% kpfonts-otf may be loaded before lwarp
\LWR@loadafter{layaureo}
\LWR@loadafter{layout}
\LWR@loadafter{layouts}
@@ -12882,6 +12956,7 @@ This boolean may be tested by the user for later use.
\LWR@loadafter{leftidx}
\LWR@loadafter{letterspace}
\LWR@loadafter{lettrine}
+% libertinust1math may be loaded before lwarp
\LWR@loadafter{lineno}
\LWR@loadafter{lips}
\LWR@loadafter{listings}
@@ -13015,7 +13090,7 @@ This boolean may be tested by the user for later use.
\LWR@loadafter{pstricks}
% \LWR@loadafter{pxatbegshi}% may be used by morewrites
\LWR@loadafter{pxeveryshi}
-\LWR@loadafter{pxfonts}
+% \LWR@loadafter{pxfonts}% may be loaded before lwarp
\LWR@loadafter{pxftnright}
\LWR@loadafter{pxjahyper}
\LWR@loadafter{quotchap}
@@ -13037,6 +13112,7 @@ This boolean may be tested by the user for later use.
\LWR@loadafter{rviewport}
\LWR@loadafter{savetrees}
% scalefnt is loaded by babel-french
+\LWR@loadafter{scalerel}
\LWR@loadafter{schemata}
\LWR@loadafter{scrextend}
\LWR@loadafter{scrhack}
@@ -13128,8 +13204,9 @@ This boolean may be tested by the user for later use.
\LWR@loadafter{trivfloat}
\LWR@loadafter{truncate}
\LWR@loadafter{turnthepage}
-\LWR@loadafter{txfonts}
\LWR@loadafter{twoup}
+% \LWR@loadafter{txfonts}% may be loaded before lwarp
+% txgreeks may be loaded before lwarp
% \end{macrocode}
% \changes{v0.44}{2017/11/19}{Adjustment for \pkg{koma-script}.}
% \begin{macrocode}
@@ -13138,7 +13215,7 @@ This boolean may be tested by the user for later use.
% \LWR@loadafter{ulem}% preloaded by ctexart and related classes
\LWR@loadafter{umoline}
\LWR@loadafter{underscore}
-\LWR@loadafter{unicode-math}
+% unicode-math may be loaded before lwarp
\LWR@loadafter{units}
\LWR@loadafter{unitsdef}
\LWR@loadafter{upgreek}
@@ -13531,7 +13608,11 @@ This boolean may be tested by the user for later use.
% \changes{v0.88}{2020/06/06}{Added.}
% \begin{macrocode}
\newcommand*{\LWR@maybe@orignewpage}{%
- \ifnumgreater{\value{LWR@texboxdepth}}{0}{}{\LWR@orignewpage}%
+ \LWR@traceinfo{LWR@maybe@orignewpage}%
+ \ifnumgreater{\value{LWR@texboxdepth}}{0}
+ {}%
+ {\LWR@orignewpage}%
+ \LWR@traceinfo{LWR@maybe@orignewpage done}%
}
% \end{macrocode}
% \end{macro}
@@ -14464,20 +14545,46 @@ This boolean may be tested by the user for later use.
% user uses the \pkg{comment} package. Each filename is ``|comment_#2.cut|''.
% Based on the \pkg{comment} package.
% \changes{v0.84}{2020/03/30}{Independent cut files.}
+% \changes{v0.891}{2020/09/15}{Error if nested comment.}
% \begin{macrocode}
\def\LWR@includecomment
#1#2{\message{Lwarp: Including comment '#1'}%
- \csarg\def{After#1Comment}{\CloseAndInputCutFile}
- \csarg\def{#1}{\endgroup \message{Including '#1' comment.}%
- \def\CommentCutFile{comment_#2.cut} \SetUpCutFile \ProcessComment{#1}}%
- \CommentEndDef{#1}}
+ \csarg\def{After#1Comment}{%
+ \CloseAndInputCutFile%
+ \csundef{LWR@#1commentused}%
+ }
+ \csarg\def{#1}{%
+ \endgroup
+ \ifcsdef{LWR@#1commentused}{
+ \PackageError{lwarp}%
+ {Nested #1 environment}%
+ {%
+ Environment #1 cannot be nested.\MessageBreak
+ This can happen when a package is loaded
+ from inside a\MessageBreak
+ #1 environment.%
+ }%
+ }{}
+ \csdef{LWR@#1commentused}{}
+ \message{Including '#1' comment.}%
+ \def\CommentCutFile{comment_#2.cut}
+ \SetUpCutFile
+ \ProcessComment{#1}
+ }%
+ \CommentEndDef{#1}
+}
\def\LWR@excludecomment
#1#2{\message{Lwarp: Excluding comment '#1'}%
- \csarg\def{#1}{\endgroup \message{Excluding '#1' comment.}%
+ \csarg\def{#1}{
+ \endgroup
+ \message{Excluding '#1' comment.}%
\begingroup
- \def\CommentCutFile{comment_#2.cut} \def\ProcessCutFile{}%
- \def\ThisComment####1{}\ProcessComment{#1}}%
+ \def\CommentCutFile{comment_#2.cut}
+ \def\ProcessCutFile{}%
+ \def\ThisComment####1{}%
+ \ProcessComment{#1}
+ }%
\csarg\def{After#1Comment}{\CloseAndInputCutFile \endgroup}
\CommentEndDef{#1}}
% \end{macrocode}
@@ -15245,7 +15352,8 @@ This boolean may be tested by the user for later use.
% \changes{v0.80}{2020/02/15}{Prevented \pkg{formula}, \pkg{shadethm}, \pkg{slashbox}.}
% \changes{v0.81}{2020/02/28}{Prevented \pkg{statex}.}
% \changes{v0.87}{2020/05/14}{Prevented \pkg{csvtools}.}
-% \changes{v0.88}{2020/07/07}{Added \pkg{shadethm}.}
+% \changes{v0.88}{2020/07/07}{Prevented \pkg{shadethm}.}
+% \changes{v0.891}{2020/09/16}{Prevented \pkg{libgreek}.}
%
% The following should never be loaded:
%
@@ -15269,6 +15377,7 @@ This boolean may be tested by the user for later use.
\LWR@checkloadnever{#1}{formula}{siunitx}
\LWR@checkloadnever{#1}{glossary}{glossaries}
\LWR@checkloadnever{#1}{hyper}{hyperref}
+\LWR@checkloadnever{#1}{libgreek}{libertinust1math, newtx}
\LWR@checkloadnever{#1}{newthm}{ntheorem}
\LWR@checkloadnever{#1}{pdfcprot}{microtype}
\LWR@checkloadnever{#1}{picinpar}{floatflt, wrapfig}
@@ -15689,29 +15798,29 @@ This boolean may be tested by the user for later use.
% Used to copy the |.toc| file to |.sidetoc| to re-print the \TOC\ in
% the side\TOC\ navigation pane.
% \begin{macrocode}
-\newwrite\LWR@copyoutfile % open the file to write to
-\newread\LWR@copyinfile % open the file to read from
+\newwrite\LWR@copyoutfile % open the file to write to
+\newread\LWR@copyinfile % open the file to read from
\newcommand*{\LWR@copyfile}[2]{%
-\LWR@traceinfo{LWR@copyfile: copying #1 to #2}
+ \LWR@traceinfo{LWR@copyfile: copying #1 to #2}
-\immediate\openout\LWR@copyoutfile=#2
-\openin\LWR@copyinfile=#1
-\begingroup\endlinechar=-1
-\makeatletter
+ \immediate\openout\LWR@copyoutfile=#2
+ \openin\LWR@copyinfile=#1
+ \begingroup\endlinechar=-1
+ \makeatletter
-\LWR@traceinfo{LWR@copyfile: about to loop}
+ \LWR@traceinfo{LWR@copyfile: about to loop}
-\loop\unless\ifeof\LWR@copyinfile
- \LWR@traceinfo{LWR@copyfile: one line}
- \read\LWR@copyinfile to\LWR@fileline % Read one line and store it into \LWR@fileline
+ \loop\unless\ifeof\LWR@copyinfile
+ \LWR@traceinfo{LWR@copyfile: one line}
+ \read\LWR@copyinfile to\LWR@fileline % Read one line and store it into \LWR@fileline
% \LWR@fileline\par % print the content into the pdf
% print the content:
- \immediate\write\LWR@copyoutfile{\unexpanded\expandafter{\LWR@fileline}}%
-\repeat
-\immediate\closeout\LWR@copyoutfile
-\LWR@traceinfo{LWR@copyfile: done}
-\endgroup
+ \immediate\write\LWR@copyoutfile{\unexpanded\expandafter{\LWR@fileline}}%
+ \repeat
+ \immediate\closeout\LWR@copyoutfile
+ \LWR@traceinfo{LWR@copyfile: done}
+ \endgroup
}
% \end{macrocode}
% \end{macro}
@@ -17122,7 +17231,7 @@ div.indexheading {margin-top: 2ex ; font-weight: bold}
div.hidden, span.hidden { display: none ; }
-kbd, span.texttt {
+kbd, span.texttt, p span.texttt {
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
"Courier New", monospace;
@@ -19504,6 +19613,7 @@ page_compositor "."
% \changes{v0.86}{2020/05/03}{File: \filenm{lwarp_mathjax.txt}: Improved equation numbering.}
% \changes{v0.86}{2020/05/03}{File: \filenm{lwarp_mathjax.txt}: Added support for starred macros.}
% \changes{v0.87}{2020/05/20}{File: \filenm{lwarp_mathjax.txt}: Now provides \cs{ifstar}, \cs{ifnextchar}.}
+% \changes{v0.891}{2020/09/07}{File: \filenm{lwarp_mathjax.txt}: Renamed \filenm{tagformat} extension.}
%
% ^^A *lwarp_mathjax.txt
%
@@ -19529,7 +19639,7 @@ MathJax = {
subequations: "0",
section: "",
loader: {
- load: ['[tex]/tagFormat'],
+ load: ['[tex]/tagformat', '[tex]/textmacros'],
},
startup: {
ready() {
@@ -19620,9 +19730,9 @@ MathJax = {
}, // startup
tex: {
- packages: {'[+]': ['tagFormat', 'ifstar-ifnextchar-setequnumber']},
+ packages: {'[+]': ['tagformat', 'ifstar-ifnextchar-setequnumber', 'textmacros']},
tags: "ams",
- tagFormat: {
+ tagformat: {
number: function (n) {
if(MathJax.config.subequations==0)
return(MathJax.config.section + n);
@@ -19771,7 +19881,7 @@ MathJax = {
-- Copyright 2016-2020 Brian Dunn
-printversion = "v0.89"
+printversion = "v0.891"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
@@ -21761,8 +21871,14 @@ end -- not --version
\newcommand{\LWR@forcenewpage}{%
\LWR@traceinfo{LWR@forcenewpage}%
\ifinner\else%
-\LWR@stoppars\LWR@maybe@orignewpage\LWR@startpars%
+ \LWR@traceinfo{LWR@forcenewpage A}%
+ \LWR@stoppars%
+ \LWR@traceinfo{LWR@forcenewpage B}%
+ \LWR@maybe@orignewpage%
+ \LWR@traceinfo{LWR@forcenewpage C}%
+ \LWR@startpars%
\fi%
+\LWR@traceinfo{LWR@forcenewpage done}%
}
% \end{macrocode}
%
@@ -24203,9 +24319,12 @@ end -- not --version
\LWR@replacestrings{<}{&lt;}%
\LWR@replacestrings{>}{&gt;}%
% \end{macrocode}
-% The double quote occasionally causes problems.
+% The quotes occasionally causes problems.
+% \changes{v0.891}{2020/09/09}{Neutralized single quotes.}
% \begin{macrocode}
\LWR@replacestrings{"}{&quot;}%
+ \LWR@replacestrings{'}{&apos;}%
+ \LWR@replacestrings{`}{&grave;}%
% \end{macrocode}
% MathJax allows expressions to be defined with \cs{newcommand}.
% These expressions would appear with |##| for each argument,
@@ -24232,9 +24351,7 @@ end -- not --version
% \begin{macrocode}
\begingroup%
\LWR@FBcancel%
- \fullexpandarg%
- \protect\StrSubstitute{\detokenize{#1}}%
- {\detokenize{\&}}{\detokenize{&}}[\LWR@strresult]%
+ \edef\LWR@strresult{\detokenize{#1}}%
\LWR@subHTMLsanitize%
\LWR@strresult%
\endgroup%
@@ -24251,8 +24368,9 @@ end -- not --version
%
% \changes{v0.36}{2017/08/16}{Fix for \pkg{babel-french}.}
% \changes{v0.51}{2018/03/07}{Fix: Escapes double quotes.}
-% \changes{v0.79}{2020/01/27}{Fix: \cs{\&}.}
+% ^^A \changes{v0.79}{2020/01/27}{Fix: \cs{\&}.}
% \changes{v0.89}{2020/08/08}{Fix: Nested \brand{MathJax} environments.}
+% ^^A *88*
% \begin{macrocode}
\edef\LWR@beginspaceleftbrace{begin \LWRleftbrace}
\edef\LWR@beginspaceleftbrace{\detokenize\expandafter{\LWR@beginspaceleftbrace}}
@@ -24271,18 +24389,17 @@ end -- not --version
% \begin{macrocode}
\begingroup%
\LWR@FBcancel%
- \fullexpandarg%
% \end{macrocode}
% The difference between this and \cs{LWR@HTMLsanitize} (without ``expand'')
% is the following \cs{expandafter}:
% \begin{macrocode}
- \protect\StrSubstitute{\detokenize\expandafter{#1}}%
- {\detokenize{\&}}{\detokenize{&}}[\LWR@strresult]%
+ \edef\LWR@strresult{\detokenize\expandafter{#1}}%
% \end{macrocode}
% The math expression may includes spaces between tokens,
% but \brand{MathJax} does not want a space between \cs{begin} or \cs{end}
% and the following brace.
% This space is removed here.
+% ^^A *88*
% \begin{macrocode}
\protect\StrSubstitute{\LWR@strresult}%
{\LWR@beginspaceleftbrace}{\LWR@beginleftbrace}[\LWR@strresult]%
@@ -24323,9 +24440,7 @@ end -- not --version
\newcommand*{\LWR@subcustomizedmathjax}[1]{%
\begingroup%
\LWR@FBcancel%
- \fullexpandarg%
- \protect\StrSubstitute{\detokenize{#1}}%
- {\detokenize{\&}}{\detokenize{&}}[\LWR@strresult]%
+ \edef\LWR@strresult{\detokenize{#1}}%
\LWR@subHTMLsanitize%
\xdef\LWR@customizedMathJax{%
\LWR@customizedMathJax%
@@ -27359,6 +27474,7 @@ end -- not --version
% \end{macrocode}
%
%
+%
% \DescribeLength{\VerbatimHTMLWidth} Width to use in \HTML\ |Verbatim| environment.
%
% This width is used when placing line numbers to the right.
@@ -27383,11 +27499,36 @@ end -- not --version
% \end{macrocode}
+% \begin{macro}{\verb}
+%
+% Patched to encapsulate the verbatim text inside span
+% with a class of \attribute{texttt}.
+%
+% \changes{v0.891}{2020/09/12}{\cs{verb} as \cs{texttt}.}
+% \begin{macrocode}
+\LetLtxMacro\LWR@orig@verb@egroup\verb@egroup
+
+\def\LWR@verb@egroup@endspan{%
+ \LWR@orig@verb@egroup%
+ \LWR@htmltag{/span}%
+ \endgroup%
+}
+
+\xpretocmd{\verb}
+ {%
+ \begingroup%
+ \LWR@htmltag{span class="texttt"}%
+ \let\verb@egroup\LWR@verb@egroup@endspan%
+ }
+ {}
+ {\LWR@patcherror{LaTeX}{verb}}
+% \end{macrocode}
+% \end{macro}
+
% \begin{macro}{\LWR@atbeginverbatim}
% \oarg{1: style}
-% \marg{2: negative \cs{baselineskip} \cs{vspace}}
-% \marg{3: class}
+% \marg{2: class}
%
% Encloses a verbatim environment with the given \CSS\ class.
%
@@ -27396,27 +27537,29 @@ end -- not --version
% \changes{v0.51}{2018/03/17}{Adds vertical offset.}
% \changes{v0.63}{2018/11/24}{Fix for \pkg{xeCJK}.}
% \begin{macrocode}
-\newcommand*{\LWR@atbeginverbatim}[3][]
+\newcommand*{\LWR@atbeginverbatim}[2][]
{%
% \end{macrocode}
-% Avoid excessive space between lines:
-% \begin{macrocode}
-\setlength{\parskip}{0ex}%
-% \end{macrocode}
% Stop generating \HTML\ paragraph tags:
% \begin{macrocode}
\LWR@stoppars%
% \end{macrocode}
+% Avoid excessive space between lines:
+% \changes{v0.891}{2020/09/12}{Fix for verbatim, \pkg{alltt} with lists}
+% \begin{macrocode}
+\setlength{\parskip}{0ex}%
+\setlength{\topsep}{0pt}%
+\setlength{\partopsep}{0pt}%
+% \end{macrocode}
% Create a new |pre| of the given class.
% The tags may temporarily be turned off for internal use, such
% as loading the \brand{MathJax} script.
% \begin{macrocode}
\ifbool{LWR@verbtags}{%
- \LWR@htmltag{pre class=\textquotedbl#3\textquotedbl%
+ \LWR@htmltag{pre class=\textquotedbl#2\textquotedbl%
\ifthenelse{\equal{#1}{}}{}{ style=\textquotedbl#1\textquotedbl}%
}%
- \LWR@orignewline% pre
- \leavevmode\unskip\LWR@print@vspace*{-#2\baselineskip}%
+ \par%
}{}%
% \end{macrocode}
% Use a mono-spaced font to preserve horizontal positioning.
@@ -27453,20 +27596,18 @@ end -- not --version
% \begin{macro}{\LWR@afterendverbatim}
-% \marg{negative \cs{baselineskip} \cs{vspace}}
%
% Finishes enclosing a verbatim environment.
% \changes{v0.54}{2018/04/07}{Added vspace argument.}
% \begin{macrocode}
-\newcommand*{\LWR@afterendverbatim}[1]{%
+\newcommand*{\LWR@afterendverbatim}{%
\endgroup%
\par%
% \end{macrocode}
% At the end of the environment, close the |pre|:
% \begin{macrocode}
\ifbool{LWR@verbtags}{%
- \LWR@print@vspace*{-#1\baselineskip}%
- \noindent\LWR@htmltag{/pre}\LWR@orignewline% pre
+ \noindent\LWR@htmltag{/pre}\par% pre
}{}%
% \end{macrocode}
% Resume regular paragraph handling:
@@ -27486,9 +27627,9 @@ end -- not --version
% \begin{macrocode}
\newcommand{\LWR@HTML@verbatim@input}[2]{%
\ifbool{LWR@verbtags}{\LWR@forcenewpage}{}%
- \LWR@atbeginverbatim{2.5}{Verbatim}%
+ \LWR@atbeginverbatim{Verbatim}%
\LWR@print@verbatim@input{#1}{#2}%
- \LWR@afterendverbatim{1.5}%
+ \LWR@afterendverbatim%
}
\LWR@formatted{verbatim@input}
@@ -27510,14 +27651,14 @@ end -- not --version
{}%
{%
\LWR@forcenewpage%
- \LWR@atbeginverbatim{2.5}{verbatim}%
+ \LWR@atbeginverbatim{verbatim}%
}%
}
\AfterEndEnvironment{verbatim}{%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{}%
{%
- \LWR@afterendverbatim{1}%
+ \LWR@afterendverbatim%
}%
}
}
@@ -27536,7 +27677,7 @@ end -- not --version
% \begin{macrocode}
\newcommand*{\LWR@HTML@tabbing}{%
\LWR@forcenewpage%
- \LWR@atbeginverbatim{3}{tabbing}%
+ \LWR@atbeginverbatim{tabbing}%
\let\enskip\LWR@origenskip%
\let\quad\LWR@origquad%
\let\qquad\LWR@origqquad%
@@ -27549,7 +27690,7 @@ end -- not --version
\newcommand*{\LWR@HTML@endtabbing}{%
\LWR@print@endtabbing%
- \LWR@afterendverbatim{1}%
+ \LWR@afterendverbatim%
}
\LWR@formatted{tabbing}
@@ -27896,6 +28037,7 @@ end -- not --version
\LWR@nulllistfills%
}
% \end{macrocode}
+%
% \changes{v0.46}{2018/01/21}{Fix: Stack unnesting.}
% \begin{macrocode}
\newcommand*{\LWR@listend}{%
@@ -33843,18 +33985,18 @@ end -- not --version
%
% It may be renamed by redefining \cs{sidetocname}, and may contain paragraphs.
%
-% \CSS\ may be used to format the side\TOC:
+% Per \cref{tab:sidetoccss}, \CSS\ may be used to format the side\TOC.
%
-% \begin{docsidebar}[CSS related to side\TOC:]
-% \vspace*{-\baselineskip}
+% \begin{table}[h]
+% \caption{CSS related to the side\TOC}
+% \label{tab:sidetoccss}
% \begin{description}[parsep=0ex]
% \vspace*{-\baselineskip}
% \item [|div.sidetoccontainer|:] The entire side\TOC.
% \item [|div.sidetoctitle|:] The title.
% \item [|div.sidetoccontents|:] The table of contents.
% \end{description}
-% \vspace*{-\baselineskip}
-% \end{docsidebar}
+% \end{table}
% \begin{macrocode}
\end{warpHTML}
@@ -37798,17 +37940,31 @@ end -- not --version
\LWR@PreloadedPackage{graphicx}
% \end{macrocode}
+% \pkg{scalefnt} may have been preloaded by \pkg{babel}
+% \begin{macrocode}
+\LWR@PreloadedPackage{scalefnt}
+% \end{macrocode}
+
% \pkg{fontaxes} must be preloaded so that \pkg{lwarp} may patch it for \HTML.
% \begin{macrocode}
\LWR@PreloadedPackage{fontaxes}
% \end{macrocode}
-% \pkg{newpxmath}, etc. may be loaded before \pkg{lwarp}:
+% Various font packages which may be loaded before \pkg{lwarp}:
% \begin{macrocode}
+\LWR@PreloadedPackage{cmbright}
+\LWR@PreloadedPackage{fourier}
+\LWR@PreloadedPackage{kpfonts}
+\LWR@PreloadedPackage{kpfonts-otf}
+\LWR@PreloadedPackage{libertinust1math}
+\LWR@PreloadedPackage{pxfonts}
+\LWR@PreloadedPackage{txfonts}
+\LWR@PreloadedPackage{txgreeks}
\LWR@PreloadedPackage{newpxmath}
\LWR@PreloadedPackage{newtxmath}
\LWR@PreloadedPackage{newtxsf}
\LWR@PreloadedPackage{mathalpha}
+\LWR@PreloadedPackage{unicode-math}
% \end{macrocode}
% \pkg{nfssext-cfr} may be preloaded by \pkg{cfm-lm} or related font packages.
@@ -41117,9 +41273,12 @@ color:\LWR@origpound\LWR@tempcolor%
% {The MathJax v3 extension is used.\MessageBreak
% See the Lwarp manual for details}
\LWR@mathjaxwarn{unicode-math}
- {Not all characters are encoded correctly.\MessageBreak
+ {Do not use embedded Unicode characters.\MessageBreak
+ Not all characters are encoded correctly.\MessageBreak
+ \protect\left\space and \protect\right\space may not work.\MessageBreak
Some symbol fonts are not supported by MathJax,\MessageBreak
- and are only approximated}
+ and are only approximated.\MessageBreak
+ Latin characters may not be correct}
\LWR@mathjaxwarn{witharrows}
{Arrows can only point to the next line.\MessageBreak
Text is only placed on a single line}
@@ -42360,11 +42519,6 @@ color:\LWR@origpound\LWR@tempcolor%
% \changes{v0.42}{2017/10/27}{\pkg{algorithmicx}: If \progcode{FormatWP} add \cs{quad}s.}
% \changes{v0.44}{2017/11/16}{\pkg{algorithmicx}: Improved comment symbol.}
%
-% \codehtml
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-
% \begin{macrocode}
\AtBeginEnvironment{algorithmic}{%
%
@@ -42397,10 +42551,6 @@ span style="width:\LWR@printlength{\ALG@thistlm}; display:inline-block;"%
}%
% \end{macrocode}
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
-
% \iffalse
%</algorithmicx>
% \fi
@@ -42433,21 +42583,30 @@ span style="width:\LWR@printlength{\ALG@thistlm}; display:inline-block;"%
% \begin{macrocode}
\AfterEndPreamble{
\LWR@traceinfo{Patching alltt.}
+
\AtBeginEnvironment{alltt}{%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{}%
{%
\LWR@forcenewpage
- \LWR@atbeginverbatim{3}{alltt}%
+% \end{macrocode}
+% Vertical spacing changes if inside a list.
+% \begin{macrocode}
+ \LWR@atbeginverbatim{alltt}%
}%
}
+
\AfterEndEnvironment{alltt}{%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{}%
{%
- \LWR@afterendverbatim{2}%
+% \end{macrocode}
+% Vertical spacing changes if inside a list.
+% \begin{macrocode}
+ \LWR@afterendverbatim%
}%
}
+
}
% \end{macrocode}
%
@@ -44689,6 +44848,7 @@ span style="width:\LWR@printlength{\ALG@thistlm}; display:inline-block;"%
{}
{\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}%
\hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}
+
\protected\def\blx@imc@bibhyperref{%
\@ifnextchar[%]
{\blx@bibhyperref}
@@ -44725,7 +44885,134 @@ span style="width:\LWR@printlength{\ALG@thistlm}; display:inline-block;"%
}
\let\blx@imc@ifhyperref\@firstoftwo
-}
+% \end{macrocode}
+%
+%
+% The following patches are for back page references.
+%
+% \changes{v0.891}{2020/09/05}{\pkg{biblatex}: Fixed: Back page references.}
+% \begin{macrocode}
+\DeclareListFormat{pageref}{%
+ \ifnumless{\abx@pagerefstyle}{0}
+ {\usebibmacro{list:plain}%
+ \ifhyperref
+ {%
+% \hyperlink{page.#1}{#1}%
+ \ref{\BaseJobname-autopage-#1}% lwarp
+ }
+ {#1}}
+ {\ifnumequal{\value{listcount}}{1}
+ {\usebibmacro{pageref:init}}
+ {}%
+ \usebibmacro{pageref:comp}{#1}%
+ \ifnumequal{\value{listcount}}{\value{liststop}}
+ {\usebibmacro{pageref:dump}}
+ {}}}
+
+\renewbibmacro*{pageref:comp}[1]{%
+ \numdef\abx@range@prev{\abx@range@prev+1}%
+ \ifinteger{#1}
+ {\def\abx@range@num{#1}%
+ \def\abx@range@this{1}%
+ \ifnumequal{\abx@range@this}{\abx@range@last}
+ {}
+ {\def\abx@range@prev{-1}}}
+ {\ifrmnum{#1}
+ {\numdef\abx@range@num{\rmntonum{#1}}%
+ \def\abx@range@this{2}%
+ \ifnumequal{\abx@range@this}{\abx@range@last}
+ {}
+ {\def\abx@range@prev{-1}}}
+ {\undef\abx@range@num
+ \def\abx@range@this{0}%
+ \def\abx@range@prev{-1}}}%
+ \ifdef\abx@range@num
+ {\ifnumequal{\abx@range@num}{\abx@range@prev}
+ {\def\abx@range@hold{#1}%
+ \numdef\abx@range@diff{\abx@range@diff+1}}
+ {\usebibmacro{pageref:dump}%
+ \ifnumgreater{\abx@range@last}{-1}
+ {\printdelim{multilistdelim}}
+ {}%
+ \ifhyperref
+% {\hyperlink{page.#1}{#1}}
+ {\ref{\BaseJobname-autopage-#1}}% lwarp
+ {#1}}%
+ \edef\abx@range@prev{\abx@range@num}}
+ {\usebibmacro{pageref:dump}%
+ \ifnumgreater{\abx@range@last}{-1}
+ {\printdelim{multilistdelim}}
+ {}%
+ \ifhyperref
+% {\hyperlink{page.#1}{#1}}
+ {\ref{\BaseJobname-autopage-#1}}% lwarp
+ {#1}%
+ \def\abx@range@prev{-1}}%
+ \edef\abx@range@last{\abx@range@this}}
+
+\renewbibmacro*{pageref:dump}{%
+ \ifnumgreater{\abx@range@diff}{0}
+ {\ifcase\abx@pagerefstyle\relax % two
+ \bibrangedash
+ \ifhyperref
+% {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\abx@range@hold}%
+ \or % three
+ \ifnumless{\abx@range@diff}{2}
+ {\printdelim{multilistdelim}}
+ {\bibrangedash}%
+ \ifhyperref
+% {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\abx@range@hold}%
+ \or % two+
+ \ifnumless{\abx@range@diff}{2}
+ {\sqspace
+ \ifhyperref
+% {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}}
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\bibstring{sequens}}}
+ {\bibrangedash
+ \ifhyperref
+% {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\abx@range@hold}}%
+ \or % three+
+ \ifnumless{\abx@range@diff}{2}
+ {\sqspace
+ \ifhyperref
+% {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}}
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\bibstring{sequens}}}
+ {\ifnumless{\abx@range@diff}{3}
+ {\sqspace
+ \ifhyperref
+% {\hyperlink{page.\abx@range@hold}{\bibstring{sequentes}}}
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\bibstring{sequentes}}}
+ {\bibrangedash
+ \ifhyperref
+% {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\abx@range@hold}}}%
+ \else % all+
+ \ifnumless{\abx@range@diff}{2}
+ {\sqspace
+ \ifhyperref
+% {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}}
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\bibstring{sequens}}}
+ {\sqspace
+ \ifhyperref
+% {\hyperlink{page.\abx@range@hold}{\bibstring{sequentes}}}
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\bibstring{sequentes}}}%
+ \fi
+ \def\abx@range@diff{0}}
+ {}}
+
+}% \AfterPreamble
% \end{macrocode}
%
% \iffalse
@@ -44734,6 +45021,8 @@ span style="width:\LWR@printlength{\ALG@thistlm}; display:inline-block;"%
%
%
%
+%
+%
% \iffalse
%<*bibunits>
% \fi
@@ -45638,6 +45927,57 @@ span style="width:\LWR@printlength{\ALG@thistlm}; display:inline-block;"%
%
%
%
+% \iffalse
+%<*bussproofs>
+% \fi
+%
+% \part{lwarp-bussproofs.sty}
+%
+% \section{bussproofs}
+%
+% \credits{Samuel R. Buss}
+%
+% \DescribePackage{bussproofs}
+% \pkg{bussproofs} is used as-is for \HTML, and
+% emulated by \brand{MathJax}'s extension.
+%
+% If not using \brand{MathJax}, inline proofs with \cs{DisplayMath} must be placed
+% \trouble[\cs{DisplayProof}]{bussproofs=\pkg{bussproofs}}
+% inside a math expression.
+%
+% If using \brand{MathJax}, only the \env{prooftree} environment may be used,
+% not \cs{DisplayProof}.
+%
+% \changes{v0.891}{2020/09/20}{\pkg{bussproofs}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{bussproofs}% no date in file
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifbool{mathjax}{
+ \CustomizeMathJax{\require{bussproofs}}
+
+ \NewEnviron{LWR@HTML@prooftree}%
+ {\LWR@doequation{\BODY}{prooftree}}%
+ [\LWR@doendequation{prooftree}]
+ \LWR@formattedenv{prooftree}
+}{% SVG HTML
+ \BeforeBeginEnvironment{prooftree}{%
+ \begin{lateximage}[-bussproofs-~\PackageDiagramAltText]%
+ }
+ \AfterEndEnvironment{prooftree}{\end{lateximage}}
+}
+% \end{macrocode}
+%
+% \iffalse
+%</bussproofs>
+% \fi
+%
+%
+%
%
% \iffalse
%<*bxpapersize>
@@ -45927,21 +46267,20 @@ s%
% \end{noindmacro}
-% Redefined to look ahead for \cs{centering}, etc:
+% Appended to look ahead to the next token for \cs{centering}, etc:
% \changes{v0.84}{2020/04/20}{\pkg{caption}: Improved integration.}
-% ^^A Lwarp has to redefine to use \LWR@futurenonspacelet correctly.
+% \changes{v0.891}{2020/09/04}{\pkg{caption}: Improved integration.}
% \begin{macrocode}
\AtBeginDocument{
- \def\@xfloat#1[#2]{%
- \caption@ORI@xfloat{#1}[#2]%
- \caption@settype{#1}%
- \LWR@futurenonspacelet\LWR@mynexttoken\LWR@floatalignment%
- }%
- \def\@xdblfloat#1[#2]{% required for token capture
- \caption@ORI@xfloat{#1}[#2]%
- \caption@settype{#1}%
- \LWR@futurenonspacelet\LWR@mynexttoken\LWR@floatalignment%
- }%
+\xapptocmd{\@xfloat}
+ {\LWR@futurenonspacelet\LWR@mynexttoken\LWR@floatalignment}
+ {}
+ {\LWR@patcherror{caption}{@xfloat}}
+
+\xapptocmd{\@xdblfloat}
+ {\LWR@futurenonspacelet\LWR@mynexttoken\LWR@floatalignment}
+ {}
+ {\LWR@patcherror{caption}{@xdblfloat}}
}
% \end{macrocode}
@@ -46156,16 +46495,6 @@ s%
% \end{noindmacro}
%
%
-% Add non-breakable spaces:
-% \changes{v0.89}{2020/08/25}{\pkg{caption3}: Improved label seps.}
-% ^^A Debatable "improvements":
-% \begin{macrocode}
-\DeclareCaptionLabelSeparator{colon}{:~}
-\DeclareCaptionLabelSeparator{period}{.~}
-\DeclareCaptionLabelSeparator{space}{~}
-\DeclareCaptionLabelSeparator*{endash}{~\textendash~}
-\DeclareCaptionLabelSeparator{arabi}{\if@rl~\fi:~}
-% \end{macrocode}
%
% ^^A These are simplifications for HTML:
% \begin{macrocode}
@@ -48784,6 +49113,63 @@ name = \chemmacros_translate:n {scheme-name}
%
%
% \iffalse
+%<*cmbright>
+% \fi
+%
+% \part{lwarp-cmbright.sty}
+%
+% \section{cmbright}
+%
+% \credits{Walter Schmidt}
+%
+% \DescribePackage{cmbright}
+% \pkg{cmbright} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{cmbright=\pkg{cmbright}}
+% except \optn{slantedGreek} is honored, and \cs{mathbold} is available.
+%
+% The dedicated macros for upright Greek letters do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/14}{\pkg{cmbright}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{cmbright}[2005/04/13]
+
+\LWR@infoprocessingmathjax{cmbright}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\@ifpackagewith{cmbright}{slantedGreek}
+{
+ \LWR@mathjax@addgreek@u@it*{}{}
+}
+{}
+
+\LWR@mathjax@addgreek@u@up*{up}{}
+
+\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</cmbright>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*cmdtrack>
% \fi
%
@@ -48834,6 +49220,7 @@ name = \chemmacros_translate:n {scheme-name}
% This may need to be undone for some fonts.
%
% \changes{v0.81}{2020/03/03}{\pkg{colonequals}: Added.}
+% \changes{v0.891}{2020/09/08}{\pkg{colonequals}: Uses Unicode and \cs{mathrel}.}
%
% \codehtml
%
@@ -48845,24 +49232,24 @@ name = \chemmacros_translate:n {scheme-name}
\begin{warpMathJax}
\LWR@infoprocessingmathjax{colonequals}
-\CustomizeMathJax{\newcommand{\ratio}{\unicode{x2236}}}
-\CustomizeMathJax{\newcommand{\coloncolon}{\unicode{x2237}}}
-\CustomizeMathJax{\newcommand{\colonequals}{\coloncolon=}}
-\CustomizeMathJax{\newcommand{\coloncolonequals}{\coloncolon=}}
-\CustomizeMathJax{\newcommand{\equalscolon}{=\!\ratio}}
-\CustomizeMathJax{\newcommand{\equalscoloncolon}{=\!\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonminus}{\ratio-}}
-\CustomizeMathJax{\newcommand{\coloncolonminus}{\coloncolon-}}
-\CustomizeMathJax{\newcommand{\minuscolon}{-\ratio}}
-\CustomizeMathJax{\newcommand{\minuscoloncolon}{-\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonapprox}{\ratio\approx}}
-\CustomizeMathJax{\newcommand{\coloncolonapprox}{\coloncolon\approx}}
-\CustomizeMathJax{\newcommand{\approxcolon}{\approx\!\ratio}}
-\CustomizeMathJax{\newcommand{\approxcoloncolon}{\approx\!\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonsim}{\ratio\sim}}
-\CustomizeMathJax{\newcommand{\coloncolonsim}{\coloncolon\sim}}
-\CustomizeMathJax{\newcommand{\simcolon}{\sim\!\ratio}}
-\CustomizeMathJax{\newcommand{\simcoloncolon}{\sim\!\coloncolon}}
+\CustomizeMathJax{\newcommand{\ratio}{\mathrel{\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\coloncolon}{\mathrel{\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonequals}{\mathrel{\unicode{x2236}\!=}}}
+\CustomizeMathJax{\newcommand{\coloncolonequals}{\mathrel{\unicode{x2237}\!=}}}
+\CustomizeMathJax{\newcommand{\equalscolon}{\mathrel{=\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\equalscoloncolon}{\mathrel{=\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonminus}{\mathrel{\unicode{x2236}-}}}
+\CustomizeMathJax{\newcommand{\coloncolonminus}{\mathrel{\unicode{x2237}-}}}
+\CustomizeMathJax{\newcommand{\minuscolon}{\mathrel{-\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\minuscoloncolon}{\mathrel{-\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonapprox}{\mathrel{\unicode{x2236}\!\approx}}}
+\CustomizeMathJax{\newcommand{\coloncolonapprox}{\mathrel{\unicode{x2237}\!\approx}}}
+\CustomizeMathJax{\newcommand{\approxcolon}{\mathrel{\approx\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\approxcoloncolon}{\mathrel{\approx\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonsim}{\mathrel{\unicode{x2236}\!\sim}}}
+\CustomizeMathJax{\newcommand{\coloncolonsim}{\mathrel{\unicode{x2237}\!\sim}}}
+\CustomizeMathJax{\newcommand{\simcolon}{\mathrel{\sim\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\simcoloncolon}{\mathrel{\sim\!\unicode{x2237}}}}
\end{warpMathJax}
% \end{macrocode}
%
@@ -50139,12 +50526,13 @@ name = \chemmacros_translate:n {scheme-name}
% \codehtml
%
% \begin{macrocode}
-\LWR@origRequirePackage{lwarp-common-mathjax-letters}
-
\LWR@ProvidesPackagePass{econometrics}% no date specified in the original
% \end{macrocode}
%
+%
% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
\begin{warpMathJax}
\LWR@infoprocessingmathjax{econometrics}
@@ -50957,11 +51345,6 @@ name = \chemmacros_translate:n {scheme-name}
%
%
%
-% \codehtml
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-
% \cs{newlist} \marg{name} \marg{type} \marg{maxdepth} \\
% \cs{renewlist} \marg{name} \marg{type} \marg{maxdepth}
@@ -50982,10 +51365,6 @@ name = \chemmacros_translate:n {scheme-name}
% \end{macrocode}
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
-
% \iffalse
%</enumitem>
% \fi
@@ -52087,24 +52466,24 @@ name = \chemmacros_translate:n {scheme-name}
% \begin{macrocode}
\let\LWRFB@UseVerbatim\UseVerbatim
\renewcommand*{\UseVerbatim}[1]{%
-\LWR@atbeginverbatim{3}{Verbatim}%
+\LWR@atbeginverbatim{Verbatim}%
\LWRFB@UseVerbatim{#1}%
-\LWR@afterendverbatim{.5}%
+\LWR@afterendverbatim%
}
\let\LWRFB@LUseVerbatim\LUseVerbatim
\renewcommand*{\LUseVerbatim}[1]{%
-\LWR@atbeginverbatim{3}{LVerbatim}%
+\LWR@atbeginverbatim{LVerbatim}%
\noindent%
\LWRFB@LUseVerbatim{#1}%
-\LWR@afterendverbatim{.5}%
+\LWR@afterendverbatim%
}
\def\@BUseVerbatim[#1]#2{%
-\LWR@atbeginverbatim{3}{BVerbatim}%
+\LWR@atbeginverbatim{BVerbatim}%
\LWRFB@UseVerbatim{#2}%
-\LWR@afterendverbatim{.5}%
+\LWR@afterendverbatim%
}
% \end{macrocode}
%
@@ -52394,11 +52773,10 @@ name = \chemmacros_translate:n {scheme-name}
% \end{macrocode}
%
% Adds \HTML\ formatting:
+% \changes{v0.891}{2020/09/12}{\pkg{fancyvrb}: Fix: \env{BVerbatim} with labels.}
% \begin{macrocode}
\def\FV@BUseVerbatim#1{%
- \LWR@atbeginverbatim{0}{verbatim}%
\FV@BVerbatimBegin#1\FV@BVerbatimEnd%
- \LWR@afterendverbatim{0}%
}
% \end{macrocode}
@@ -52430,14 +52808,14 @@ name = \chemmacros_translate:n {scheme-name}
\LWR@htmltagc{/div}\LWR@orignewline%
\fi
\fi
-\LWR@atbeginverbatim{0}{verbatim}%
+\LWR@atbeginverbatim{verbatim}%
% }%
}
\newcommand*{\LWR@fvendnone}{%
\LWR@traceinfo{fvendnone}%
% \hbox to\z@{
-\LWR@afterendverbatim{0}%
+\LWR@afterendverbatim%
\LWR@stoppars%
\ifx\FV@LabelPositionBottomLine\relax\else
\ifx\FV@LabelEnd\relax\else
@@ -52624,17 +53002,23 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \end{macrocode}
% \begin{environment}{BVerbatim}
+% \changes{v0.891}{2020/09/12}{\pkg{fancyvrb}: Fix: \env{BVerbatim} with labels.}
% \begin{macrocode}
-\AtBeginEnvironment{BVerbatim}
-{%
-\LWR@forcenewpage% instead of \preto
-\LWR@atbeginverbatim{0}{bverbatim}%
-}
-\AfterEndEnvironment{BVerbatim}
-{%
-\LWR@afterendverbatim{0}%
-}
+\xpretocmd{\FV@BeginVBox}
+ {%
+ \LWR@forcenewpage% instead of \preto
+ \LWR@atbeginverbatim{bverbatim}%
+ }
+ {}
+ {\LWR@patcherror{fancyvrb}{FV@BeginVBox}}
+
+\xapptocmd{\FV@EndVBox}
+ {%
+ \LWR@afterendverbatim%
+ }
+ {}
+ {\LWR@patcherror{fancyvrb}{FV@EndVBox}}
% \end{macrocode}
% \end{environment}
@@ -54657,6 +55041,112 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
%
%
% \iffalse
+%<*fourier>
+% \fi
+%
+% \part{lwarp-fourier.sty}
+%
+% \section{fourier}
+%
+% \credits{Michel Bovani}
+%
+% \DescribePackage{fourier}
+% \pkg{fourier} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{fourier=\pkg{fourier}}
+% except \optn{sloped} and \optn{upright} are honored for Greek characters,
+% but \brand{MathJax} cannot yet honor these for Latin characters.
+%
+% The dedicated macros for upright and italic Greek letters do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/14}{\pkg{fourier}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{fourier}[2020/03/03]
+
+\LWR@infoprocessingmathjax{fourier}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
+\LWR@origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+
+\@ifpackagewith{fourier}{sloped}
+ {
+ \LWR@mathjax@addgreek@l@up{other}{}
+ \LWR@mathjax@addgreek@u@it*{other}{}
+ }% sloped
+ {% not sloped
+ \@ifpackagewith{fourier}{upright}
+ {% upright option
+ \LWR@mathjax@addgreek@l@up{}{}
+ \LWR@mathjax@addgreek@u@up*{}{}
+ \LWR@mathjax@addgreek@l@it{other}{}
+ \LWR@mathjax@addgreek@u@it*{other}{}
+ }
+ {% neither sloped nor upright
+ \LWR@mathjax@addgreek@l@up{other}{}
+ \LWR@mathjax@addgreek@u@it*{other}{}
+ }
+ }
+
+\CustomizeMathJax{\newcommand{\othergreek}[1]{#1}}
+\CustomizeMathJax{\let\varvarrho\varrho}
+\CustomizeMathJax{\let\varvarpi\varpi}
+\CustomizeMathJax{\let\othervarvarpi\othervarpi}
+\CustomizeMathJax{\let\othervarvarrho\othervarrho}
+\CustomizeMathJax{\let\varpartialdiff\partial}
+
+\CustomizeMathJax{\let\llbracket[}% single only
+\CustomizeMathJax{\let\rrbracket]}% single only
+\CustomizeMathJax{\let\dblbrackleft[}% single only
+\CustomizeMathJax{\let\dblbrackright]}% single only
+\CustomizeMathJax{\let\VERT|}% single only
+
+\CustomizeMathJax{\newcommand{\parallelslant}{\mathrel{\unicode{x02AFD}}}}
+\CustomizeMathJax{\newcommand{\thething}{\mathord{\unicode{x1F60E}}}}
+\CustomizeMathJax{\newcommand{\nparallelslant}{%
+ \mathrel{\LWRoverlaysymbols{-}{\unicode{x02AFD}}}%
+}}
+\CustomizeMathJax{\newcommand{\xswordsup}{\mathord{\unicode{x2694}}}}
+\CustomizeMathJax{\newcommand{\xswordsdown}{\mathord{\unicode{x2694}}}}% up
+\CustomizeMathJax{\newcommand{\notowns}{\mathrel{\unicode{x220C}}}}
+
+\CustomizeMathJax{\newcommand{\iintop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\let\oiintop\oiint}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\let\oiiintop\oiiint}
+\CustomizeMathJax{\newcommand{\slashint}{\mathop{\unicode{x2A0D}}\limits}}
+\CustomizeMathJax{\let\slashintop\slashint}
+
+\CustomizeMathJax{\let\overgroup\overparen}
+\CustomizeMathJax{\let\wideparen\overparen}
+\CustomizeMathJax{\let\widearc\overparen}
+\CustomizeMathJax{\let\wideOarc\overrightarrow}
+\CustomizeMathJax{\newcommand{\widering}[1]{\stackrel{\unicode{x2218}}{\overgroup{#1}}}}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</fourier>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*framed>
% \fi
@@ -56968,21 +57458,267 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \ProvidesPackage{lwarp-#1-#2}% not allowed
\PackageInfo{lwarp}{%
Using the lwarp HTML version of package `hyperref',\MessageBreak
-and discarding options.\MessageBreak
+and discarding options except backref, pagebackref.\MessageBreak
(Not using \protect\ProvidesPackage, so that other packages\MessageBreak
do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
+% \end{macrocode}
+%
+%
+% \changes{v0.891}{2020/09/05}{\pkg{hyperref}: Added \optn{backref}, \optn{pagebackref}.}
+% \begin{macrocode}
+\SetupKeyvalOptions{family=LWR@hyperref,prefix=LWR@hyperref@}
+
+\newcommand{\hypersetup}[1]{\setkeys{LWR@hyperref}{#1}}
+
+\define@key{LWR@hyperref}{a4paper}[]{}
+\define@key{LWR@hyperref}{a5paper}[]{}
+\define@key{LWR@hyperref}{b5paper}[]{}
+\define@key{LWR@hyperref}{letterpaper}[]{}
+\define@key{LWR@hyperref}{legalpaper}[]{}
+\define@key{LWR@hyperref}{executivepaper}[]{}
+\define@key{LWR@hyperref}{implicit}[]{}
+\define@key{LWR@hyperref}{draft}[]{}
+\define@key{LWR@hyperref}{final}[]{}
+\define@key{LWR@hyperref}{setpagesize}[]{}
+\define@key{LWR@hyperref}{debug}[]{}
+\define@key{LWR@hyperref}{linktocpage}[]{}
+\define@key{LWR@hyperref}{linktoc}[]{}
+\define@key{LWR@hyperref}{extension}[]{}
+\define@key{LWR@hyperref}{verbose}[]{}
+\define@key{LWR@hyperref}{typexml}[]{}
+\define@key{LWR@hyperref}{raiselinks}[]{}
+\define@key{LWR@hyperref}{breaklinks}[]{}
+\define@key{LWR@hyperref}{localanchorname}[]{}
+\define@key{LWR@hyperref}{pageanchor}[]{}
+\define@key{LWR@hyperref}{plainpages}[]{}
+\define@key{LWR@hyperref}{naturalnames}[]{}
+\define@key{LWR@hyperref}{hypertexnames}[]{}
+\define@key{LWR@hyperref}{nesting}[]{}
+\define@key{LWR@hyperref}{destlabel}[]{}
+\define@key{LWR@hyperref}{unicode}[]{}
+\define@key{LWR@hyperref}{pdfencoding}[]{}
+\define@key{LWR@hyperref}{psdextra}[]{}
+\define@key{LWR@hyperref}{pdfversion}[]{}
+\define@key{LWR@hyperref}{dvipdfmx-outline-open}[]{}
+\define@key{LWR@hyperref}{driverfallback}[]{}
+\define@key{LWR@hyperref}{customdriver}[]{}
+\define@key{LWR@hyperref}{hyperfigures}[]{}
+\define@key{LWR@hyperref}{hyperfootnotes}[]{}
+\define@key{LWR@hyperref}{hyperindex}[]{}
+\define@key{LWR@hyperref}{encap}[]{}
+\define@key{LWR@hyperref}{colorlinks}[]{}
+\define@key{LWR@hyperref}{ocgcolorlinks}[]{}
+\define@key{LWR@hyperref}{frenchlinks}[]{}
+\define@key{LWR@hyperref}{bookmarks}[]{}
+\define@key{LWR@hyperref}{bookmarksopen}[]{}
+\define@key{LWR@hyperref}{bookmarksdepth}[]{}
+\define@key{LWR@hyperref}{bookmarksopenlevel}[]{}
+\define@key{LWR@hyperref}{bookmarkstype}[]{}
+\define@key{LWR@hyperref}{bookmarksnumbered}[]{}
+\define@key{LWR@hyperref}{CJKbookmarks}[]{}
+\define@key{LWR@hyperref}{link}[]{}
+\define@key{LWR@hyperref}{anchor}[]{}
+\define@key{LWR@hyperref}{cite}[]{}
+\define@key{LWR@hyperref}{file}[]{}
+\define@key{LWR@hyperref}{url}[]{}
+\define@key{LWR@hyperref}{menu}[]{}
+\define@key{LWR@hyperref}{run}[]{}
+\define@key{LWR@hyperref}{linkbordercolor}[]{}
+\define@key{LWR@hyperref}{anchorbordercolor}[]{}
+\define@key{LWR@hyperref}{citebordercolor}[]{}
+\define@key{LWR@hyperref}{filebordercolor}[]{}
+\define@key{LWR@hyperref}{urlbordercolor}[]{}
+\define@key{LWR@hyperref}{menubordercolor}[]{}
+\define@key{LWR@hyperref}{runbordercolor}[]{}
+\define@key{LWR@hyperref}{pagecolor}[]{}
+\define@key{LWR@hyperref}{baseurl}[]{}
+\define@key{LWR@hyperref}{linkfileprefix}[]{}
+\define@key{LWR@hyperref}{pdfpagetransition}[]{}
+\define@key{LWR@hyperref}{pdfpageduration}[]{}
+\define@key{LWR@hyperref}{pdfpagehidden}[]{}
+\define@key{LWR@hyperref}{pagebordercolor}[]{}
+\define@key{LWR@hyperref}{allbordercolors}[]{}
+\define@key{LWR@hyperref}{pdfhighlight}[]{}
+\define@key{LWR@hyperref}{pdfborder}[]{}
+\define@key{LWR@hyperref}{pdfborderstyle}[]{}
+\define@key{LWR@hyperref}{pdfprintpagerange}[]{}
+\define@key{LWR@hyperref}{pdfusetitle}[]{}
+\define@key{LWR@hyperref}{pdftitle}[]{}
+\define@key{LWR@hyperref}{pdfauthor}[]{}
+\define@key{LWR@hyperref}{pdfproducer}[]{}
+\define@key{LWR@hyperref}{pdfcreator}[]{}
+\define@key{LWR@hyperref}{addtopdfcreator}[]{}
+\define@key{LWR@hyperref}{pdfcreationdate}[]{}
+\define@key{LWR@hyperref}{pdfmoddate}[]{}
+\define@key{LWR@hyperref}{pdfsubject}[]{}
+\define@key{LWR@hyperref}{pdfkeywords}[]{}
+\define@key{LWR@hyperref}{pdftrapped}[]{}
+\define@key{LWR@hyperref}{pdfinfo}[]{}
+\define@key{LWR@hyperref}{pdfview}[]{}
+\define@key{LWR@hyperref}{pdflinkmargin}[]{}
+\define@key{LWR@hyperref}{pdfstartpage}[]{}
+\define@key{LWR@hyperref}{pdfstartview}[]{}
+\define@key{LWR@hyperref}{pdfremotestartview}[]{}
+\define@key{LWR@hyperref}{pdfpagescrop}[]{}
+\define@key{LWR@hyperref}{pdftoolbar}[]{}
+\define@key{LWR@hyperref}{pdfmenubar}[]{}
+\define@key{LWR@hyperref}{pdfwindowui}[]{}
+\define@key{LWR@hyperref}{pdffitwindow}[]{}
+\define@key{LWR@hyperref}{pdfcenterwindow}[]{}
+\define@key{LWR@hyperref}{pdfdisplaydoctitle}[]{}
+\define@key{LWR@hyperref}{pdfa}[]{}
+\define@key{LWR@hyperref}{pdfnewwindow}[]{}
+\define@key{LWR@hyperref}{pdflang}[]{}
+\define@key{LWR@hyperref}{pdfpagelabels}[]{}
+\define@key{LWR@hyperref}{pdfescapeform}[]{}
+\define@key{LWR@hyperref}{english}[]{}
+\define@key{LWR@hyperref}{UKenglish}[]{}
+\define@key{LWR@hyperref}{british}[]{}
+\define@key{LWR@hyperref}{USenglish}[]{}
+\define@key{LWR@hyperref}{american}[]{}
+\define@key{LWR@hyperref}{german}[]{}
+\define@key{LWR@hyperref}{austrian}[]{}
+\define@key{LWR@hyperref}{ngerman}[]{}
+\define@key{LWR@hyperref}{naustrian}[]{}
+\define@key{LWR@hyperref}{russian}[]{}
+\define@key{LWR@hyperref}{brazil}[]{}
+\define@key{LWR@hyperref}{brazilian}[]{}
+\define@key{LWR@hyperref}{portuguese}[]{}
+\define@key{LWR@hyperref}{spanish}[]{}
+\define@key{LWR@hyperref}{catalan}[]{}
+\define@key{LWR@hyperref}{afrikaans}[]{}
+\define@key{LWR@hyperref}{french}[]{}
+\define@key{LWR@hyperref}{frenchb}[]{}
+\define@key{LWR@hyperref}{francais}[]{}
+\define@key{LWR@hyperref}{acadian}[]{}
+\define@key{LWR@hyperref}{canadien}[]{}
+\define@key{LWR@hyperref}{italian}[]{}
+\define@key{LWR@hyperref}{magyar}[]{}
+\define@key{LWR@hyperref}{hungarian}[]{}
+\define@key{LWR@hyperref}{greek}[]{}
+\define@key{LWR@hyperref}{dutch}[]{}
+\define@key{LWR@hyperref}{tex4ht}[]{}
+\define@key{LWR@hyperref}{pdftex}[]{}
+\define@key{LWR@hyperref}{luatex}[]{}
+\define@key{LWR@hyperref}{nativepdf}[]{}
+\define@key{LWR@hyperref}{dvipdfm}[]{}
+\define@key{LWR@hyperref}{dvipdfmx}[]{}
+\define@key{LWR@hyperref}{xetex}[]{}
+\define@key{LWR@hyperref}{pdfmark}[]{}
+\define@key{LWR@hyperref}{dvips}[]{}
+\define@key{LWR@hyperref}{hypertex}[]{}
+\define@key{LWR@hyperref}{vtex}[]{}
+\define@key{LWR@hyperref}{vtexpdfmark}[]{}
+\define@key{LWR@hyperref}{dviwindo}[]{}
+\define@key{LWR@hyperref}{dvipsone}[]{}
+\define@key{LWR@hyperref}{textures}[]{}
+\define@key{LWR@hyperref}{latex2html}[]{}
+\define@key{LWR@hyperref}{ps2pdf}[]{}
+\define@key{LWR@hyperref}{vietnamese}[]{}
+\define@key{LWR@hyperref}{vietnam}[]{}
+\define@key{LWR@hyperref}{arabic}[]{}
+\define@key{LWR@hyperref}{hidelinks}[]{}
+\define@key{LWR@hyperref}{draft}[]{}
+\define@key{LWR@hyperref}{nolinks}[]{}
+\define@key{LWR@hyperref}{final}[]{}
+\define@key{LWR@hyperref}{pdfa}[]{}
+\define@key{LWR@hyperref}{pdfversion}[]{}
+\define@key{LWR@hyperref}{typexml}[]{}
+\define@key{LWR@hyperref}{tex4ht}[]{}
+\define@key{LWR@hyperref}{pdftex}[]{}
+\define@key{LWR@hyperref}{nativepdf}[]{}
+\define@key{LWR@hyperref}{dvipdfm}[]{}
+\define@key{LWR@hyperref}{dvipdfmx}[]{}
+\define@key{LWR@hyperref}{dvipdfmx-outline-open}[]{}
+\define@key{LWR@hyperref}{pdfmark}[]{}
+\define@key{LWR@hyperref}{dvips}[]{}
+\define@key{LWR@hyperref}{hypertex}[]{}
+\define@key{LWR@hyperref}{vtex}[]{}
+\define@key{LWR@hyperref}{vtexpdfmark}[]{}
+\define@key{LWR@hyperref}{dviwindo}[]{}
+\define@key{LWR@hyperref}{dvipsone}[]{}
+\define@key{LWR@hyperref}{textures}[]{}
+\define@key{LWR@hyperref}{latex2html}[]{}
+\define@key{LWR@hyperref}{ps2pdf}[]{}
+\define@key{LWR@hyperref}{xetex}[]{}
+\define@key{LWR@hyperref}{driverfallback}[]{}
+\define@key{LWR@hyperref}{customdriver}[]{}
+\define@key{LWR@hyperref}{pdfversion}[]{}
+\define@key{LWR@hyperref}{bookmarks}[]{}
+\define@key{LWR@hyperref}{ocgcolorlinks}[]{}
+\define@key{LWR@hyperref}{colorlinks}[]{}
+\define@key{LWR@hyperref}{frenchlinks}[]{}
+\define@key{LWR@hyperref}{backref}[]{}
+\define@key{LWR@hyperref}{pagebackref}[]{}
+\define@key{LWR@hyperref}{destlabel}[]{}
+\define@key{LWR@hyperref}{pdfpagescrop}[]{}
+\define@key{LWR@hyperref}{pdfpagemode}[]{}
+\define@key{LWR@hyperref}{pdfnonfullscreenpagemode}[]{}
+\define@key{LWR@hyperref}{pdfdirection}[]{}
+\define@key{LWR@hyperref}{pdfviewarea}[]{}
+\define@key{LWR@hyperref}{pdfviewclip}[]{}
+\define@key{LWR@hyperref}{pdfprintarea}[]{}
+\define@key{LWR@hyperref}{pdfprintclip}[]{}
+\define@key{LWR@hyperref}{pdfprintscaling}[]{}
+\define@key{LWR@hyperref}{pdfduplex}[]{}
+\define@key{LWR@hyperref}{pdfpicktraybypdfsize}[]{}
+\define@key{LWR@hyperref}{pdfprintpagerange}[]{}
+\define@key{LWR@hyperref}{pdfnumcopies}[]{}
+\define@key{LWR@hyperref}{pdfstartview}[]{}
+\define@key{LWR@hyperref}{pdfstartpage}[]{}
+\define@key{LWR@hyperref}{pdftoolbar}[]{}
+\define@key{LWR@hyperref}{pdfmenubar}[]{}
+\define@key{LWR@hyperref}{pdfwindowui}[]{}
+\define@key{LWR@hyperref}{pdffitwindow}[]{}
+\define@key{LWR@hyperref}{pdfcenterwindow}[]{}
+\define@key{LWR@hyperref}{pdfdisplaydoctitle}[]{}
+\define@key{LWR@hyperref}{pdfpagelayout}[]{}
+\define@key{LWR@hyperref}{pdflang}[]{}
+\define@key{LWR@hyperref}{baseurl}[]{}
+\define@key{LWR@hyperref}{pdfusetitle}[]{}
+\define@key{LWR@hyperref}{pdfpagelabels}[]{}
+\define@key{LWR@hyperref}{hyperfootnotes}[]{}
+\define@key{LWR@hyperref}{hyperfigures}[]{}
+\define@key{LWR@hyperref}{hyperindex}[]{}
+\define@key{LWR@hyperref}{encap}[]{}
+\define@key{LWR@hyperref}{linkcolor}[]{}
+\define@key{LWR@hyperref}{anchorcolor}[]{}
+\define@key{LWR@hyperref}{citecolor}[]{}
+\define@key{LWR@hyperref}{filecolor}[]{}
+\define@key{LWR@hyperref}{urlcolor}[]{}
+\define@key{LWR@hyperref}{menucolor}[]{}
+\define@key{LWR@hyperref}{runcolor}[]{}
+\define@key{LWR@hyperref}{allcolors}[]{}
+
+\DeclareStringOption[false]{backref}[section]
+
+\DeclareBoolOption{pagebackref}
+
+\DeclareDefaultOption{}
-\DeclareOption*{}
+\ProcessKeyvalOptions*\relax
% \end{macrocode}
%
-% \changes{v0.68}{2019/02/28}{\pkg{hyperref}: Fix for options with braces.}
+% Maybe load \pkg{backref}:
% \begin{macrocode}
-% \ProcessOptions\relax
-\let\ds@\@empty% from the original \ProcessOptions
-\edef\@curroptions{}% lwarp modification to \ProcessOptions
-\@process@ptions\relax% from the original \ProcessOptions
-% \end{macrocode}
+\ifdefstring{\LWR@hyperref@backref}{section}
+ {\RequirePackage{backref}}
+ {}
+
+\ifdefstring{\LWR@hyperref@backref}{slide}
+ {\RequirePackage{backref}}
+ {}
+
+\ifdefstring{\LWR@hyperref@backref}{page}
+ {\RequirePackage{backref}}
+ {}
+\ifLWR@hyperref@pagebackref
+ \RequirePackage{backref}
+\fi
+% \end{macrocode}
+%
+%
% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
% \begin{macrocode}
\LetLtxMacro\href\LWR@href
@@ -56993,7 +57729,6 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{macrocode}
-\newcommand*{\hypersetup}[1]{}
\newcommand*{\hyperbaseurl}[1]{}
% \end{macrocode}
@@ -57238,7 +57973,9 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{noindmacro}{\texorpdfstring} \marg{\TeX{}string} \marg{PDFstring}
%
% \changes{v0.48}{2018/02/02}{\pkg{hyperref}: \cs{texorpdfstring} now uses the \TeX\ string.}
+% \changes{v0.891}{2020/09/21}{\pkg{hyperref}: Fixed \cs{texorpdfstring} with \pkg{babel-french}.}
% \begin{macrocode}
+\let\texorpdfstring\relax
\newcommand{\texorpdfstring}[2]{#1}
% \end{macrocode}
% \end{noindmacro}
@@ -58661,6 +59398,213 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
%
%
+% \iffalse
+%<*kpfonts>
+% \fi
+%
+% \part{lwarp-kpfonts.sty}
+%
+% \section{kpfonts}
+%
+% \credits{Christophe Caignaert}
+%
+% \DescribePackage{kpfonts}
+% \pkg{kpfonts} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors the options
+% \trouble[limitations]{kpfonts=\pkg{kpfonts}}
+% \optn{uprightRoman} for \cs{D} only,
+% \optn{classicReIm},
+% \optn{frenchstyle} for Greek only,
+% \optn{upright} for Greek only,
+% \optn{uprightgreeks},
+% \optn{slantedGreeks},
+% and \optn{mathcalasscript}.
+%
+% The dedicated macros for Greek work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/19}{\pkg{kpfonts}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{kpfonts}[2010/08/20]
+
+\LWR@infoprocessingmathjax{kpfonts}
+
+\LWR@origRequirePackage{lwarp-common-mathjax-newpxtxmath}
+
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\ifkp@calasscr
+ \CustomizeMathJax{\let\LWRorigmathscr\mathscr}
+ \CustomizeMathJax{\let\LWRorigmathcal\mathcal}
+ \CustomizeMathJax{\let\mathscr\LWRorigmathcal}
+ \CustomizeMathJax{\let\mathcal\LWRorigmathscr}
+\fi
+
+\ifkp@upgrk % lowercase
+ \LWR@mathjax@addgreek@l@up{}{}
+ \LWR@mathjax@addgreek@l@it{other}{}
+\else
+ \LWR@mathjax@addgreek@l@up{other}{}
+\fi
+
+\ifkp@slGrk
+ \LWR@mathjax@addgreek@u@it*{}{}
+ \LWR@mathjax@addgreek@u@up*{other}{}
+ \LWR@mathjax@addgreek@u@up*{var}{}
+\else
+ \LWR@mathjax@addgreek@u@it*{other}{}
+ \LWR@mathjax@addgreek@u@it*{var}{}
+\fi
+
+\LWR@mathjax@addgreek@u@up*{}{up}
+\LWR@mathjax@addgreek@l@up{}{up}
+
+\LWR@mathjax@addgreek@u@it*{}{sl}
+\LWR@mathjax@addgreek@l@it{}{sl}
+
+\CustomizeMathJax{\newcommand{\partialsl}{\mathord{\unicode{x1D715}}}}
+\CustomizeMathJax{\let\partialup\uppartial}% not upright
+
+\ifkp@oldReIm
+\else
+ \CustomizeMathJax{\renewcommand{\Re}{\mathfrak{Re}}}
+ \CustomizeMathJax{\renewcommand{\Im}{\mathfrak{Im}}}
+\fi
+
+\ifkp@Dcommand
+ \ifkp@upRm%
+ \CustomizeMathJax{
+ \def\D#1{\mathclose{\,\mathrm{d}}#1}
+ }
+ \else
+ \CustomizeMathJax{
+ \def\D#1{\mathclose{\,\mathit{d}}#1}
+ }
+ \fi
+\fi
+
+\CustomizeMathJax{\let\pounds\mathsterling}
+\CustomizeMathJax{\let\kppounds\mathsterling}
+
+\CustomizeMathJax{\newcommand{\mathup}[1]{\mathrm{#1}}}% never sans
+\CustomizeMathJax{\let\mathupright\mathup}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</kpfonts>
+% \fi
+%
+%
+%
+% \iffalse
+%<*kpfonts-otf>
+% \fi
+%
+% \part{lwarp-kpfonts-otf.sty}
+%
+% \section{kpfonts-otf}
+%
+% \credits{Daniel Flipo}
+%
+% \DescribePackage{kpfonts-otf}
+% \pkg{kpfonts-otf} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors the options
+% \trouble[limitations]{kpfonts-otf=\pkg{kpfonts-otf}}
+% \optn{fancyReIm},
+% \optn{mathcal},
+% \optn{frenchstyle} for Greek only,
+% and \optn{mathcalasscript}.
+%
+% Also see the options for \pkg{unicode-math}, which is loaded by \pkg{kpfonts-otf}.
+%
+% The \pkg{unicode-math} dedicated macros for Greek work correctly.
+%
+% The \brand{MathJax} emulation does not change with the use of \cs{mathversion}.
+% \watchout[\cs{mathversion}]
+% Whatever emulation is established at the begin of the document will remain.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/20}{\pkg{kpfonts-otf}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{kpfonts-otf}[2020/06/20]
+
+\LWR@infoprocessingmathjax{kpfonts-otf}
+
+\LWR@origRequirePackage{lwarp-common-mathjax-nonunicode}
+
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\ifkp@calasscr
+ \CustomizeMathJax{\let\mathscr\mathcal}
+\else
+ \CustomizeMathJax{\let\mathcal\mathscr}
+\fi
+
+\ifkp@frenchstyle
+ \LWR@mathjax@addgreek@l@up{}{}
+ \LWR@mathjax@addgreek@u@up*{}{}
+\fi
+
+\ifkp@oldReIm
+ \CustomizeMathJax{\renewcommand{\Re}{\mathfrak{Re}}}
+ \CustomizeMathJax{\renewcommand{\Im}{\mathfrak{Im}}}
+\else
+\fi
+
+\ifkp@Dcommand
+ \CustomizeMathJax{
+ \def\D#1{\mathclose{\,\mathrm{d}}#1}
+ }
+\fi
+
+\CustomizeMathJax{\let\varint\int}
+\CustomizeMathJax{\let\variint\iint}
+\CustomizeMathJax{\let\variiint\iiint}
+\CustomizeMathJax{\let\variiiint\iiiint}
+\CustomizeMathJax{\let\varidotsint\idotsint}
+
+\CustomizeMathJax{\newcommand{\varointctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222E}}}}
+\CustomizeMathJax{\newcommand{\oiintclockwise}{\mathop{\unicode{x0222F}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\oiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222F}}}}
+\CustomizeMathJax{\newcommand{\varoiintclockwise}{\mathop{\unicode{x0222F}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\varoiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222F}}}}
+\CustomizeMathJax{\newcommand{\oiiintclockwise}{\mathop{\unicode{x02230}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\oiiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x02230}}}}
+\CustomizeMathJax{\newcommand{\varoiiintclockwise}{\mathop{\unicode{x02230}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\varoiiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x02230}}}}
+\CustomizeMathJax{\newcommand{\sqiint}{\mathop{\unicode{x2A16}\!\!\unicode{x2A16}}}}
+\CustomizeMathJax{\newcommand{\sqiiint}{\mathop{\unicode{x2A16}\!\!\unicode{x2A16}\!\!\unicode{x2A16}}}}
+
+\CustomizeMathJax{\let\widearc\overparen}
+\CustomizeMathJax{\let\widearcarrow\overrightarrow}
+\CustomizeMathJax{\let\overrightarc\overrightarrow}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</kpfonts-otf>
+% \fi
+%
+%
%
% \iffalse
%<*layaureo>
@@ -59053,6 +59997,371 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
%
%
+% \iffalse
+%<*libertinust1math>
+% \fi
+%
+% \part{lwarp-libertinust1math.sty}
+%
+% \section{libertinust1math}
+%
+% \credits{Michael Sharpe}
+%
+% \DescribePackage{libertinust1math}
+% \pkg{libertinust1math} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors
+% \optn{frenchmath} for Greek but not Latin characters,
+% and \optn{slantedGreek}, \optn{uprightGreek}, and \optn{ISO}
+% also adjust Greek characters.
+% \brand{MathJax} cannot yet honor options for adjusting Latin characters.
+%
+% The dedicated macros for upright and italic Greek letters do work correctly.
+% Some of the symbol font macros such as \cs{mathsfbf} work for Latin but not
+% for Greek letters.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/18}{\pkg{libertinust1math}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{libertinust1math}[2020/06/10]
+
+\LWR@infoprocessingmathjax{libertinust1math}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\iflibus@slantedG
+ \LWR@mathjax@addgreek@u@it*{}{}
+\else
+ \LWR@mathjax@addgreek@u@up*{}{}
+\fi
+
+\LWR@mathjax@addgreek@u@it*{}{it}
+\LWR@mathjax@addgreek@u@up*{up}{}
+\LWR@mathjax@addgreek@u@up*{}{up}
+
+\iflibus@frenchm
+ \LWR@mathjax@addgreek@l@up{}{}
+\else
+ \LWR@mathjax@addgreek@l@it{}{}
+\fi
+
+\LWR@mathjax@addgreek@l@it{}{it}
+\LWR@mathjax@addgreek@l@up{}{up}
+\LWR@mathjax@addgreek@l@up{up}{}
+
+\CustomizeMathJax{\let\uppartial\partial}% not upright
+
+\CustomizeMathJax{\newcommand{\mathsfbf}[1]{%
+ \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}% not greek
+}}% not sans
+\CustomizeMathJax{\newcommand{\mathsfbfit}[1]{%
+ \mmlToken{mi}[mathvariant="sans-serif-bold-italic"]{#1}% not greek
+}}%
+\CustomizeMathJax{\newcommand{\mathbfit}[1]{\boldsymbol{#1}}}
+\CustomizeMathJax{\newcommand{\mathsfit}[1]{%
+ \mmlToken{mi}[mathvariant="sans-serif-italic"]{#1}% not greek
+}}
+\CustomizeMathJax{\let\vectorsym\mathbfit}
+\CustomizeMathJax{\let\matrixsym\mathbfit}
+\CustomizeMathJax{\let\tensorsym\mathsfbfit}
+\CustomizeMathJax{\let\mathboldsans\mathsfbfit}
+\CustomizeMathJax{\let\mathbold\mathbfit}
+
+\CustomizeMathJax{\let\lBrack\lbrack}% not double
+\CustomizeMathJax{\let\dlb\lBrack}% not double
+\CustomizeMathJax{\let\rBrack\rbrack}% not double
+\CustomizeMathJax{\let\drb\rBrack}% not double
+
+\CustomizeMathJax{\let\Vvert\Vert}
+
+\CustomizeMathJax{\let\sqrtsign\sqrt}
+
+\CustomizeMathJax{\let\smallintsl\smallint}
+\CustomizeMathJax{\newcommand{\smalliintsl}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintsl}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintsl}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointsl}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintsl}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\smallintup\smallint}
+\CustomizeMathJax{\newcommand{\smalliintup}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintup}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintup}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointup}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintup}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\intslop\int}
+\CustomizeMathJax{\newcommand{\iintslop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintslop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintslop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointslop\oint}
+\CustomizeMathJax{\newcommand{\oiintslop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintslop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\let\intupop\int}
+\CustomizeMathJax{\newcommand{\iintupop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintupop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintupop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointupop\oint}
+\CustomizeMathJax{\newcommand{\oiintupop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintupop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\newcommand{\smalliint}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiint}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiint}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloint}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiint}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\intop\int}
+\CustomizeMathJax{\newcommand{\iintop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointop\oint}
+\CustomizeMathJax{\newcommand{\oiintop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\newcommand{\bigcupdot}{\mathop{\unicode{x2A03}}}}
+\CustomizeMathJax{\newcommand{\bigsqcap}{\mathop{\unicode{x2A05}}}}
+\CustomizeMathJax{\newcommand{\xsol}{\mathop{\unicode{x29F8}}}}
+\CustomizeMathJax{\newcommand{\xbsol}{\mathop{\unicode{x29F9}}}}
+\CustomizeMathJax{\let\prodop\prod}
+\CustomizeMathJax{\let\coprodop\coprod}
+\CustomizeMathJax{\let\sumop\sum}
+\CustomizeMathJax{\let\bigwedgeop\bigwedge}
+\CustomizeMathJax{\let\bigveeop\bigvee}
+\CustomizeMathJax{\let\bigcapop\bigcap}
+\CustomizeMathJax{\let\bigcupop\bigcup}
+\CustomizeMathJax{\let\xsolop\xsol}
+\CustomizeMathJax{\let\xbsolop\xbsol}
+\CustomizeMathJax{\let\bigodotop\bigodot}
+\CustomizeMathJax{\let\bigoplusop\bigoplus}
+\CustomizeMathJax{\let\bigotimesop\bigotimes}
+\CustomizeMathJax{\let\bigcupdotop\bigcupdot}
+\CustomizeMathJax{\let\biguplusop\biguplus}
+\CustomizeMathJax{\let\bigsqcapop\bigsqcap}
+\CustomizeMathJax{\let\bigsqcupop\bigsqcup}
+
+\CustomizeMathJax{\newcommand{\ovhook}[1]{\mathord{#1\unicode{x00309}}}}
+\CustomizeMathJax{\newcommand{\candra}[1]{\mathord{#1\unicode{x00310}}}}
+\CustomizeMathJax{\newcommand{\oturnedcomma}[1]{\mathord{#1\unicode{x00312}}}}
+\CustomizeMathJax{\newcommand{\ocommatopright}[1]{\mathord{#1\unicode{x00315}}}}
+\CustomizeMathJax{\newcommand{\droang}[1]{\mathord{#1\unicode{x0031A}}}}
+\CustomizeMathJax{\newcommand{\leftharpoonaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\newcommand{\rightharpoonaccent}[1]{\mathord{#1\unicode{x020D1}}}}
+\CustomizeMathJax{\newcommand{\leftarrowaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\let\rightarrowaccent\vec}
+
+\CustomizeMathJax{\newcommand{\leftrightarrowaccent}[1]{\mathord{#1\unicode{x020E1}}}}
+\CustomizeMathJax{\newcommand{\annuity}[1]{\mathord{#1\unicode{x020E7}}}}
+\CustomizeMathJax{\newcommand{\widebridgeabove}[1]{\mathord{#1\unicode{x020E9}}}}
+\CustomizeMathJax{\newcommand{\asteraccent}[1]{\mathord{#1\unicode{x020F0}}}}
+
+% neutralized:
+\CustomizeMathJax{\newcommand{\braceld}{}}
+\CustomizeMathJax{\newcommand{\bracerd}{}}
+\CustomizeMathJax{\newcommand{\bracelu}{}}
+\CustomizeMathJax{\newcommand{\braceru}{}}
+\CustomizeMathJax{\newcommand{\braceex}{}}
+\CustomizeMathJax{\newcommand{\bracemu}{}}
+\CustomizeMathJax{\newcommand{\bracemd}{}}
+\CustomizeMathJax{\newcommand{\parenld}{}}
+\CustomizeMathJax{\newcommand{\parenrd}{}}
+\CustomizeMathJax{\newcommand{\parenlu}{}}
+\CustomizeMathJax{\newcommand{\parenru}{}}
+\CustomizeMathJax{\newcommand{\bracketld}{}}
+\CustomizeMathJax{\newcommand{\bracketrd}{}}
+\CustomizeMathJax{\newcommand{\bracketlu}{}}
+\CustomizeMathJax{\newcommand{\bracketru}{}}
+\CustomizeMathJax{\newcommand{\bracketex}{}}
+\CustomizeMathJax{\newcommand{\parenex}{}}
+
+\CustomizeMathJax{\newcommand{lhook}{~}}
+\CustomizeMathJax{\newcommand{rhook}{~}}
+\CustomizeMathJax{\newcommand{relbar}{-}}
+\CustomizeMathJax{\newcommand{Relbar}{=}}
+
+\CustomizeMathJax{\newcommand{\mapstochar}{\mathrel{\unicode{x21A6}}}}
+
+\CustomizeMathJax{\newcommand{\Zbar}{\mathord{\unicode{x0001B5}}}}
+\CustomizeMathJax{\newcommand{\notchar}{\mathrel{\unicode{x000AC}}}}
+\CustomizeMathJax{\newcommand{\upbackepsilon}{\mathord{\unicode{x03F6}}}}
+\CustomizeMathJax{\newcommand{\smblkcircle}{\mathbin{\unicode{x02022}}}}
+\CustomizeMathJax{\newcommand{\enleadertwodots}{\mathord{\unicode{x02025}}}}
+\CustomizeMathJax{\newcommand{\unicodeellipsis}{\mathord{\unicode{x02026}}}}
+\CustomizeMathJax{\newcommand{\mathellipsis}{\mathinner{\unicode{x02026}}}}
+\CustomizeMathJax{\newcommand{\dprime}{\mathord{\unicode{x02033}}}}
+\CustomizeMathJax{\newcommand{\trprime}{\mathord{\unicode{x02034}}}}
+\CustomizeMathJax{\newcommand{\backdprime}{\mathord{\unicode{x02036}}}}
+\CustomizeMathJax{\newcommand{\backtrprime}{\mathord{\unicode{x02037}}}}
+\CustomizeMathJax{\newcommand{\caretinsert}{\mathord{\unicode{x02038}}}}
+\CustomizeMathJax{\newcommand{\Exclam}{\mathord{\unicode{x0203C}}}}
+
+\CustomizeMathJax{\newcommand{\hyphenbullet}{\mathord{\unicode{x02043}}}}
+\CustomizeMathJax{\newcommand{\fracslash}{\mathbin{\unicode{x02044}}}}
+\CustomizeMathJax{\newcommand{\Question}{\mathord{\unicode{x02047}}}}
+\CustomizeMathJax{\newcommand{\closure}{\mathrel{\unicode{x02050}}}}
+\CustomizeMathJax{\newcommand{\qprime}{\mathord{\unicode{x02057}}}}
+\CustomizeMathJax{\newcommand{\vertoverlay}{\mathrel{\unicode{x020D2}}}}
+\CustomizeMathJax{\newcommand{\enclosecircle}{\mathord{\unicode{x020DD}}}}
+\CustomizeMathJax{\newcommand{\enclosesquare}{\mathord{\unicode{x020DE}}}}
+\CustomizeMathJax{\newcommand{\enclosetriangle}{\mathord{\unicode{x020E4}}}}
+\CustomizeMathJax{\newcommand{\Eulerconst}{\mathord{\unicode{x02107}}}}
+\CustomizeMathJax{\newcommand{\turnediota}{\mathord{\unicode{x02129}}}}
+\CustomizeMathJax{\newcommand{\Angstrom}{\mathord{\unicode{x0212B}}}}
+
+\CustomizeMathJax{\newcommand{\sansLturned}{\mathord{\unicode{x02142}}}}
+\CustomizeMathJax{\newcommand{\sansLmirrored}{\mathord{\unicode{x02143}}}}
+\CustomizeMathJax{\newcommand{\Yup}{\mathord{\unicode{x02144}}}}
+\CustomizeMathJax{\newcommand{\upand}{\mathbin{\unicode{x0214B}}}}
+\CustomizeMathJax{\newcommand{\increment}{\mathord{\unicode{x02206}}}}
+\CustomizeMathJax{\newcommand{\smallin}{\mathrel{\unicode{x0220A}}}}
+\CustomizeMathJax{\newcommand{\nni}{\mathrel{\unicode{x0220C}}}}
+
+\CustomizeMathJax{\newcommand{\smallni}{\mathrel{\unicode{x0220D}}}}
+\CustomizeMathJax{\newcommand{\QED}{\mathord{\unicode{x0220E}}}}
+\CustomizeMathJax{\newcommand{\vysmwhtcircle}{\mathbin{\unicode{x02218}}}}
+\CustomizeMathJax{\newcommand{\vysmblkcircle}{\mathbin{\unicode{x02219}}}}
+\CustomizeMathJax{\newcommand{\rightangle}{\mathord{\unicode{x0221F}}}}
+
+\CustomizeMathJax{\newcommand{\Colon}{\mathrel{\unicode{x02237}}}}
+\CustomizeMathJax{\newcommand{\dotminus}{\mathbin{\unicode{x02238}}}}
+\CustomizeMathJax{\newcommand{\dashcolon}{\mathrel{\unicode{x02239}}}}
+\CustomizeMathJax{\newcommand{\dotsminusdots}{\mathrel{\unicode{x0223A}}}}
+\CustomizeMathJax{\newcommand{\kernelcontraction}{\mathrel{\unicode{x0223B}}}}
+\CustomizeMathJax{\newcommand{\invlazys}{\mathbin{\unicode{x0223E}}}}
+
+\CustomizeMathJax{\newcommand{\sinewave}{\mathord{\unicode{x0223F}}}}
+\CustomizeMathJax{\newcommand{\nsime}{\mathrel{\unicode{x02244}}}}
+\CustomizeMathJax{\newcommand{\simneqq}{\mathrel{\unicode{x02246}}}}
+\CustomizeMathJax{\newcommand{\napprox}{\mathrel{\unicode{x02249}}}}
+\CustomizeMathJax{\newcommand{\approxident}{\mathrel{\unicode{x0224B}}}}
+\CustomizeMathJax{\newcommand{\backcong}{\mathrel{\unicode{x0224C}}}}
+
+\CustomizeMathJax{\newcommand{\nasymp}{\mathrel{\unicode{x0226D}}}}
+\CustomizeMathJax{\newcommand{\nlesssim}{\mathrel{\unicode{x02274}}}}
+\CustomizeMathJax{\newcommand{\ngtrsim}{\mathrel{\unicode{x02275}}}}
+\CustomizeMathJax{\newcommand{\nlessgtr}{\mathrel{\unicode{x02278}}}}
+\CustomizeMathJax{\newcommand{\ngtrless}{\mathrel{\unicode{x02279}}}}
+
+\CustomizeMathJax{\newcommand{\nsubset}{\mathrel{\unicode{x02284}}}}
+\CustomizeMathJax{\newcommand{\nsupset}{\mathrel{\unicode{x02285}}}}
+
+\CustomizeMathJax{\newcommand{\cupleftarrow}{\mathbin{\unicode{x0228C}}}}
+\CustomizeMathJax{\newcommand{\cupdot}{\mathbin{\unicode{x0228D}}}}
+\CustomizeMathJax{\newcommand{\circledequal}{\mathbin{\unicode{x0229C}}}}
+
+\CustomizeMathJax{\newcommand{\assert}{\mathrel{\unicode{x022A6}}}}
+\CustomizeMathJax{\newcommand{\VDash}{\mathrel{\unicode{x022AB}}}}
+\CustomizeMathJax{\newcommand{\prurel}{\mathrel{\unicode{x022B0}}}}
+
+\CustomizeMathJax{\newcommand{\origof}{\mathrel{\unicode{x022B6}}}}
+\CustomizeMathJax{\newcommand{\smallprod}{\mathop{\unicode{x0220F}}}}% not small
+\CustomizeMathJax{\newcommand{\smallcoprod}{\mathop{\unicode{x02210}}}}% not small
+\CustomizeMathJax{\newcommand{\smallsum}{\mathop{\unicode{x02211}}}}% not small
+\CustomizeMathJax{\newcommand{\Hfraktur}{\mathord{\unicode{x1D525}}}}
+\CustomizeMathJax{\newcommand{\dsol}{\mathbin{\unicode{x029F6}}}}
+\CustomizeMathJax{\newcommand{\rsolbar}{\mathbin{\unicode{x029F7}}}}
+
+\CustomizeMathJax{\newcommand{\eqless}{\mathrel{\unicode{x022DC}}}}
+\CustomizeMathJax{\newcommand{\eqgtr}{\mathrel{\unicode{x022DD}}}}
+\CustomizeMathJax{\newcommand{\npreccurlyeq}{\mathrel{\unicode{x022E0}}}}
+\CustomizeMathJax{\newcommand{\nsucccurlyeq}{\mathrel{\unicode{x022E1}}}}
+\CustomizeMathJax{\newcommand{\nsqsubseteq}{\mathrel{\unicode{x022E2}}}}
+\CustomizeMathJax{\newcommand{\nsqsupseteq}{\mathrel{\unicode{x022E3}}}}
+\CustomizeMathJax{\newcommand{\sqsubsetneq}{\mathrel{\unicode{x022E4}}}}
+\CustomizeMathJax{\newcommand{\sqsupsetneq}{\mathrel{\unicode{x022E5}}}}
+\CustomizeMathJax{\newcommand{\nvartriangleleft}{\mathrel{\unicode{x022EA}}}}
+\CustomizeMathJax{\newcommand{\nvartriangleright}{\mathrel{\unicode{x022EB}}}}
+
+\CustomizeMathJax{\newcommand{\vdotsmath}{\mathrel{\unicode{x022EE}}}}
+\CustomizeMathJax{\newcommand{\unicodecdots}{\mathord{\unicode{x022EF}}}}
+\CustomizeMathJax{\newcommand{\adots}{\mathrel{\unicode{x022F0}}}}
+\CustomizeMathJax{\newcommand{\succneq}{\mathrel{\unicode{x02AB2}}}}
+\CustomizeMathJax{\newcommand{\preceqq}{\mathrel{\unicode{x02AB3}}}}
+\CustomizeMathJax{\newcommand{\succeqq}{\mathrel{\unicode{x02AB4}}}}
+\CustomizeMathJax{\newcommand{\precneq}{\mathrel{\unicode{x02AB1}}}}
+
+\CustomizeMathJax{\newcommand{\mapsfrom}{\mathrel{\unicode{x021A4}}}}
+
+\CustomizeMathJax{\newcommand{\longmapsfrom}{\mathrel{\unicode{x027FB}}}}
+
+\CustomizeMathJax{\newcommand{\diameter}{\mathord{\unicode{x02300}}}}
+\CustomizeMathJax{\newcommand{\coloneq}{\mathrel{\unicode{x02254}}}}
+\CustomizeMathJax{\newcommand{\eqcolon}{\mathrel{\unicode{x02255}}}}
+\CustomizeMathJax{\newcommand{\arceq}{\mathrel{\unicode{x02258}}}}
+\CustomizeMathJax{\newcommand{\wedgeq}{\mathrel{\unicode{x02259}}}}
+\CustomizeMathJax{\newcommand{\veeeq}{\mathrel{\unicode{x0225A}}}}
+
+\CustomizeMathJax{\newcommand{\stareq}{\mathrel{\unicode{x0225B}}}}
+\CustomizeMathJax{\newcommand{\eqdef}{\mathrel{\unicode{x0225D}}}}
+\CustomizeMathJax{\newcommand{\measeq}{\mathrel{\unicode{x0225E}}}}
+\CustomizeMathJax{\newcommand{\questeq}{\mathrel{\unicode{x0225F}}}}
+\CustomizeMathJax{\newcommand{\nequiv}{\mathrel{\unicode{x02262}}}}
+\CustomizeMathJax{\newcommand{\Equiv}{\mathrel{\unicode{x02263}}}}
+
+\CustomizeMathJax{\newcommand{\house}{\mathord{\unicode{x02302}}}}
+
+\CustomizeMathJax{\newcommand{\musicalnote}{\mathord{\unicode{x0266A}}}}
+\CustomizeMathJax{\newcommand{\degree}{\mathord{\unicode{x000B0}}}}
+\CustomizeMathJax{\newcommand{\mathsection}{\mathord{\unicode{x000A7}}}}
+\CustomizeMathJax{\newcommand{\mathparagraph}{\mathord{\unicode{x000B6}}}}
+\CustomizeMathJax{\newcommand{\checkmarkmath}{\mathord{\unicode{x02713}}}}
+\CustomizeMathJax{\newcommand{\invnot}{\mathord{\unicode{x02310}}}}
+
+\CustomizeMathJax{\newcommand{\mathvisiblespace}{\mathord{\unicode{x02423}}}}
+\CustomizeMathJax{\newcommand{\mdlgblksquare}{\mathord{\unicode{x025A0}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtsquare}{\mathord{\unicode{x025A1}}}}
+
+\CustomizeMathJax{\newcommand{\bigblacktriangleup}{\mathord{\unicode{x025B2}}}}
+\CustomizeMathJax{\newcommand{\varbigtriangleup}{\mathord{\unicode{x025B3}}}}
+
+\CustomizeMathJax{\newcommand{\bigblacktriangledown}{\mathord{\unicode{x025BC}}}}
+\CustomizeMathJax{\newcommand{\varbigtriangledown}{\mathord{\unicode{x025BD}}}}
+\CustomizeMathJax{\newcommand{\Longmapsfrom}{\mathrel{\unicode{x027FD}}}}
+
+% bug in print font:
+\CustomizeMathJax{\newcommand{\mdlgblkdiamond}{\mathord{\unicode{x025C6}}}}
+
+\CustomizeMathJax{\newcommand{\mdlgwhtdiamond}{\mathord{\unicode{x025C7}}}}
+\CustomizeMathJax{\newcommand{\Longmapsto}{\mathrel{\unicode{x027FE}}}}
+\CustomizeMathJax{\newcommand{\fisheye}{\mathord{\unicode{x025C9}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtlozenge}{\mathord{\unicode{x025CA}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtcircle}{\mathbin{\unicode{x025CB}}}}
+\CustomizeMathJax{\newcommand{\bullseye}{\mathord{\unicode{x025CE}}}}
+\CustomizeMathJax{\newcommand{\mdlgblkcircle}{\mathord{\unicode{x025CF}}}}
+
+\CustomizeMathJax{\newcommand{\Nwarrow}{\mathrel{\unicode{x021D6}}}}
+\CustomizeMathJax{\newcommand{\Nearrow}{\mathrel{\unicode{x021D7}}}}
+\CustomizeMathJax{\newcommand{\Searrow}{\mathrel{\unicode{x021D8}}}}
+\CustomizeMathJax{\newcommand{\Swarrow}{\mathrel{\unicode{x021D9}}}}
+
+\CustomizeMathJax{\newcommand{\Mapsfrom}{\mathord{\unicode{x02906}}}}
+\CustomizeMathJax{\newcommand{\smwhtcircle}{\mathord{\unicode{x025E6}}}}
+\CustomizeMathJax{\newcommand{\smwhtdiamond}{\mathbin{\unicode{x022C4}}}}
+\CustomizeMathJax{\newcommand{\Mapsto}{\mathord{\unicode{x02907}}}}
+
+\CustomizeMathJax{\let\ngets\nleftarrow}
+\CustomizeMathJax{\let\nsimeq\nsime}
+\CustomizeMathJax{\let\nle\nleq}
+\CustomizeMathJax{\let\nge\ngeq}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</libertinust1math>
+% \fi
%
%
% \iffalse
@@ -59265,16 +60574,12 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
% \changes{v0.20}{2017/01/01}{\pkg{listings}: Added.}
%
-% \codehtml
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-%
%
% \begin{macrocode}
\LWR@ProvidesPackagePass{listings}[2018/09/02]
% \end{macrocode}
+%
% ^^A For passing optional arguments to an environment, see:
% ^^A \href
% ^^A {http://tex.stackexchange.com/questions/9035/how-to-pass-an-optional-argument-to-an-environment-with-verbatim-content}
@@ -59305,6 +60610,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% Use the \pkg{listings} \optn{literate} option to replace
% \HTML\ entities:
% \changes{v0.60}{2018/09/12}{\pkg{listings}: Fix for \HTML\ entities.}
+% \changes{v0.891}{2020/09/21}{\pkg{listings}: Improved \HTML\ sanitizing.}
% \begin{macrocode}
\def\lstset@#1{\endgroup%
% \ifx\@empty#1%
@@ -59315,7 +60621,17 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
,literate=%
{<}{\HTMLentity{lt}}{4}%
{>}{\HTMLentity{gt}}{4}%
- {\&}{\HTMLentity{amp}}{5}%
+ {'}{\HTMLentity{apos}}{6}%
+ {`}{\HTMLentity{grave}}{7}%
+% \end{macrocode}
+% The ampersand is not treated here, as the result is inconsistent spacing.
+% It is nevertheless converted to |&amp;| elsewhere.
+% Sanitizing the double quote interferes with \pkg{listings}' conversion of
+% visible spaces inside strings.
+% \changes{v0.891}{2020/09/21}{\pkg{listings}: Improved spacing around ampersand.}
+% ^^A {"}{\HTMLentity{quot}}{6}%
+% ^^A {\&}{\HTMLentity{amp}}{5}% inconsistent spacing
+% \begin{macrocode}
}%
% \fi%
}
@@ -59334,6 +60650,15 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \changes{v0.51}{2018/03/17}{\pkg{listings}: Forces cleared options.}
% \begin{macrocode}
\LWR@traceinfo{lst@Init}%
+% \end{macrocode}
+%
+% \cs{LWR@forcenewpage} is moved to the start to avoid a spurrious bug
+% with paragraph handling and conditionals.
+% \changes{v0.891}{2020/09/16}{\pkg{listings}: Fix for \brand{MathJax}: Moved \cs{LWR@forcenewpage} to start.}
+% \begin{macrocode}
+\lst@ifdisplaystyle%
+ \LWR@forcenewpage%
+\fi%
\renewcommand*{\@captype}{lstlisting}%
\let\lst@aboveskip\z@\let\lst@belowskip\z@%
\gdef\lst@boxpos{t}%
@@ -59363,8 +60688,10 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{macrocode}
\LWR@traceinfo{About to create verbatim.}%
\let\lsthk@EveryPar\relax%
- \LWR@forcenewpage%
- \LWR@atbeginverbatim{1.5}{programlisting}%
+% \end{macrocode}
+% \changes{v0.891}{2020/09/16}{\pkg{listings}: Fix for \brand{MathJax}: Moved \cs{LWR@forcenewpage} to start.}
+% \begin{macrocode}
+ \LWR@atbeginverbatim{programlisting}%
\let\lsthk@EveryPar\LWR@origlsthkEveryPar%
\else%
@@ -59373,6 +60700,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{macrocode}
\ifbool{LWR@verbtags}{\LWR@htmltag{span class="inlineprogramlisting"}}{}%
\fi%
+\LWR@traceinfo{lst@Init done}%
}
% \end{macrocode}
@@ -59390,14 +60718,14 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% produce the \element{/pre}, then
% reenable line numbers:
% \begin{macrocode}
-\let\lsthk@EveryPar\relax%
-\LWR@afterendverbatim{0}%
-\let\lsthk@EveryPar\LWR@origlsthkEveryPar%
+ \let\lsthk@EveryPar\relax%
+ \LWR@afterendverbatim%
+ \let\lsthk@EveryPar\LWR@origlsthkEveryPar%
\else%
% \end{macrocode}
% Inline, so create the closing \element{/span}:
% \begin{macrocode}
-\ifbool{LWR@verbtags}{\noindent\LWR@htmltag{/span}}{}%
+ \ifbool{LWR@verbtags}{\noindent\LWR@htmltag{/span}}{}%
\fi%
% \end{macrocode}
% Final \pkg{listings} deinit:
@@ -59433,15 +60761,18 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
\lst@ifnolol\else
\ifx\lst@@caption\@empty
\ifx\lst@caption\@empty
- \ifx\lst@intname\@empty \else \def\lst@temp{ }%
- \ifx\lst@intname\lst@temp \else
+ \ifx\lst@intname\@empty
+ \else
+ \def\lst@temp{ }%
+ \ifx\lst@intname\lst@temp \else
% \end{macrocode}
% This code places a contents entry for a non-float.
% This would have to be modified for \pkg{lwarp}:
% \begin{macrocode}
\LWR@traceinfo{addcontents lst@name: -\lst@name-}%
% \addcontentsline{lol}{lstlisting}{\lst@name}
- \fi\fi
+ \fi
+ \fi
\fi
\else
% \end{macrocode}
@@ -59543,10 +60874,6 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
}{\PackageError{lwarp-listings}{Numbers #1 unknown}\@ehc}}
% \end{macrocode}
%
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
-
% \iffalse
%</listings>
% \fi
@@ -61093,11 +62420,13 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \pkg{mathdesign} is used as-is for \SVG\ math, and is
% emulated for \brand{MathJax}.
%
-% The \brand{MathJax} emulation ignores all package options.
+% The \brand{MathJax} emulation ignores all package options
% \trouble[limitations]{mathdesign=\pkg{mathdesign}}
-% The explicit macros for upright and italic greek letters do work correctly,
+% except \optn{greekuppercase} and \optn{greeklowercase}.
+% The dedicated macros for upright and italic greek letters work correctly,
% although the user may wish to swap the definitions for
% epsilon and phi.
+%
% \SVG\ math should appear the same as the printed output.
%
% \changes{v0.89}{2020/08/08}{\pkg{mathdesign}: Added.}
@@ -61105,56 +62434,88 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \codehtml
%
% \begin{macrocode}
-\LWR@origRequirePackage{lwarp-common-mathjax-letters}
-\LWR@origRequirePackage{lwarp-common-mathjax-overlaysymbols}
-
\LWR@ProvidesPackagePass{mathdesign}[2013/08/29]
% \end{macrocode}
%
% For \brand{MathJax}:
% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
+\LWR@origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
\begin{warpMathJax}
\LWR@infoprocessingmathjax{mathdesign}
+% \end{macrocode}
+
+% Default greek upright or italicized:
+%
+% \changes{v0.891}{2020/09/06}{\pkg{mathdesign}: Honors \optn{greekuppercase},
+% \optn{greeklowercase}.}
+% \begin{macrocode}
+\if@MD@grupright
+\LWR@mathjax@addgreek@l@up{}{}
+\fi
-% upright
+\if@MD@GRupright
+\else
+\LWR@mathjax@addgreek@u@it*{}{}
+\fi
+% \end{macrocode}
+%
+% Upright:
+% \begin{macrocode}
\LWR@mathjax@addgreek@l@up{}{up}
\LWR@mathjax@addgreek@u@up*{}{up}
-
-
-% italicized
+% \end{macrocode}
+%
+% Italicized:
+% \begin{macrocode}
\LWR@mathjax@addgreek@l@it{}{it}
\LWR@mathjax@addgreek@u@it*{}{it}
-
-% adapt to mathdesign inconsistency:
+% \end{macrocode}
+%
+% Adapt to \pkg{mathdesign} inconsistency:
+% \begin{macrocode}
\CustomizeMathJax{\let\digammaup\Digammaup}
\CustomizeMathJax{\renewcommand{\digammait}{\mathit{\digammaup}}}
-
-% extra symbols
-\CustomizeMathJax{\newcommand{\smallin}{\unicode{x220A}}}
-\CustomizeMathJax{\newcommand{\smallowns}{\unicode{x220D}}}
-\CustomizeMathJax{\newcommand{\notsmallin}{\LWRoverlaysymbols{/}{\unicode{x220A}}}}
-\CustomizeMathJax{\newcommand{\notsmallowns}{\LWRoverlaysymbols{/}{\unicode{x220D}}}}
-\CustomizeMathJax{\newcommand{\rightangle}{\unicode{x221F}}}
-
-% integrals
-\CustomizeMathJax{\newcommand{\intclockwise}{\unicode{x2231}}}
-\CustomizeMathJax{\newcommand{\ointclockwise}{\unicode{x2232}}}
-\CustomizeMathJax{\newcommand{\ointctrclockwise}{\unicode{x2233}}}
-\CustomizeMathJax{\newcommand{\oiint}{\unicode{x222F}}}
-\CustomizeMathJax{\newcommand{\oiiint}{\unicode{x2230}}}
-
-% math and text mode
+% \end{macrocode}
+%
+% Extra symbols:
+% \changes{v0.891}{2020/09/08}{\pkg{mathdesign}: Added \cs{mathrel}, \cs{mathord}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\smallin}{\mathrel{\unicode{x220A}}}}
+\CustomizeMathJax{\newcommand{\smallowns}{\mathrel{\unicode{x220D}}}}
+\CustomizeMathJax{\newcommand{\notsmallin}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x220A}}}}}
+\CustomizeMathJax{\newcommand{\notsmallowns}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x220D}}}}}
+\CustomizeMathJax{\newcommand{\rightangle}{\mathord{\unicode{x221F}}}}
+% \end{macrocode}
+%
+% Integrals:
+% \changes{v0.891}{2020/09/08}{\pkg{mathdesign}: Added \cs{mathop}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\intclockwise}{\mathop{\unicode{x2231}}\limits}}
+\CustomizeMathJax{\newcommand{\ointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwise}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+% \end{macrocode}
+%
+% Math and text mode:
+% \begin{macrocode}
\CustomizeMathJax{\newcommand{\ddag}{\unicode{x2021}}}
\CustomizeMathJax{\newcommand{\P}{\unicode{x00B6}}}
\CustomizeMathJax{\newcommand{\copyright}{\unicode{x00A9}}}
\CustomizeMathJax{\newcommand{\dag}{\unicode{x2020}}}
\CustomizeMathJax{\newcommand{\pounds}{\unicode{x00A3}}}
-
-% extra symbols
-\CustomizeMathJax{\newcommand{\iddots}{\unicode{x22F0}}}
-\CustomizeMathJax{\newcommand{\utimes}{\overline{\times}}}
-\CustomizeMathJax{\newcommand{\dtimes}{\underline{\times}}}
-\CustomizeMathJax{\newcommand{\udtimes}{\overline{\underline{\times}}}}
+% \end{macrocode}
+%
+% Extra symbols:
+% \changes{v0.891}{2020/09/08}{\pkg{mathdesign}: Added \cs{mathinner}, \cs{mathbin}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\iddots}{\mathinner{\unicode{x22F0}}}}
+\CustomizeMathJax{\newcommand{\utimes}{\mathbin{\overline{\times}}}}
+\CustomizeMathJax{\newcommand{\dtimes}{\mathbin{\underline{\times}}}}
+\CustomizeMathJax{\newcommand{\udtimes}{\mathbin{\overline{\underline{\times}}}}}
\CustomizeMathJax{\newcommand{\leftwave}{\left\{}}
\CustomizeMathJax{\newcommand{\rightwave}{\right\}}}
@@ -61183,6 +62544,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% emulated for \brand{MathJax}.
%
% \changes{v0.80}{2020/02/16}{\pkg{mathdots}: Added.}
+% \changes{v0.891}{2020/09/08}{\pkg{mathdots}: Added more macros, \cs{mathinner}.}
%
% \codehtml
%
@@ -61192,7 +62554,15 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
% \begin{macrocode}
\begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\iddots}{\unicode{x22F0}}}
+\CustomizeMathJax{\newcommand{\iddots}{\mathinner{\unicode{x22F0}}}}
+\CustomizeMathJax{\let\fixedddots\ddots}
+\CustomizeMathJax{\let\fixedvdots\vdots}
+\CustomizeMathJax{\let\fixediddots\iddots}
+\CustomizeMathJax{\let\originalddots\ddots}
+\CustomizeMathJax{\let\originalvdots\vdots}
+\CustomizeMathJax{\let\originaliddots\iddots}
+\CustomizeMathJax{\let\originaldddot\dddot}
+\CustomizeMathJax{\let\originalddddot\ddddot}
\end{warpMathJax}
% \end{macrocode}
%
@@ -61220,6 +62590,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% Greek letters are unchanged.\watchout
%
% \changes{v0.80}{2020/02/09}{\pkg{mathfixs}: Added.}
+% \changes{v0.891}{2020/09/08}{\pkg{mathfixs}: Added \cs{mathinner}.}
%
% \codehtml
%
@@ -61230,7 +62601,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{macrocode}
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\rfrac}[2]{\tfrac{#1}{#2}}}
-\CustomizeMathJax{\newcommand{\vfrac}[2]{{}^{#1}\!/{}_{#2}}}
+\CustomizeMathJax{\newcommand{\vfrac}[2]{\mathinner{{}^{#1}\!/{}_{#2}}}}
\CustomizeMathJax{\newcommand{\ProvideMathFix}[1]{}}
\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
\CustomizeMathJax{\newcommand{\.}{\,}}
@@ -61261,24 +62632,30 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
% The \brand{MathJax} emulation ignores all package options.
% \trouble[limitations]{mathpazo=\pkg{mathpazo}}
-% The explicit macros for upright greek letters do work correctly.
+% The dedicated macros for upright greek letters do work correctly.
+%
% \SVG\ math should appear the same as the printed output.
%
% \changes{v0.89}{2020/08/10}{\pkg{mathpazo}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{mathpazo}: Honors \optn{slantedGreek}.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR@origRequirePackage{lwarp-common-mathjax-letters}
-
\LWR@ProvidesPackagePass{mathpazo}[2020/03/25]
% \end{macrocode}
%
% For \brand{MathJax}:
% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
\begin{warpMathJax}
\LWR@infoprocessingmathjax{mathpazo}
+\ifpazo@slGreek
+\LWR@mathjax@addgreek@u@it*{}{}
+\fi
+
\LWR@mathjax@addgreek@u@up*{up}{}
\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
@@ -61307,24 +62684,30 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
% The \brand{MathJax} emulation ignores all package options.
% \trouble[limitations]{mathptmx=\pkg{mathptmx}}
-% The explicit macros for upright greek letters do work correctly.
+% The dedicated macros for upright greek letters do work correctly.
+%
% \SVG\ math should appear the same as the printed output.
%
% \changes{v0.89}{2020/08/10}{\pkg{mathptmx}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{mathptmx}: Honors \optn{slantedGreek}.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR@origRequirePackage{lwarp-common-mathjax-letters}
-
\LWR@ProvidesPackagePass{mathptmx}[2020/03/25]
% \end{macrocode}
%
% For \brand{MathJax}:
% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
\begin{warpMathJax}
\LWR@infoprocessingmathjax{mathptmx}
+\@ifpackagewith{mathptmx}{slantedGreek}
+ {\LWR@mathjax@addgreek@u@it*{}{}}
+ {}
+
\LWR@mathjax@addgreek@u@up*{up}{}
\end{warpMathJax}
% \end{macrocode}
@@ -61401,6 +62784,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \changes{v0.79}{2020/01/26}{\pkg{mathtools}: Added \brand{MathJax} emulation.}
% \changes{v0.87}{2020/05/20}{\pkg{mathtools}: Updated starred macros.}
% \changes{v0.87}{2020/05/20}{\pkg{mathtools}: Improved \cs{underbraket}, \cs{overbracket}.}
+% \changes{v0.891}{2020/09/19}{\pkg{mathtools}: Improved \cs{underbraket}, \cs{overbracket}.}
% \begin{macrocode}
\begin{warpMathJax}
\LWR@infoprocessingmathjax{mathtools}
@@ -61445,10 +62829,14 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
\CustomizeMathJax{\Newextarrow\xleftharpoonup{10,10}{0x21bc}}
\CustomizeMathJax{\Newextarrow\xleftrightharpoons{10,10}{0x21cb}}
-\CustomizeMathJax{\newcommand{\LWRdounderbracket}[3]{\underset{#3}{\underline{#1}}}}
+\CustomizeMathJax{\newcommand{\LWRdounderbracket}[3]{%
+ \mathinner{\underset{#3}{\underline{\llcorner{#1}\lrcorner}}}%
+}}
\CustomizeMathJax{\newcommand{\LWRunderbracket}[2][]{\LWRdounderbracket{#2}}}
\CustomizeMathJax{\newcommand{\underbracket}[1][]{\LWRunderbracket}}
-\CustomizeMathJax{\newcommand{\LWRdooverbracket}[3]{\overset{#3}{\overline{#1}}}}
+\CustomizeMathJax{\newcommand{\LWRdooverbracket}[3]{%
+ \mathinner{\overset{#3}{\overline{\ulcorner{#1}\urcorner}}}%
+}}
\CustomizeMathJax{\newcommand{\LWRoverbracket}[2][]{\LWRdooverbracket{#2}}}
\CustomizeMathJax{\newcommand{\overbracket}[1][]{\LWRoverbracket}}
@@ -61636,24 +63024,25 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
\CustomizeMathJax{\newcommand{\ordinarycolon}{:}}
% \end{macrocode}
% \changes{v0.89}{2020/08/21}{\pkg{mathtools}: Minor improvements.}
+% \changes{v0.891}{2020/09/08}{\pkg{mathtools}: Uses Unicode and \cs{mathrel}.}
% \begin{macrocode}
-\CustomizeMathJax{\newcommand{\vcentcolon}{\mathrel{\mathop\ordinarycolon}}}
+\CustomizeMathJax{\newcommand{\vcentcolon}{\mathrel{\unicode{x2236}}}}
-\CustomizeMathJax{\newcommand\dblcolon{\vcentcolon\vcentcolon}}
-\CustomizeMathJax{\newcommand\coloneqq{\vcentcolon=}}
-\CustomizeMathJax{\newcommand\Coloneqq{\dblcolon=}}
-\CustomizeMathJax{\newcommand\coloneq{\vcentcolon{-}}}
-\CustomizeMathJax{\newcommand\Coloneq{\dblcolon{-}}}
+\CustomizeMathJax{\newcommand\dblcolon{\mathrel{\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand\coloneqq{\mathrel{\unicode{x2236}\!=}}}
+\CustomizeMathJax{\newcommand\Coloneqq{\mathrel{\unicode{x2237}\!=}}}
+\CustomizeMathJax{\newcommand\coloneq{\mathrel{\unicode{x2236}-}}}
+\CustomizeMathJax{\newcommand\Coloneq{\mathrel{\unicode{x2237}-}}}
-\CustomizeMathJax{\newcommand\eqqcolon{=\vcentcolon}}
-\CustomizeMathJax{\newcommand\Eqqcolon{=\dblcolon}}
-\CustomizeMathJax{\newcommand\eqcolon{\mathrel{-}\vcentcolon}}
-\CustomizeMathJax{\newcommand\Eqcolon{\mathrel{-}\dblcolon}}
+\CustomizeMathJax{\newcommand\eqqcolon{\mathrel{=\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand\Eqqcolon{\mathrel{=\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand\eqcolon{\mathrel{-\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand\Eqcolon{\mathrel{-\unicode{x2237}}}}
-\CustomizeMathJax{\newcommand\colonapprox{\vcentcolon\approx}}
-\CustomizeMathJax{\newcommand\Colonapprox{\dblcolon\approx}}
-\CustomizeMathJax{\newcommand\colonsim{\vcentcolon\sim}}
-\CustomizeMathJax{\newcommand\Colonsim{\dblcolon\sim}}
+\CustomizeMathJax{\newcommand\colonapprox{\mathrel{\unicode{x2236}\!\approx}}}
+\CustomizeMathJax{\newcommand\Colonapprox{\mathrel{\unicode{x2237}\!\approx}}}
+\CustomizeMathJax{\newcommand\colonsim{\mathrel{\unicode{x2236}\!\sim}}}
+\CustomizeMathJax{\newcommand\Colonsim{\mathrel{\unicode{x2237}\!\sim}}}
% \end{macrocode}
% \changes{v0.89}{2020/08/21}{\pkg{mathtools}: Minor improvements.}
@@ -62743,9 +64132,9 @@ background:
\LetLtxMacro\cesplit\LWR@mhchem@origcesplit%
}
-\begin{warpHTML}
+\begin{warpMathJax}
\CustomizeMathJax{\require{mhchem}}
-\end{warpHTML}
+\end{warpMathJax}
% \end{macrocode}
% \iffalse
@@ -63286,22 +64675,18 @@ background:
% \changes{v0.34}{2017/08/02}{\pkg{moreverb}: Added.}
% \changes{v0.42}{2017/10/27}{\pkg{moreverb}: Simplified formatting of listings.}
%
-% \codehtml
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-%
% \begin{macrocode}
\LWR@ProvidesPackagePass{moreverb}[2008/06/03]
% \end{macrocode}
%
+%
% \begin{macrocode}
\BeforeBeginEnvironment{verbatimtab}{%
\LWR@forcenewpage
-\LWR@atbeginverbatim{3}{Verbatim}%
+\LWR@atbeginverbatim{Verbatim}%
}
\AfterEndEnvironment{verbatimtab}{%
-\LWR@afterendverbatim{1}%
+\LWR@afterendverbatim%
}
@@ -63309,27 +64694,27 @@ background:
\renewcommand{\@verbatimtabinput}[2][]{%
\LWR@forcenewpage
-\LWR@atbeginverbatim{3}{Verbatim}%
+\LWR@atbeginverbatim{Verbatim}%
\LWRMV@orig@verbatimtabinput[#1]{#2}%
-\LWR@afterendverbatim{1}%
+\LWR@afterendverbatim%
}
\BeforeBeginEnvironment{listing}{%
\LWR@forcenewpage
-\LWR@atbeginverbatim{3}{programlisting}%
+\LWR@atbeginverbatim{programlisting}%
}
\AfterEndEnvironment{listing}{%
-\LWR@afterendverbatim{1}%
+\LWR@afterendverbatim%
}
\BeforeBeginEnvironment{listingcont}{%
\LWR@forcenewpage
-\LWR@atbeginverbatim{3}{programlisting}%
+\LWR@atbeginverbatim{programlisting}%
}
\AfterEndEnvironment{listingcont}{%
-\LWR@afterendverbatim{1}%
+\LWR@afterendverbatim%
}
% \end{macrocode}
@@ -63358,28 +64743,24 @@ background:
\renewcommand{\@listinginput}[3][]{
\LWR@forcenewpage
-\LWR@atbeginverbatim{3}{programlisting}%
+\LWR@atbeginverbatim{programlisting}%
\LWRMV@@listinginput[#1]{#2}{#3}%
-\LWR@afterendverbatim{1}%
+\LWR@afterendverbatim%
}
\renewenvironment*{boxedverbatim}
{
\LWR@forcenewpage
-\LWR@atbeginverbatim{3}{boxedverbatim}%
+\LWR@atbeginverbatim{boxedverbatim}%
\verbatim%
}
{
\endverbatim%
-\LWR@afterendverbatim{1}%
+\LWR@afterendverbatim%
}
% \end{macrocode}
%
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
-%
% \iffalse
%</moreverb>
% \fi
@@ -63569,9 +64950,6 @@ background:
%
% The content is placed inside a \element{div} of class |multicols|.
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
% \begin{noindenvironment}{multicols} * \marg{numcols} \oarg{heading}
% \begin{macrocode}
@@ -63631,9 +65009,6 @@ background:
}
% \end{macrocode}
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
% \iffalse
%</multicol>
@@ -63743,8 +65118,11 @@ background:
\CustomizeMathJax{\newcommand{\negdom}{\not\prec}}
\CustomizeMathJax{\newcommand{\weakdom}{\preccurlyeq}}
\CustomizeMathJax{\newcommand{\negweakdom}{\not\preccurlyeq}}
-\CustomizeMathJax{\newcommand{\strictdom}{\prec\!\!\!\prec}}
-\CustomizeMathJax{\newcommand{\negstrictdom}{\not\prec\!\!\!\prec}}
+% \end{macrocode}
+% \changes{v0.891}{2020/09/08}{\pkg{multiobjective}: Improved.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\strictdom}{\mathord{\prec}\!\!\!\mathord{\prec}}}
+\CustomizeMathJax{\newcommand{\negstrictdom}{\mathord{\not\prec}\!\!\!\mathord{\prec}}}
\CustomizeMathJax{\newcommand{\multepsilondom}{\preccurlyeq_{\epsilon\cdot}}}
\CustomizeMathJax{\newcommand{\addiepsilondom}{\preccurlyeq_{\epsilon +}}}
\CustomizeMathJax{\newcommand{\better}{\triangleleft}}
@@ -64654,12 +66032,15 @@ do not attempt to patch lwarp's version of `nameref'.)\MessageBreak
% \pkg{newpxmath} is used as-is for \SVG\ math, and is
% emulated for \brand{MathJax}.
%
-% The \brand{MathJax} emulation ignores all package options.
+% The \brand{MathJax} emulation ignores all package options,
% \trouble[limitations]{newpxmath=\pkg{newpxmath}}
-% The explicit macros for upright and italic Greek do work correctly.
+% except \optn{slantedGreek} is honored.
+% The dedicated macros for upright and italic Greek do work correctly.
+%
% \SVG\ math should appear the same as the printed output.
%
% \changes{v0.89}{2020/08/31}{\pkg{newpxmath}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{newpxmath}: Honors \optn{uprightGreek}, \optn{slantedGreek}.}
%
% \codehtml
%
@@ -64670,6 +66051,27 @@ do not attempt to patch lwarp's version of `nameref'.)\MessageBreak
\LWR@infoprocessingmathjax{newpxmath}
\LWR@origRequirePackage{lwarp-common-mathjax-newpxtxmath}
+
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+% * \marg{2: prefix} \marg{3: postfix} \marg{4: i/u: italic/upright}
+\LWR@mathjax@addgreek@u@up*{}{up}
+\LWR@mathjax@addgreek@u@up*{up}{}
+\LWR@mathjax@addgreek@l@up{up}{}
+\LWR@mathjax@addgreek@l@up{}{up}
+\LWR@mathjax@addgreek@u@it*{}{it}
+\LWR@mathjax@addgreek@l@it{}{it}
+% \end{macrocode}
+%
+% Optional slanted Greek:
+% \begin{macrocode}
+\ifpx@slantedG
+ \LWR@mathjax@addgreek@u@it*{}{}
+\fi
+
+\end{warpMathJax}
% \end{macrocode}
%
% \iffalse
@@ -64694,14 +66096,17 @@ do not attempt to patch lwarp's version of `nameref'.)\MessageBreak
%
% The \brand{MathJax} emulation ignores all package options,
% \trouble[limitations]{newtxmath=\pkg{newtxmath}}
+% except \optn{slantedGreek} is honored, and
% except that bold italic Latin letters are not defined for \brand{MathJax} if
% the option is not selected.
%
-% The explicit macros for upright and italic Greek and bold italic Latin letters
+% The dedicated macros for upright and italic Greek and bold italic Latin letters
% do work correctly.
+%
% \SVG\ math should appear the same as the printed output.
%
% \changes{v0.89}{2020/08/31}{\pkg{newtxmath}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{newtxmath}: Honors \optn{uprightGreek}, \optn{slantedGreek}.}
%
% \codehtml
%
@@ -64711,6 +66116,39 @@ do not attempt to patch lwarp's version of `nameref'.)\MessageBreak
\LWR@infoprocessingmathjax{newtxmath}
\LWR@origRequirePackage{lwarp-common-mathjax-newpxtxmath}
+
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+% * \marg{2: prefix} \marg{3: postfix} \marg{4: i/u: italic/upright}
+\LWR@mathjax@addgreek@u@up*{}{up}
+\LWR@mathjax@addgreek@u@up*{up}{}
+\LWR@mathjax@addgreek@l@up{up}{}
+\LWR@mathjax@addgreek@l@up{}{up}
+\LWR@mathjax@addgreek@u@it*{}{it}
+\LWR@mathjax@addgreek@l@it{}{it}
+
+% only newtxmath, not newpxmath:
+\LWR@mathjax@addgreek@u@it*{it}{}
+\LWR@mathjax@addgreek@l@it{it}{}
+
+% only newtxmath, not newpxmath:
+\ifdef{\iftx@BI}{
+ \iftx@BI
+ \LWR@mathjax@addlatin@u@bfit{BI}
+ \LWR@mathjax@addlatin@l@bfit{BI}
+ \fi
+}{}
+% \end{macrocode}
+%
+% Optional slanted Greek:
+% \begin{macrocode}
+\iftx@slantedG
+ \LWR@mathjax@addgreek@u@it*{}{}
+\fi
+
+\end{warpMathJax}
% \end{macrocode}
%
% \iffalse
@@ -64734,13 +66172,16 @@ do not attempt to patch lwarp's version of `nameref'.)\MessageBreak
% \pkg{newtxsf} is used as-is for \SVG\ math, and is
% emulated for \brand{MathJax}.
%
-% The \brand{MathJax} emulation ignores all package options.
+% The \brand{MathJax} emulation ignores all package options,
% \trouble[limitations]{newtxsf=\pkg{newtxsf}}
-% The explicit macros for upright and italic Greek and bold italic Latin letters
+% except \optn{slantedGreek} is honored.
+% The dedicated macros for upright and italic Greek and bold italic Latin letters
% do work correctly.
+%
% \SVG\ math should appear the same as the printed output.
%
% \changes{v0.89}{2020/08/31}{\pkg{newtxsf}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{newpxmath}: Honors \optn{uprightGreek}, \optn{slantedGreek}.}
%
% \codehtml
%
@@ -64750,6 +66191,39 @@ do not attempt to patch lwarp's version of `nameref'.)\MessageBreak
\LWR@infoprocessingmathjax{newtxsf}
\LWR@origRequirePackage{lwarp-common-mathjax-newpxtxmath}
+
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+% * \marg{2: prefix} \marg{3: postfix} \marg{4: i/u: italic/upright}
+\LWR@mathjax@addgreek@u@up*{}{up}
+\LWR@mathjax@addgreek@u@up*{up}{}
+\LWR@mathjax@addgreek@l@up{up}{}
+\LWR@mathjax@addgreek@l@up{}{up}
+\LWR@mathjax@addgreek@u@it*{}{it}
+\LWR@mathjax@addgreek@l@it{}{it}
+
+% only newtxmath, not newpxmath:
+\LWR@mathjax@addgreek@u@it*{it}{}
+\LWR@mathjax@addgreek@l@it{it}{}
+%
+% only newtxmath, not newpxmath:
+\ifdef{\iftx@BI}{
+ \iftx@BI
+ \LWR@mathjax@addlatin@u@bfit{BI}
+ \LWR@mathjax@addlatin@l@bfit{BI}
+ \fi
+}{}
+% \end{macrocode}
+%
+% Optional slanted Greek:
+% \begin{macrocode}
+\iftx@slantedG
+ \LWR@mathjax@addgreek@u@it*{}{}
+\fi
+
+\end{warpMathJax}
% \end{macrocode}
%
% \iffalse
@@ -65222,9 +66696,10 @@ do not attempt to patch lwarp's version of `nameref'.)\MessageBreak
% \end{macrocode}
%
% For Mathjax:
+% \changes{v0.891}{2020/09/08}{\pkg{nicefrac}: Added \cs{mathinner}, improved fraction.}
% \begin{macrocode}
\begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\nicefrac}[3][]{#2/#3}}
+\CustomizeMathJax{\newcommand{\nicefrac}[3][]{\mathinner{{}^{#2}\!/\!_{#3}}}}
\end{warpMathJax}
% \end{macrocode}
%
@@ -68653,13 +70128,13 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \codehtml
%
% \begin{macrocode}
-\LWR@origRequirePackage{lwarp-common-mathjax-letters}
-
\LWR@ProvidesPackagePass{pxfonts}[2008/01/22]
% \end{macrocode}
%
% For \brand{MathJax}:
% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
\begin{warpMathJax}
\LWR@infoprocessingmathjax{pxfonts}
@@ -69781,6 +71256,63 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
%
% \iffalse
+%<*scalerel>
+% \fi
+%
+% \part{lwarp-scalerel.sty}
+%
+% \section{scalerel}
+%
+% \credits{Steven B. Segletes}
+%
+% \DescribePackage{scalerel}
+% \pkg{scalerel} is used as-is for \SVG\ math, and is
+% emulated and ignored for \brand{MathJax}.
+%
+% \changes{v0.891}{2020/09/10}{\pkg{scalerel}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{scalerel}[2016/12/29]
+% \end{macrocode}
+%
+% For \brand{MathJax}:
+% \begin{macrocode}
+\begin{warpMathJax}
+\LWR@infoprocessingmathjax{scalerel}
+
+\CustomizeMathJax{\newcommand{\scalerel}{\ifstar{\scalerelplain}{\scalerelplus}}}
+\CustomizeMathJax{\newcommand{\scalerelplain}[3][]{#2}}
+\CustomizeMathJax{\newcommand{\scalerelplus}[3][]{#2#3}}
+\CustomizeMathJax{\newcommand{\stretchrel}{\ifstar{\stretchrelplain}{\stretchrelplus}}}
+\CustomizeMathJax{\newcommand{\stretchrelplain}[3][]{#2}}
+\CustomizeMathJax{\newcommand{\stretchrelplus}[3][]{#2#3}}
+\CustomizeMathJax{\newcommand{\scaleto}[3][]{#2}}
+\CustomizeMathJax{\newcommand{\stretchto}[3][]{#2}}
+\CustomizeMathJax{\newcommand{\scaleleftright}[4][]{#2#3#4}}
+\CustomizeMathJax{\newcommand{\stretchleftright}[4][]{#2#3#4}}
+\CustomizeMathJax{\newcommand{\hstretch}[2]{#2}}
+\CustomizeMathJax{\newcommand{\vstretch}[2]{#2}}
+\CustomizeMathJax{\newcommand{\scaleobj}[2]{#2}}
+\CustomizeMathJax{\newcommand{\ThisStyle}[1]{#1}}
+\CustomizeMathJax{\newcommand{\SavedStyle}{}}
+\CustomizeMathJax{\def\scriptstyleScaleFactor{.7}}
+\CustomizeMathJax{\def\scriptscriptstyleScaleFactor{.5}}
+\CustomizeMathJax{\newcommand{\discernmathstyle}{}}
+\CustomizeMathJax{\newcommand{\ignoremathstyle}[1][T]{}}
+\CustomizeMathJax{\newcommand{\Isnextbyte}[3][v]{}}
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</scalerel>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*schemata>
% \fi
%
@@ -70944,10 +72476,10 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
% \begin{macrocode}
\LWR@ProvidesPackageDrop{shuffle}[2008/10/27]
+\LWR@origRequirePackage{lwarp-common-mathjax-overlaysymbols}
% \end{macrocode}
%
% \begin{macrocode}
-\begin{warpHTML}
\newcommand*{\LWR@shuffle@start}{%
\hspace*{.2em}
\begin{picture}(.75,0.65)
@@ -70974,11 +72506,13 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\put(.05,.65){\line(1,0){.65}}%
\LWR@shuffle@finish%
}
-\end{warpHTML}
-
+% \end{macrocode}
+%
+% \changes{v0.891}{2020/09/08}{\pkg{shuffle}: Added \cs{mathbin}, improved bar.}
+% \begin{macrocode}
\begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\shuffle}{\unicode{0x29E2}}}
-\CustomizeMathJax{\newcommand{\cshuffle}{\bar{\unicode{0x29E2}}}}
+\CustomizeMathJax{\newcommand{\shuffle}{\mathbin{\unicode{0x29E2}}}}
+\CustomizeMathJax{\newcommand{\cshuffle}{\mathbin{\LWRoverlaysymbols{\raise{.6ex}{-}}{\unicode{0x29E2}}}}}
\end{warpMathJax}
% \end{macrocode}
%
@@ -73206,12 +74740,12 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \codehtml
%
% \begin{macrocode}
-\LWR@origRequirePackage{lwarp-common-mathjax-letters}
-
\LWR@ProvidesPackagePass{statmath}[2018/03/08]
% \end{macrocode}
%
% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
\begin{warpMathJax}
\LWR@infoprocessingmathjax{statmath}
@@ -73327,13 +74861,11 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
%
% \begin{macrocode}
-\begin{warpHTML}
\renewcommand{\phase}[2][]{%
\begin{lateximage}*[steinmetz\{\detokenize{#2}\}]
\ensuremath{\underline{/#2}}
\end{lateximage}
}
-\end{warpHTML}
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\phase}[2][]{\underline{/#2}}}
@@ -73662,8 +75194,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% {\box0}%
{
% \parbox[t]{\the\@tempdima}{%
-\LWR@traceinfo{sfsubcap B1}% lwarp
- \LWR@figcaption% lwarp
+\LWR@traceinfo{sfsubcap B1}% lwarp
+ \LWR@figcaption% lwarp
\caption@make
{\@nameuse{sub\@captype name}}%
{\@nameuse{thesub\@captype}}%
@@ -73671,8 +75203,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
% \changes{v0.45}{2017/12/18}{\pkg{subfig}: Fix for subcaption end tag.}
% \begin{macrocode}
- \endLWR@figcaption% lwarp
-\LWR@traceinfo{sfsubcap B2}% lwarp
+ \endLWR@figcaption% lwarp
+\LWR@traceinfo{sfsubcap B2}% lwarp
% }%
}%
{\dimen@\ht0%
@@ -78165,19 +79697,10 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% Is used by \pkg{trivfloat} to correct float chapter numbers,
% but is not needed for \pkg{lwarp}.
-% \codehtml
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-
% \begin{macrocode}
\AtBeginDocument{\DeclareDocumentCommand{\tfl@chapter@fix}{m m}{}}
% \end{macrocode}
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
-
% \subsection{Combining \cs{newfloat}, \cs{trivfloat}, and \pkg{algorithmicx}}
% \label{sec:combiningfloats}
@@ -78185,10 +79708,6 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \gindex{trivfloat=\pkg{trivfloat}>with \pkg{newfloat}, \pkg{algorithmicx}}
% \gindex{algorithmicx=\pkg{algorithmicx}>with \pkg{newfloat}, \pkg{trivfloat}}
%
-% \codeall
-% \begin{macrocode}
-\begin{warpall}
-% \end{macrocode}
% \textred{For both print and \HTML\ output:}
%
@@ -78215,9 +79734,6 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \makeatletter
% \end{Verbatim}
-% \begin{macrocode}
-\end{warpall}
-% \end{macrocode}
% \iffalse
%</trivfloat>
@@ -78340,13 +79856,13 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \codehtml
%
% \begin{macrocode}
-\LWR@origRequirePackage{lwarp-common-mathjax-letters}
-
\LWR@ProvidesPackagePass{txfonts}[2008/01/22]
% \end{macrocode}
%
% For \brand{MathJax}:
% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
\begin{warpMathJax}
\LWR@infoprocessingmathjax{txfonts}
@@ -78359,6 +79875,63 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \fi
%
%
+%
+% \iffalse
+%<*txgreeks>
+% \fi
+%
+% \part{lwarp-txgreeks.sty}
+%
+% \section{txgreeks}
+%
+% \credits{Jean-Fran\c{c}ois Burnol}
+%
+% \DescribePackage{txgreeks}
+% \pkg{txgreeks} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors all package options.
+%
+% \changes{v0.891}{2020/09/14}{\pkg{txgreeks}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{txgreeks}[2011/03/16]
+
+\LWR@infoprocessingmathjax{txgreeks}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\iftgs@uplower% upright lowercase Greek
+ \LWR@mathjax@addgreek@l@up{}{}
+ \LWR@mathjax@addgreek@l@it{other}{}
+\else% italic lowercase Greek
+ \LWR@mathjax@addgreek@l@it{}{}
+ \LWR@mathjax@addgreek@l@up{other}{}
+\fi
+
+\iftgs@itupper % italic uppercase Greek
+ \LWR@mathjax@addgreek@u@it*{}{}
+ \LWR@mathjax@addgreek@u@up*{other}{}
+ \LWR@mathjax@addgreek@u@up*{var}{}
+\else% upright uppercase Greek
+ \LWR@mathjax@addgreek@u@up*{}{}
+ \LWR@mathjax@addgreek@u@it*{other}{}
+ \LWR@mathjax@addgreek@u@it*{var}{}
+\fi
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</txgreeks>
+% \fi
+%
+%
+%
% \iffalse
%<*typearea>
% \fi
@@ -78669,11 +80242,53 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \DescribePackage{unicode-math}
% \pkg{unicode-math} is supported as-is for \HTML\ with \SVG math.
%
-% For \brand{MathJax}, many characters may not be read correctly,
-% such as bold letters,
-% and so are not read correctly by \prog{pdftotext} for \HTML.
+% If the document source includes embedded Unicode characters,
+% \trouble[\brand{MathJax}]{unicode-math=\pkg{unicode-math}}
+% \trouble{mathjax=\brand{MathJax}>unicode-math=\pkg{unicode-math}}
+% these will not be reproduced correctly for \prog{pdftotext},
+% so \brand{MathJax} will not work.
+%
% Symbol font commands are emulated, but not all combinations are
-% supported by MathJax.
+% supported by MathJax, especially with the dedicated Greek macros.
+% Symbol macros such as \cs{symbfsf} may not be sans or bold.
+% For Greek, use the Unicode equivalent, if necessary.
+%
+% The \brand{MathJax} emulation does not change with the use of \cs{mathversion}.
+% \watchout[\cs{mathversion}]
+% Whatever emulation is established at the begin of the document will remain.
+%
+% The option \optn{sans-style} honors \optn{upright} and \optn{italic},
+% but \optn{italic} will not be sans, in order to support Greek macros.
+%
+% Greek macros such as \cs{alpha} respond to the \optn{math-style} option.
+% Latin symbols does not, per \brand{MathJax} limitations, unless placed inside
+% \cs{symbit} or similar.
+%
+% Macros from the categories \cs{mathopen}, \cs{mathclose}, and \cs{mathfence}
+% \watchout[\cs{left}, \cs{right}]
+% are emulated, although some do not accept \cs{left} and \cs{right}.
+%
+% Also emulated are macros from the categories
+% \cs{mathpunct}, \cs{mathover}, \cs{mathunder}, \cs{mathaccent},
+% \cs{mathbotaccent}, and \cs{mathop}.
+%
+% The individual \pkg{unicode-math} macros
+% of categories \cs{mathbin}, \cs{mathord}, and \cs{mathrel}
+% are not supported by \brand{MathJax},
+% as there are more than two thounsand of them, but they may be added as needed.
+% Place the following in the document preamble after loading \pkg{unicode-math},
+% including a definition for each macro which is used in the document
+% but undefined in \brand{MathJax}:
+%
+% \begin{sourceverb}
+% \begin{warpMathJax}
+% \CustomizeMathJax{\newcommand{\uplus}{\mathbin{\unicode{x0228E}}}}
+% ...
+% \end{warpMathJax}
+% \end{sourceverb}
+%
+% Use \cs{mathrel}, \cs{mathbin}, etc. depending on the category of each macro.
+% For a list of macro names and symbols, see \cmds{texdoc unimath-symbols}.
%
% \changes{v0.79}{2020/01/30}{\pkg{unicode-math}: Added.}
% \changes{v0.80}{2020/02/15}{\pkg{unicode-math}: Improved \brand{MathJax}.}
@@ -78692,6 +80307,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% ^^A math-sans-serif-bold-italic | math-monospace | math-initial | math-tailed |
% ^^A math-looped | math-stretched
% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
\begin{warpMathJax}
\LWR@infoprocessingmathjax{unicode-math}
@@ -78703,17 +80320,18 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\CustomizeMathJax{\let\symcal\mathcal}
\CustomizeMathJax{\let\symscr\mathscr}
\CustomizeMathJax{\let\symfrak\mathfrak}
+
\CustomizeMathJax{\let\symsfup\mathsf}
-% \CustomizeMathJax{\let\symsfit\mathit}% not sans
-\CustomizeMathJax{\newcommand{\symsfit}[1]{%
- \mmlToken{mi}[mathvariant="sans-serif-italic"]{#1}}%
-}
+\CustomizeMathJax{\let\symsfit\mathit}% not sans
+% \CustomizeMathJax{\newcommand{\symsfit}[1]{%
+% \mmlToken{mi}[mathvariant="sans-serif-italic"]{#1}}% not greek
+% }
-% \CustomizeMathJax{\let\symbfsf\mathbf}% not sans
-\CustomizeMathJax{\newcommand{\symbfsf}[1]{%
- \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}}%
-}
+\CustomizeMathJax{\let\symbfsf\mathbf}% not sans
+% \CustomizeMathJax{\newcommand{\symbfsf}[1]{%
+% \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}}% not greek
+% }
\CustomizeMathJax{\let\symbfup\mathbf}
\CustomizeMathJax{\newcommand{\symbfit}[1]{\boldsymbol{#1}}}
@@ -78721,30 +80339,47 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\CustomizeMathJax{\let\symbfscr\mathscr}% not bold
% \CustomizeMathJax{\newcommand{\symbfscr}[1]{
-% \mmlToken{mi}[mathvariant="math-bold-script"]{#1}}
+% \mmlToken{mi}[mathvariant="math-bold-script"]{#1}}% not greek
% }
\CustomizeMathJax{\let\symbffrak\mathfrak}% not bold
% \CustomizeMathJax{\newcommand{\symbffrak}[1]{%
-% \mmlToken{mi}[mathvariant="math-bold-fraktur"]{#1}}%
+% \mmlToken{mi}[mathvariant="math-bold-fraktur"]{#1}}% not greek
% }
-% \CustomizeMathJax{\let\symbfsfup\mathbf}% not sans
-\CustomizeMathJax{\newcommand{\symbfsfup}[1]{%
- \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}}%
-}
+\CustomizeMathJax{\let\symbfsfup\mathbf}% not sans
+% \CustomizeMathJax{\newcommand{\symbfsfup}[1]{%
+% \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}}% not greek
+% }
-% \CustomizeMathJax{\let\symbfsfit\mathit}% not bold nor sans
-\CustomizeMathJax{\newcommand{\symbfsfit}[1]{%
- \mmlToken{mi}[mathvariant="sans-serif-bold-italic"]{#1}}%
-}
+\CustomizeMathJax{\newcommand{\symbfsfit}[1]{\boldsymbol{#1}}}% not sans
+% \CustomizeMathJax{\newcommand{\symbfsfit}[1]{%
+% \mmlToken{mi}[mathvariant="sans-serif-bold-italic"]{#1}}% not greek
+% }
% Duplicates below are commented out.
\CustomizeMathJax{\let\symup\mathrm}
\CustomizeMathJax{\let\symbf\mathbf}% \symbfup defined above
\CustomizeMathJax{\let\symit\mathit}
% \CustomizeMathJax{\let\symbfit\mathit}% not bold
-\CustomizeMathJax{\let\symsf\mathsf}
+% \end{macrocode}
+%
+% \changes{v0.891}{2020/09/21}{\pkg{unicode-math}: Added \optn{sans-style}.}
+% \begin{macrocode}
+\ExplSyntaxOn
+\AtBeginDocument{
+\bool_if:NTF \g__um_sfliteral_bool
+ {\CustomizeMathJax{\let\symsf\symsfup}}
+ {
+ \bool_if:NTF \g__um_upsans_bool
+ {\CustomizeMathJax{\let\symsf\symsfup}}
+ {\CustomizeMathJax{\let\symsf\symsfit}}
+ }
+}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
% \CustomizeMathJax{\let\symbfsfup\mathbf}% not sans
% \CustomizeMathJax{\let\symsfit\mathit}% not sans
% \CustomizeMathJax{\let\symbfsfit\mathit}% not bold nor sans
@@ -78755,6 +80390,205 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \CustomizeMathJax{\let\symbfscr\mathscr}% not bold
% \CustomizeMathJax{\let\symfrak\mathfrak}
\CustomizeMathJax{\let\symbffrac\mathbffrac}
+% \end{macrocode}
+%
+% Some symbol categories defined by \pkg{unicode-math},
+% in case they are used inside custom macros:
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\mathfence}[1]{\mathord{#1}}}
+\CustomizeMathJax{\newcommand{\mathover}[1]{#1}}
+\CustomizeMathJax{\newcommand{\mathunder}[1]{#1}}
+\CustomizeMathJax{\newcommand{\mathaccent}[1]{#1}}
+\CustomizeMathJax{\newcommand{\mathbotaccent}[1]{#1}}
+\CustomizeMathJax{\newcommand{\mathalpha}[1]{\mathord{#1}}}
+% \end{macrocode}
+%
+% \optn{math-style} is one of: \optn{ISO}, \optn{TeX}, \optn{french}, \optn{upright},
+% or \optn{literal},
+% which set |\g__um_upGreek_bool| and |\g__um_upgreek_bool|.
+%
+% \changes{v0.80}{2020/02/15}{\pkg{unicode-math}: Improved \brand{MathJax}.}
+% \begin{macrocode}
+\ExplSyntaxOn
+
+\AtBeginDocument{
+\bool_if:NTF \g__um_upGreek_bool
+ {\LWR@mathjax@addgreek@u@up*{}{}}
+ {\LWR@mathjax@addgreek@u@it*{}{}}
+
+\bool_if:NTF \g__um_upgreek_bool
+ {\LWR@mathjax@addgreek@l@up{}{}}
+ {\LWR@mathjax@addgreek@l@it{}{}}
+}
+
+\LWR@mathjax@addgreek@u@up*{up}{}
+\LWR@mathjax@addgreek@u@it*{it}{}
+\LWR@mathjax@addgreek@l@up{up}{}
+\LWR@mathjax@addgreek@l@it{it}{}
+
+\ExplSyntaxOff
+
+\CustomizeMathJax{\let\lparen(}
+\CustomizeMathJax{\let\rparen)}
+\CustomizeMathJax{\newcommand{\cuberoot}[1]{\,{}^3\!\!\sqrt{#1}}\,}
+\CustomizeMathJax{\newcommand{\fourthroot}[1]{\,{}^4\!\!\sqrt{#1}}\,}
+
+\CustomizeMathJax{\let\lbrbrak[}
+\CustomizeMathJax{\let\rbrbrak]}
+
+\CustomizeMathJax{\newcommand{\lbag}{\mathopen{\unicode{x027C5}}}}% not \left
+\CustomizeMathJax{\newcommand{\rbag}{\mathclose{\unicode{x027C6}}}}% not \right
+
+\CustomizeMathJax{\newcommand{\longdivision}[1]{\mathord{\unicode{x027CC}#1}}}
+
+\CustomizeMathJax{\let\lBrack[}
+\CustomizeMathJax{\let\rBrack]}
+\CustomizeMathJax{\let\lAngle\langle}
+\CustomizeMathJax{\let\rAngle\rangle}
+
+% not in MathJax font:
+% \CustomizeMathJax{\newcommand{\Lbrbrak}{\mathopen{\unicode{x027EC}}}}% not \left
+% \CustomizeMathJax{\newcommand{\Rbrbrak}{\mathopen{\unicode{x027ED}}}}% not \left
+\CustomizeMathJax{\let\Lbrbrak[}
+\CustomizeMathJax{\let\Rbrbrak]}
+
+\CustomizeMathJax{\let\lBrace\{}
+\CustomizeMathJax{\let\rBrace\}}
+
+\CustomizeMathJax{\let\lParen(}
+\CustomizeMathJax{\let\rParen)}
+
+% \CustomizeMathJax{\let\llparenthesis(}
+% \CustomizeMathJax{\let\rrparenthesis)}
+\CustomizeMathJax{\newcommand{\llparenthesis}{\mathopen{\unicode{x02987}}}}% not \left
+\CustomizeMathJax{\newcommand{\rrparenthesis}{\mathopen{\unicode{x02988}}}}% not \right
+%
+% \CustomizeMathJax{\let\llangle\langle}
+% \CustomizeMathJax{\let\rrangle\rangle}
+\CustomizeMathJax{\newcommand{\llangle}{\mathopen{\unicode{x02989}}}}% not \left
+\CustomizeMathJax{\newcommand{\rrangle}{\mathopen{\unicode{x0298A}}}}% not \right
+
+% \CustomizeMathJax{\let\lbrackubar[}
+% \CustomizeMathJax{\let\rbrackubar]}
+\CustomizeMathJax{\newcommand{\lbrackubar}{\mathopen{\unicode{x0298B}}}}% not \left
+\CustomizeMathJax{\newcommand{\rbrackubar}{\mathopen{\unicode{x0298C}}}}% not \right
+
+% \CustomizeMathJax{\let\lbrackultick[}
+% \CustomizeMathJax{\let\rbracklrtick]}
+\CustomizeMathJax{\newcommand{\lbrackultick}{\mathopen{\unicode{x0298D}}}}% not \left
+\CustomizeMathJax{\newcommand{\rbracklrtick}{\mathopen{\unicode{x0298E}}}}% not \right
+
+% \CustomizeMathJax{\let\lbracklltick[}
+% \CustomizeMathJax{\let\rbrackurtick]}
+\CustomizeMathJax{\newcommand{\lbracklltick}{\mathopen{\unicode{x0298F}}}}% not \left
+\CustomizeMathJax{\newcommand{\rbrackurtick}{\mathopen{\unicode{x02990}}}}% not \right
+
+% \CustomizeMathJax{\let\langledot\langle}
+% \CustomizeMathJax{\let\rangledot\rangle}
+\CustomizeMathJax{\newcommand{\langledot}{\mathopen{\unicode{x02991}}}}% not \left
+\CustomizeMathJax{\newcommand{\rangledot}{\mathopen{\unicode{x02992}}}}% not \right
+
+% \CustomizeMathJax{\let\lparenless(}
+% \CustomizeMathJax{\let\rparengtr)}
+\CustomizeMathJax{\newcommand{\lparenless}{\mathopen{\unicode{x02993}}}}% not \left
+\CustomizeMathJax{\newcommand{\rparengtr}{\mathopen{\unicode{x02994}}}}% not \right
+
+% \CustomizeMathJax{\let\Lparengtr(}
+% \CustomizeMathJax{\let\Rparenless)}
+\CustomizeMathJax{\newcommand{\Lparengtr}{\mathopen{\unicode{x02995}}}}% not \left
+\CustomizeMathJax{\newcommand{\Rparenless}{\mathopen{\unicode{x02996}}}}% not \right
+
+% \CustomizeMathJax{\let\lblkbrbrak[}
+% \CustomizeMathJax{\let\rblkbrbrak]}
+\CustomizeMathJax{\newcommand{\lblkbrbrak}{\mathopen{\unicode{x02997}}}}% not \left
+\CustomizeMathJax{\newcommand{\rblkbrbrak}{\mathopen{\unicode{x02998}}}}% not \right
+
+% \CustomizeMathJax{\let\lvzigzag|}
+% \CustomizeMathJax{\let\rvzigzag|}
+\CustomizeMathJax{\newcommand{\lvzigzag}{\mathopen{\unicode{x029D8}}}}% not \left
+\CustomizeMathJax{\newcommand{\rvzigzag}{\mathopen{\unicode{x029D9}}}}% not \right
+
+% \CustomizeMathJax{\let\Lvzigzag|}
+% \CustomizeMathJax{\let\Rvzigzag|}
+\CustomizeMathJax{\newcommand{\Lvzigzag}{\mathopen{\unicode{x029DA}}}}% not \left
+\CustomizeMathJax{\newcommand{\Rvzigzag}{\mathopen{\unicode{x029DB}}}}% not \right
+
+% \CustomizeMathJax{\let\lcurvyangle\langle}
+% \CustomizeMathJax{\let\rcurvyangle\rangle}
+\CustomizeMathJax{\newcommand{\lcurvyangle}{\mathopen{\unicode{x029FC}}}}% not \left
+\CustomizeMathJax{\newcommand{\rcurvyangle}{\mathopen{\unicode{x029FD}}}}% not \right
+
+\CustomizeMathJax{\newcommand{\Vvert}{\mathord{\unicode{x02980}}}}% not \left, etc.
+
+\CustomizeMathJax{\newcommand{\mathcomma}{,}}
+\CustomizeMathJax{\newcommand{\mathcolon}{:}}
+\CustomizeMathJax{\newcommand{\mathsemicolon}{;}}
+
+\CustomizeMathJax{\newcommand{\overbracket}[1]{\mathinner{\overline{\ulcorner{#1}\urcorner}}}}
+\CustomizeMathJax{\newcommand{\underbracket}[1]{\mathinner{\underline{\llcorner{#1}\lrcorner}}}}
+
+\CustomizeMathJax{\newcommand{\overbar}[1]{\mathord{#1\unicode{x00305}}}}
+\CustomizeMathJax{\newcommand{\ovhook}[1]{\mathord{#1\unicode{x00309}}}}
+\CustomizeMathJax{\newcommand{\ocirc}[1]{\mathord{#1\unicode{x0030A}}}}
+\CustomizeMathJax{\newcommand{\candra}[1]{\mathord{#1\unicode{x00310}}}}
+\CustomizeMathJax{\newcommand{\oturnedcomma}[1]{\mathord{#1\unicode{x00312}}}}
+\CustomizeMathJax{\newcommand{\ocommatopright}[1]{\mathord{#1\unicode{x00315}}}}
+\CustomizeMathJax{\newcommand{\droang}[1]{\mathord{#1\unicode{x0031A}}}}
+\CustomizeMathJax{\newcommand{\leftharpoonaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\newcommand{\rightharpoonaccent}[1]{\mathord{#1\unicode{x020D1}}}}
+\CustomizeMathJax{\newcommand{\vertoverlay}[1]{\mathord{#1\unicode{x020D2}}}}
+\CustomizeMathJax{\newcommand{\leftarrowaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\newcommand{\annuity}[1]{\mathord{#1\unicode{x020E7}}}}
+\CustomizeMathJax{\newcommand{\widebridgeabove}[1]{\mathord{#1\unicode{x020E9}}}}
+\CustomizeMathJax{\newcommand{\asteraccent}[1]{\mathord{#1\unicode{x020F0}}}}
+\CustomizeMathJax{\newcommand{\threeunderdot}[1]{\mathord{#1\unicode{x020E8}}}}
+
+\CustomizeMathJax{\newcommand{\Bbbsum}{\mathop{\unicode{x2140}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\intclockwise}{\mathop{\unicode{x2231}}\limits}}
+\CustomizeMathJax{\newcommand{\ointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwise}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\leftouterjoin}{\mathop{\unicode{x27D5}}\limits}}
+\CustomizeMathJax{\newcommand{\rightouterjoin}{\mathop{\unicode{x27D6}}\limits}}
+\CustomizeMathJax{\newcommand{\fullouterjoin}{\mathop{\unicode{x27D7}}\limits}}
+\CustomizeMathJax{\newcommand{\bigbot}{\mathop{\unicode{x27D8}}\limits}}
+\CustomizeMathJax{\newcommand{\bigtop}{\mathop{\unicode{x27D9}}\limits}}
+\CustomizeMathJax{\newcommand{\xsol}{\mathop{\unicode{x29F8}}\limits}}
+\CustomizeMathJax{\newcommand{\xbsol}{\mathop{\unicode{x29F9}}\limits}}
+\CustomizeMathJax{\newcommand{\bigcupdot}{\mathop{\unicode{x2A03}}\limits}}
+\CustomizeMathJax{\newcommand{\bigsqcap}{\mathop{\unicode{x2A05}}\limits}}
+\CustomizeMathJax{\newcommand{\conjquant}{\mathop{\unicode{x2A07}}\limits}}
+\CustomizeMathJax{\newcommand{\disjquant}{\mathop{\unicode{x2A08}}\limits}}
+\CustomizeMathJax{\newcommand{\bigtimes}{\mathop{\unicode{x2A09}}\limits}}
+\CustomizeMathJax{\newcommand{\modtwosum}{\mathop{\unicode{x2A0A}}\limits}}
+\CustomizeMathJax{\newcommand{\sumint}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\intbar}{\mathop{\unicode{x2A0D}}\limits}}
+\CustomizeMathJax{\newcommand{\intBar}{\mathop{\unicode{x2A0E}}\limits}}
+\CustomizeMathJax{\newcommand{\fint}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\cirfnint}{\mathop{\unicode{x2A10}}\limits}}
+\CustomizeMathJax{\newcommand{\awint}{\mathop{\unicode{x2A11}}\limits}}
+\CustomizeMathJax{\newcommand{\rppolint}{\mathop{\unicode{x2A12}}\limits}}
+\CustomizeMathJax{\newcommand{\scpolint}{\mathop{\unicode{x2A13}}\limits}}
+\CustomizeMathJax{\newcommand{\npolint}{\mathop{\unicode{x2A14}}\limits}}
+\CustomizeMathJax{\newcommand{\pointint}{\mathop{\unicode{x2A15}}\limits}}
+\CustomizeMathJax{\newcommand{\sqint}{\mathop{\unicode{x2A16}}\limits}}
+\CustomizeMathJax{\newcommand{\intlarhk}{\mathop{\unicode{x2A17}}\limits}}
+\CustomizeMathJax{\newcommand{\intx}{\mathop{\unicode{x2A18}}\limits}}
+\CustomizeMathJax{\newcommand{\intcap}{\mathop{\unicode{x2A19}}\limits}}
+\CustomizeMathJax{\newcommand{\intcup}{\mathop{\unicode{x2A1A}}\limits}}
+\CustomizeMathJax{\newcommand{\upint}{\mathop{\unicode{x2A1B}}\limits}}
+\CustomizeMathJax{\newcommand{\lowint}{\mathop{\unicode{x2A1C}}\limits}}
+\CustomizeMathJax{\newcommand{\bigtriangleleft}{\mathop{\unicode{x2A1E}}\limits}}
+\CustomizeMathJax{\newcommand{\zcmp}{\mathop{\unicode{x2A1F}}\limits}}
+\CustomizeMathJax{\newcommand{\zpipe}{\mathop{\unicode{x2A20}}\limits}}
+\CustomizeMathJax{\newcommand{\zproject}{\mathop{\unicode{x2A21}}\limits}}
+\CustomizeMathJax{\newcommand{\biginterleave}{\mathop{\unicode{x2AFC}}\limits}}
+\CustomizeMathJax{\newcommand{\bigtalloblong}{\mathop{\unicode{x2AFF}}\limits}}
+\CustomizeMathJax{\newcommand{\arabicmaj}{\mathop{\unicode{x1EEF0}}\limits}}
+\CustomizeMathJax{\newcommand{\arabichad}{\mathop{\unicode{x1EEF1}}\limits}}
+
\end{warpMathJax}
% \end{macrocode}
%
@@ -78823,10 +80657,11 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
%
% For Mathjax:
+% \changes{v0.891}{2020/09/08}{\pkg{units}: Added \cs{mathinner}, improved fraction.}
% \begin{macrocode}
\begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\unit}[2][]{#1 #2}}
-\CustomizeMathJax{\newcommand{\unitfrac}[3][]{#1 #2/#3}}
+\CustomizeMathJax{\newcommand{\unit}[2][]{#1 \mathinner{#2}}}
+\CustomizeMathJax{\newcommand{\unitfrac}[3][]{#1 \mathinner{{}^{#2}\!/\!_{#3}}}}
\end{warpMathJax}
% \end{macrocode}
@@ -78922,13 +80757,13 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \codehtml
%
% \begin{macrocode}
-\LWR@origRequirePackage{lwarp-common-mathjax-letters}
-
\LWR@ProvidesPackagePass{upgreek}[2003/02/12]
% \end{macrocode}
%
% For \brand{MathJax}:
% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+
\begin{warpMathJax}
\LWR@infoprocessingmathjax{upgreek}
@@ -79181,7 +81016,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\setlength{\leftmargini}{\HTMLleftmargini}
}{}
\LWR@forcenewpage
-\LWR@atbeginverbatim{3}{verse}%
+\LWR@atbeginverbatim{verse}%
}
% \end{macrocode}
% After the end of the \env{verse} environment, which places the \element{pre} tag at the
@@ -79189,7 +81024,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \begin{macrocode}
\AtEndEnvironment{verse}{%
\leavevmode%
-\LWR@afterendverbatim{1}%
+\LWR@afterendverbatim%
}
% \end{macrocode}
% Patch to place poemtitle inside an \HTML\ \element{span} of class |poemtitle|:
@@ -79749,7 +81584,6 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
%
% \begin{macrocode}
-\begin{warpHTML}
\ifbool{mathjax}{
% For the hidden print version in the HTML:
\newcommand{\Arrow}[2][]{}
@@ -79806,7 +81640,6 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
}
\AfterEndEnvironment{DispWithArrows*}{\end{lateximage}\end{BlockClass}}
}
-\end{warpHTML}
\begin{warpMathJax}
\CustomizeMathJax{\newenvironment{WithArrows}[1][]{\begin{aligned}}{\end{aligned}}}
@@ -80104,9 +81937,6 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\LWR@ProvidesPackagePass{xcolor}[2016/05/11]
% \end{macrocode}
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
%
%
% \subsection{Remembering and restoring original definitions}
@@ -80649,11 +82479,7 @@ height:\LWR@printlength{\LWR@tempheight}%
}
% \end{macrocode}
% \end{noindmacro}
-
%
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
%
% \iffalse
%</xcolor>
@@ -80890,11 +82716,6 @@ height:\LWR@printlength{\LWR@tempheight}%
% In math mode, which will appear inside a \env{lateximage}, no adjustments
% are necessary.
-% \codeall
-% \begin{macrocode}
-\begin{warpall}
-% \end{macrocode}
-
% \begin{macro}{\xfracHTMLfontsize}
% \changes{v0.19}{2016/06/06}{Added.}
@@ -80905,16 +82726,6 @@ height:\LWR@printlength{\LWR@tempheight}%
% \end{macrocode}
% \end{macro}
-% \begin{macrocode}
-\end{warpall}
-% \end{macrocode}
-
-
-% \codehtml
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-
% Instances of \pkg{xfrac} for various font choices:
% \margintag{instances}
@@ -81017,9 +82828,6 @@ height:\LWR@printlength{\LWR@tempheight}%
\end{warpMathJax}
% \end{macrocode}
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
%
% \iffalse
%</xfrac>
@@ -84044,11 +85852,11 @@ height:\LWR@printlength{\LWR@tempheight}%
\xdef\LWR@customizedMathJax{%
\LWR@customizedMathJax%
\LWRbackslash(%
- \LWRbackslash newcommand\LWRleftbrace\LWRbackslash%
+ \LWRbackslash def\LWRbackslash%
#3% prefix
\LWR@tempone%name
#4% postfix
- \LWRrightbrace\LWRleftbrace%
+ \LWRleftbrace%
}%
\IfBooleanTF{#1}{%
\xdef\LWR@customizedMathJax{%
@@ -84460,6 +86268,7 @@ height:\LWR@printlength{\LWR@tempheight}%
%
%
% ^^A *common-mathjax-newpxtxmath
+% ^^A *newpxtxmath
%
% \iffalse
%<*common-mathjax-newpxtxmath>
@@ -84476,16 +86285,17 @@ height:\LWR@printlength{\LWR@tempheight}%
% for \brand{MathJax}.
%
% \changes{v0.89}{2020/08/31}{\pkg{lwarp-common-mathjax-newpxtxmath}: Added.}
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-newpxtxmath}: Reverse factored out Greek, non-\brand{Unicode}.}
%
% \codehtml
%
% \begin{macrocode}
-\ProvidesPackage{lwarp-common-mathjax-newpxtxmath}[2020/08/31]
+\ProvidesPackage{lwarp-common-mathjax-newpxtxmath}[2020/09/20]
% \end{macrocode}
%
% For \brand{MathJax}:
% \begin{macrocode}
-\LWR@origRequirePackage{lwarp-common-mathjax-letters}
+\LWR@origRequirePackage{lwarp-common-mathjax-nonunicode}
\LWR@origRequirePackage{lwarp-common-mathjax-overlaysymbols}
\begin{warpMathJax}
@@ -84503,10 +86313,6 @@ height:\LWR@printlength{\LWR@tempheight}%
\CustomizeMathJax{\let\smrbrace\}}
\CustomizeMathJax{\newcommand{\Perp}{\mathrel{\unicode{x02AEB}}}}
\CustomizeMathJax{\newcommand{\nPerp}{\mathrel{\not{\!\unicode{x02AEB}}}}}
-\CustomizeMathJax{\newcommand{\lambdabar}{%
- \mathord{\LWRoverlaysymbols{\raise{.5ex}{-}}{\lambda}}%
-}}
-\CustomizeMathJax{\newcommand{\lambdaslash}{\mathord{\unicode{x019B}}}}
\CustomizeMathJax{\newcommand{\Zbar}{\mathord{\unicode{x01B5}}}}
\CustomizeMathJax{\newcommand{\Angstrom}{\mathord{\unicode{x212B}}}}
\CustomizeMathJax{\newcommand{\Euler}{\mathord{\unicode{x2107}}}}
@@ -84516,6 +86322,11 @@ height:\LWR@printlength{\LWR@tempheight}%
\CustomizeMathJax{\newcommand{\circledplus}{\mathbin{\unicode{x2295}}}}
\CustomizeMathJax{\newcommand{\circledminus}{\mathbin{\unicode{x2296}}}}
\CustomizeMathJax{\newcommand{\circledtimes}{\mathbin{\unicode{x2297}}}}
+% \end{macrocode}
+% \changes{v0.891}{2020/09/19}{\pkg{lwarp-common-mathjax-newpxtxmath}: Expanded for \pkg{kpfonts}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\circledslash}{\mathbin{\unicode{x2298}}}}
+%
\CustomizeMathJax{\newcommand{\circleddot}{\mathbin{\unicode{x2299}}}}
\CustomizeMathJax{\let\overgroup\overparen}
\CustomizeMathJax{\let\overgroupra\overrightarrow}
@@ -84528,104 +86339,98 @@ height:\LWR@printlength{\LWR@tempheight}%
\CustomizeMathJax{\newcommand{\vv}{\ifstar\LWRvvstar\overrightarrow}}
%
\CustomizeMathJax{\let\smallintsl\smallint}
-\CustomizeMathJax{\newcommand{\smalliintsl}{\mathop{\unicode{x222C}}}}
-\CustomizeMathJax{\newcommand{\smalliiintsl}{\mathop{\unicode{x222D}}}}
-\CustomizeMathJax{\newcommand{\smalliiiintsl}{\mathop{\unicode{x2A0C}}}}
-\CustomizeMathJax{\newcommand{\smallointsl}{\mathop{\unicode{x222E}}}}
-\CustomizeMathJax{\newcommand{\smalloiintsl}{\mathop{\unicode{x222F}}}}
-\CustomizeMathJax{\newcommand{\smalloiiintsl}{\mathop{\unicode{x2230}}}}
-\CustomizeMathJax{\newcommand{\smallvarointclockwisesl}{\mathop{\unicode{x2232}}}}
-\CustomizeMathJax{\newcommand{\smallointctrclockwisesl}{\mathop{\unicode{x2233}}}}
-\CustomizeMathJax{\newcommand{\smallsumintsl}{\mathop{\unicode{x2A0B}}}}
-\CustomizeMathJax{\newcommand{\smallfintsl}{\mathop{\unicode{x2A0F}}}}
-\CustomizeMathJax{\newcommand{\smallsqintsl}{\mathop{\unicode{x2A16}}}}
+\CustomizeMathJax{\newcommand{\smalliintsl}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintsl}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintsl}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointsl}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintsl}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiiintsl}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\smallvarointclockwisesl}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointctrclockwisesl}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsumintsl}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\smallfintsl}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsqintsl}{\mathop{\unicode{x2A16}}\limits}}
%
\CustomizeMathJax{\let\smallintup\smallint}
-\CustomizeMathJax{\newcommand{\smalliintup}{\mathop{\unicode{x222C}}}}
-\CustomizeMathJax{\newcommand{\smalliiintup}{\mathop{\unicode{x222D}}}}
-\CustomizeMathJax{\newcommand{\smalliiiintup}{\mathop{\unicode{x2A0C}}}}
-\CustomizeMathJax{\newcommand{\smallointup}{\mathop{\unicode{x222E}}}}
-\CustomizeMathJax{\newcommand{\smalloiintup}{\mathop{\unicode{x222F}}}}
-\CustomizeMathJax{\newcommand{\smalloiiintup}{\mathop{\unicode{x2230}}}}
-\CustomizeMathJax{\newcommand{\smallvarointclockwiseup}{\mathop{\unicode{x2232}}}}
-\CustomizeMathJax{\newcommand{\smallointctrclockwiseup}{\mathop{\unicode{x2233}}}}
-\CustomizeMathJax{\newcommand{\smallsumintup}{\mathop{\unicode{x2A0B}}}}
-\CustomizeMathJax{\newcommand{\smallfintup}{\mathop{\unicode{x2A0F}}}}
-\CustomizeMathJax{\newcommand{\smallsqintup}{\mathop{\unicode{x2A16}}}}
-%
-\CustomizeMathJax{\newcommand{\iint}{\mathop{\unicode{x222C}}}}
-\CustomizeMathJax{\newcommand{\iiint}{\mathop{\unicode{x222D}}}}
-\CustomizeMathJax{\newcommand{\iiiint}{\mathop{\unicode{x2A0C}}}}
-\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}}}
-\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}}}
-\CustomizeMathJax{\newcommand{\varointclockwise}{\mathop{\unicode{x2232}}}}
-\CustomizeMathJax{\newcommand{\ointctrclockwise}{\mathop{\unicode{x2233}}}}
-\CustomizeMathJax{\newcommand{\sumint}{\mathop{\unicode{x2A0B}}}}
-\CustomizeMathJax{\newcommand{\fint}{\mathop{\unicode{x2A0F}}}}
-\CustomizeMathJax{\newcommand{\sqint}{\mathop{\unicode{x2A16}}}}
+\CustomizeMathJax{\newcommand{\smalliintup}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintup}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintup}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointup}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintup}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiiintup}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\smallvarointclockwiseup}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointctrclockwiseup}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsumintup}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\smallfintup}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsqintup}{\mathop{\unicode{x2A16}}\limits}}
+%
+\CustomizeMathJax{\newcommand{\iint}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiint}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiint}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwise}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\sumint}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\fint}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\sqint}{\mathop{\unicode{x2A16}}\limits}}
%
\CustomizeMathJax{\let\intsl\int}
-\CustomizeMathJax{\newcommand{\iintsl}{\mathop{\unicode{x222C}}}}
-\CustomizeMathJax{\newcommand{\iiintsl}{\mathop{\unicode{x222D}}}}
-\CustomizeMathJax{\newcommand{\iiiintsl}{\mathop{\unicode{x2A0C}}}}
+\CustomizeMathJax{\newcommand{\iintsl}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintsl}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintsl}{\mathop{\unicode{x2A0C}}\limits}}
\CustomizeMathJax{\let\ointsl\oint}
-\CustomizeMathJax{\newcommand{\oiintsl}{\mathop{\unicode{x222F}}}}
-\CustomizeMathJax{\newcommand{\oiiintsl}{\mathop{\unicode{x2230}}}}
-\CustomizeMathJax{\newcommand{\varointclockwisesl}{\mathop{\unicode{x2232}}}}
-\CustomizeMathJax{\newcommand{\ointctrclockwisesl}{\mathop{\unicode{x2233}}}}
-\CustomizeMathJax{\newcommand{\sumintsl}{\mathop{\unicode{x2A0B}}}}
-\CustomizeMathJax{\newcommand{\fintsl}{\mathop{\unicode{x2A0F}}}}
-\CustomizeMathJax{\newcommand{\sqintsl}{\mathop{\unicode{x2A16}}}}
+\CustomizeMathJax{\newcommand{\oiintsl}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintsl}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwisesl}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwisesl}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\sumintsl}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\fintsl}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\sqintsl}{\mathop{\unicode{x2A16}}\limits}}
%
\CustomizeMathJax{\let\intup\int}
-\CustomizeMathJax{\newcommand{\iintup}{\mathop{\unicode{x222C}}}}
-\CustomizeMathJax{\newcommand{\iiintup}{\mathop{\unicode{x222D}}}}
-\CustomizeMathJax{\newcommand{\iiiintup}{\mathop{\unicode{x2A0C}}}}
+\CustomizeMathJax{\newcommand{\iintup}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintup}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintup}{\mathop{\unicode{x2A0C}}\limits}}
\CustomizeMathJax{\let\ointup\oint}
-\CustomizeMathJax{\newcommand{\oiintup}{\mathop{\unicode{x222F}}}}
-\CustomizeMathJax{\newcommand{\oiiintup}{\mathop{\unicode{x2230}}}}
-\CustomizeMathJax{\newcommand{\varointclockwiseup}{\mathop{\unicode{x2232}}}}
-\CustomizeMathJax{\newcommand{\ointctrclockwiseup}{\mathop{\unicode{x2233}}}}
-\CustomizeMathJax{\newcommand{\sumintup}{\mathop{\unicode{x2A0B}}}}
-\CustomizeMathJax{\newcommand{\fintup}{\mathop{\unicode{x2A0F}}}}
-\CustomizeMathJax{\newcommand{\sqintup}{\mathop{\unicode{x2A16}}}}
+\CustomizeMathJax{\newcommand{\oiintup}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintup}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwiseup}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwiseup}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\sumintup}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\fintup}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\sqintup}{\mathop{\unicode{x2A16}}\limits}}
%
\CustomizeMathJax{\newcommand{\bigcupdot}{\mathop{\unicode{x2A03}}}}
-\CustomizeMathJax{\newcommand{\bignplus}{%
- \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x22C2}}}%
-}}
-\CustomizeMathJax{\let\bigcapplus\bignplus}
\CustomizeMathJax{\newcommand{\bigcupplus}{\mathop{\unicode{x2A04}}}}
\CustomizeMathJax{\newcommand{\bigsqcap}{\mathop{\unicode{x2A05}}}}
-\CustomizeMathJax{\newcommand{\bigsqcapplus}{%
- \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x2A05}}}
-}}
-\CustomizeMathJax{\newcommand{\bigsqcupplus}{%
- \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x2A06}}}
-}}
+%
+% \end{macrocode}
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-newpxtxmath}: Factored non-\brand{Unicode}.}
+% \begin{macrocode}
+%
\CustomizeMathJax{\newcommand{\bigtimes}{\mathop{\unicode{x2A09}}}}
\CustomizeMathJax{\let\varprod\bigtimes}
%
+% \end{macrocode}
+% \changes{v0.891}{2020/09/19}{\pkg{lwarp-common-mathjax-newpxtxmath}: Expanded for \pkg{kpfonts}.}
+% \begin{macrocode}
\CustomizeMathJax{\newcommand{\mappedfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\let\mappedfromchar\mappedfrom}
\CustomizeMathJax{\newcommand{\mapsfrom}{\mathrel{\unicode{x021A4}}}}
\CustomizeMathJax{\newcommand{\longmappedfrom}{\mathrel{\unicode{x027FB}}}}
%
\CustomizeMathJax{\newcommand{\Mapsto}{\mathrel{\unicode{x02907}}}}
+\CustomizeMathJax{\let\Mapstochar\Mapsto}
\CustomizeMathJax{\newcommand{\Longmapsto}{\mathrel{\unicode{x027FE}}}}
\CustomizeMathJax{\newcommand{\Mappedfrom}{\mathrel{\unicode{x02906}}}}
+\CustomizeMathJax{\let\Mappedfromchar\Mappedfrom}
\CustomizeMathJax{\newcommand{\Mapsfrom}{\mathrel{\unicode{x02906}}}}
\CustomizeMathJax{\newcommand{\Longmappedfrom}{\mathrel{\unicode{x27FD}}}}
%
-\CustomizeMathJax{\newcommand{\mmapsto}{\mathrel{\unicode{x02905}}}}
-\CustomizeMathJax{\newcommand{\longmmapsto}{\mathrel{\unicode{x02905}}}}
-\CustomizeMathJax{\newcommand{\mmappedfrom}{\mathrel{\unicode{x021A4}}}}% x02B36
-\CustomizeMathJax{\newcommand{\longmmappedfrom}{\mathrel{\unicode{x021A4}}}}% x02B36
-%
-\CustomizeMathJax{\newcommand{\Mmapsto}{\mathrel{\unicode{x02907}}}}
-\CustomizeMathJax{\newcommand{\Longmmapsto}{\mathrel{\unicode{x027FE}}}}
-\CustomizeMathJax{\newcommand{\Mmappedfrom}{\mathrel{\unicode{x02906}}}}
-\CustomizeMathJax{\newcommand{\Longmmappedfrom}{\mathrel{\unicode{x027FD}}}}
-%
+% \end{macrocode}
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-newpxtxmath}: Factored non-\brand{Unicode}.}
+% \begin{macrocode}
\CustomizeMathJax{\newcommand{\medcirc}{\mathbin{\unicode{x025CB}}}}
\CustomizeMathJax{\newcommand{\medbullet}{\mathbin{\unicode{x025CF}}}}
\CustomizeMathJax{\newcommand{\varparallel}{\mathrel{\unicode{x02AFD}}}}
@@ -84633,29 +86438,34 @@ height:\LWR@printlength{\LWR@tempheight}%
\CustomizeMathJax{\newcommand{\nvarparallel}{\mathrel{\LWRoverlaysymbols{-}{\unicode{x02AFD}}}}}
\CustomizeMathJax{\newcommand{\nvarparallelinv}{\mathrel{\LWRoverlaysymbols{-}{\unicode{x244A}}}}}
%
-\CustomizeMathJax{\newcommand{\colonapprox}{\mathrel{:\approx}}}
-\CustomizeMathJax{\newcommand{\colonsim}{\mathrel{:\sim}}}
-\CustomizeMathJax{\newcommand{\Colonapprox}{\mathrel{\unicode{x2237}\approx}}}
-\CustomizeMathJax{\newcommand{\Colonsim}{\mathrel{\unicode{x2237}\sim}}}
-%
-\CustomizeMathJax{\newcommand{\multimapinv}{\mathrel{\unicode{x027DC}}}}
-\CustomizeMathJax{\newcommand{\multimapboth}{\mathrel{\unicode{x029DF}}}}
-\CustomizeMathJax{\newcommand{\multimapdot}{{\mathrel{-\!\bullet}}}}
-\CustomizeMathJax{\newcommand{\multimapdotinv}{\mathrel{\bullet\!-}}}
-\CustomizeMathJax{\newcommand{\multimapdotboth}{\mathrel{{\bullet\!\!-\!\!\bullet}}}}
-\CustomizeMathJax{\newcommand{\multimapdotbothA}{\mathrel{\unicode{x022B6}}}}
-\CustomizeMathJax{\newcommand{\multimapdotbothB}{\mathrel{\unicode{x22B7}}}}
+% \end{macrocode}
+% \changes{v0.891}{2020/09/19}{\pkg{lwarp-common-mathjax-newpxtxmath}: Expanded for \pkg{kpfonts}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\coloneq}{\mathrel{\unicode{x02254}}}}
+\CustomizeMathJax{\newcommand{\eqcolon}{\mathrel{\unicode{x02255}}}}
%
\CustomizeMathJax{\newcommand{\VDash}{\mathrel{\unicode{x22AB}}}}
-\CustomizeMathJax{\newcommand{\VvDash}{\mathrel{\unicode{x22AA}}}}
+% \end{macrocode}
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-newpxtxmath}: Factored non-\brand{Unicode}.}
+% \begin{macrocode}
%
\CustomizeMathJax{\newcommand{\preceqq}{\mathrel{\unicode{x02AB3}}}}
\CustomizeMathJax{\newcommand{\succeqq}{\mathrel{\unicode{x02AB4}}}}
%
+
\CustomizeMathJax{\newcommand{\nprecsim}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0227E}}}}}
\CustomizeMathJax{\newcommand{\nsuccsim}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0227F}}}}}
\CustomizeMathJax{\newcommand{\nlesssim}{\mathrel{\unicode{x02274}}}}
\CustomizeMathJax{\newcommand{\ngtrsim}{\mathrel{\unicode{x02275}}}}
+%
+% \end{macrocode}
+% \changes{v0.891}{2020/09/19}{\pkg{lwarp-common-mathjax-newpxtxmath}: Expanded for \pkg{kpfonts}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\nsubset}{\mathrel{\unicode{x02284}}}}
+\CustomizeMathJax{\newcommand{\nsupset}{\mathrel{\unicode{x02285}}}}
+\CustomizeMathJax{\newcommand{\notni}{\mathrel{\unicode{x220C}}}}
+\CustomizeMathJax{\let\notowns\notni}
+%
\CustomizeMathJax{\newcommand{\nlessapprox}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02A85}}}}}
\CustomizeMathJax{\newcommand{\ngtrapprox}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02A86}}}}}
%
@@ -84692,7 +86502,6 @@ height:\LWR@printlength{\LWR@tempheight}%
\CustomizeMathJax{\newcommand{\coloneqq}{\mathrel{\unicode{x02254}}}}
\CustomizeMathJax{\newcommand{\eqqcolon}{\mathrel{\unicode{x02255}}}}
\CustomizeMathJax{\newcommand{\Coloneqq}{\mathrel{\unicode{x02A74}}}}
-\CustomizeMathJax{\newcommand{\Eqqcolon}{\mathrel{=\!\unicode{x2237}}}}
\CustomizeMathJax{\newcommand{\Coloneq}{\mathrel{\unicode{x2237}-}}}
\CustomizeMathJax{\newcommand{\Eqcolon}{\mathrel{-\unicode{x2237}}}}
%
@@ -84719,11 +86528,6 @@ height:\LWR@printlength{\LWR@tempheight}%
\CustomizeMathJax{\newcommand{\bulletS}{\mathord{\unicode{x02B24}}}}
\CustomizeMathJax{\newcommand{\primeS}{\prime}}
-\CustomizeMathJax{\newcommand{\strictif}{\mathrel{\unicode{x0297D}}}}% right fish tail
-\CustomizeMathJax{\newcommand{\strictfi}{\mathrel{\unicode{x0297C}}}}% left fish tail
-\CustomizeMathJax{\newcommand{\strictiff}{%
- \mathrel{\unicode{x0297C}\!\!\unicode{x0297D}}%
-}}% left/right fish tails
\CustomizeMathJax{\newcommand{\invamp}{\mathbin{\unicode{x0214B}}}}
\CustomizeMathJax{\newcommand{\lbag}{\mathopen{\unicode{x027C5}}}}
\CustomizeMathJax{\newcommand{\rbag}{\mathclose{\unicode{x027C6}}}}
@@ -84731,28 +86535,20 @@ height:\LWR@printlength{\LWR@tempheight}%
\CustomizeMathJax{\newcommand{\Rbag}{\mathclose{\large\unicode{x027C6}}}}
\CustomizeMathJax{\newcommand{\circledless}{\mathrel{\unicode{x029C0}}}}
\CustomizeMathJax{\newcommand{\circledgtr}{\mathrel{\unicode{x029C1}}}}
-\CustomizeMathJax{\newcommand{\circledwedge}{%
- \mathbin{\LWRoverlaysymbols{\unicode{x025EF}}{\unicode{x02227}}}%
-}}
-\CustomizeMathJax{\newcommand{\circledvee}{%
- \mathbin{\LWRoverlaysymbols{\unicode{x025EF}}{\unicode{0x02228}}}%
-}}
-\CustomizeMathJax{\newcommand{\circledbar}{\mathbin{\unicode{x029B6}}}}
\CustomizeMathJax{\newcommand{\circledbslash}{\mathbin{\unicode{x029B8}}}}
-
+% \end{macrocode}
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-newpxtxmath}: Factored non-\brand{Unicode}.}
+% \begin{macrocode}
\CustomizeMathJax{\newcommand{\lJoin}{\mathrel{\unicode{x22C9}}}}
\CustomizeMathJax{\newcommand{\rJoin}{\mathrel{\unicode{x22CA}}}}
\CustomizeMathJax{\newcommand{\lrJoin}{\mathrel{\unicode{x2A1D}}}}
-\CustomizeMathJax{\newcommand{\openJoin}{\mathrel{\unicode{x2AA4}}}}% overlapping ><
\CustomizeMathJax{\newcommand{\lrtimes}{\mathrel{\unicode{x2A1D}}}}
-\CustomizeMathJax{\newcommand{\opentimes}{\mathrel{\unicode{x2AA4}}}}% overlapping ><
\CustomizeMathJax{\newcommand{\Diamondblack}{\mathord{\unicode{x025C6}}}}
\CustomizeMathJax{\newcommand{\nplus}{\mathrel{\LWRoverlaysymbols{+}{\unicode{x02229}}}}}
\CustomizeMathJax{\newcommand{\nsqsubset}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0228F}}}}}
\CustomizeMathJax{\newcommand{\nsqsupset}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02290}}}}}
\CustomizeMathJax{\newcommand{\dasharrow}{\mathrel{\unicode{x021E2}}}}
-\CustomizeMathJax{\newcommand{\dashleftrightarrow}{\mathrel{\unicode{x021E0}\!\unicode{x021E2}}}}
\CustomizeMathJax{\newcommand{\leftsquigarrow}{\mathrel{\unicode{x021DC}}}}
\CustomizeMathJax{\newcommand{\ntwoheadrightarrow}{\mathrel{\unicode{x02900}}}}
\CustomizeMathJax{\newcommand{\ntwoheadleftarrow}{\mathrel{\unicode{x02B34}}}}
@@ -84761,12 +86557,6 @@ height:\LWR@printlength{\LWR@tempheight}%
\CustomizeMathJax{\newcommand{\boxbar}{\mathbin{\unicode{x025EB}}}}
\CustomizeMathJax{\newcommand{\boxslash}{\mathbin{\unicode{x029C4}}}}
-\CustomizeMathJax{\newcommand{\Wr}{\mathbin{\unicode{x02240}\!\unicode{x02240}}}}
-
-% defined above:
-% \CustomizeMathJax{\newcommand{\lambdaslash}{\mathord{\unicode{x00023}}}}
-% \CustomizeMathJax{\newcommand{\lambdabar}{\mathord{\unicode{x00023}}}}
-
\CustomizeMathJax{\newcommand{\varclubsuit}{\mathord{\unicode{x02667}}}}
\CustomizeMathJax{\newcommand{\vardiamondsuit}{\mathord{\unicode{x02666}}}}
\CustomizeMathJax{\newcommand{\varheartsuit}{\mathord{\unicode{x02665}}}}
@@ -84784,6 +86574,102 @@ height:\LWR@printlength{\LWR@tempheight}%
\CustomizeMathJax{\newcommand{\sqcupplus}{\mathbin{\LWRoverlaysymbols{+}{\unicode{x02294}}}}}
\CustomizeMathJax{\newcommand{\sqcapplus}{\mathbin{\LWRoverlaysymbols{+}{\unicode{x02293}}}}}
+\CustomizeMathJax{\newcommand{\dlb}{\mathopen{\unicode{x027E6}}}}
+\CustomizeMathJax{\newcommand{\drb}{\mathopen{\unicode{x027E7}}}}
+
+\CustomizeMathJax{\newcommand{\varg}{g}}
+\CustomizeMathJax{\newcommand{\vary}{y}}
+\CustomizeMathJax{\newcommand{\varv}{v}}
+\CustomizeMathJax{\newcommand{\varw}{w}}
+
+\CustomizeMathJax{\newcommand{\nexistsAlt}{\mathord{\unicode{x02204}}}}
+\CustomizeMathJax{\newcommand{\existsAlt}{\mathord{\unicode{x02203}}}}
+\CustomizeMathJax{\newcommand{\forallAlt}{\mathord{\unicode{x02200}}}}
+\CustomizeMathJax{\newcommand{\emptysetAlt}{\mathord{\unicode{x02205}}}}
+
+\CustomizeMathJax{\newcommand{\uppartial}{\mathord{\unicode{x02202}}}}% not upright
+
+\CustomizeMathJax{\let\varmathbb\mathbb}
+\CustomizeMathJax{\let\vmathbb\mathbb}
+\CustomizeMathJax{\let\vvmathbb\mathbb}
+
+\CustomizeMathJax{\let\smallprod\prod}
+\CustomizeMathJax{\let\smallsum\sum}
+\CustomizeMathJax{\let\smallcoprod\coprod}
+
+\CustomizeMathJax{\newcommand{\openbox}{\mathord{\unicode{x25FD}}}}
+\CustomizeMathJax{\let\textsquare\openbox}
+% \end{macrocode}
+% \changes{v0.891}{2020/09/19}{\pkg{lwarp-common-mathjax-newpxtxmath}: Expanded for \pkg{kpfonts}.}
+% \begin{macrocode}
+\CustomizeMathJax{\let\varemptyset\emptyset}
+%
+% for newpxmath:
+\CustomizeMathJax{\newcommand{\mathsterling}{\mathord{\unicode{x000A3}}}}
+\CustomizeMathJax{\newcommand{\mathcent}{\mathord{\unicode{x000A2}}}}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</common-mathjax-newpxtxmath>
+% \fi
+%
+%
+%
+%
+% ^^A *common-mathjax-nonunicode
+% ^^A *nonunicode
+%
+% \iffalse
+%<*common-mathjax-nonunicode>
+% \fi
+%
+% \part{lwarp-common-mathjax-nonunicode.sty}
+%
+% \section{common-mathjax-nonunicode}
+%
+% \credits{Daniel Flipo, Michael Sharpe}
+%
+% \DescribePackage{lwarp-common-mathjax-nonunicode}
+% Common code used by \pkg{newpxmath}, \pkg{newtxmath}, \pkg{newtxsf},
+% \pkg{kpfonts-otf}
+% for \brand{MathJax}.
+% These are symbols not found in \brand{Unicode}.
+%
+% Factored from \pkg{lwarp-common-mathjax-newpxtxmath}.
+%
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-nonunicode}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\ProvidesPackage{lwarp-common-mathjax-nonunicode}[2020/09/20]
+% \end{macrocode}
+%
+% For \brand{MathJax}:
+% \begin{macrocode}
+\LWR@origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mmapsto}{\mathrel{\unicode{x021A6}}}}
+\CustomizeMathJax{\let\mmapstochar\mmapsto}
+\CustomizeMathJax{\newcommand{\longmmapsto}{\mathrel{\unicode{x021A6}}}}
+\CustomizeMathJax{\newcommand{\mmappedfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\let\mmappedfromchar\mmappedfrom}
+\CustomizeMathJax{\newcommand{\longmmappedfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\let\mmapsfrom\mmappedfrom}% from kpfonts-otf
+\CustomizeMathJax{\let\longmmapsfrom\longmmappedfrom}% from kpfonts-otf
+
+\CustomizeMathJax{\newcommand{\Mmapsto}{\mathrel{\unicode{x02907}}}}
+\CustomizeMathJax{\let\Mmapstochar\Mmapsto}
+\CustomizeMathJax{\newcommand{\Longmmapsto}{\mathrel{\unicode{x027FE}}}}
+\CustomizeMathJax{\newcommand{\Mmappedfrom}{\mathrel{\unicode{x02906}}}}
+\CustomizeMathJax{\let\Mmappedfromchar\Mmappedfrom}
+\CustomizeMathJax{\newcommand{\Longmmappedfrom}{\mathrel{\unicode{x027FD}}}}
+\CustomizeMathJax{\let\Mmapsfrom\Mmappedfrom}% from kpfonts-otf
+\CustomizeMathJax{\let\Longmmapsfrom\Longmmappedfrom}% from kpfonts-otf
+%
\CustomizeMathJax{\newcommand{\boxright}{\mathrel{\unicode{x025A1}\!\unicode{x02192}}}}
\CustomizeMathJax{\newcommand{\boxleft}{\mathrel{\unicode{x02190}\!\unicode{x025A1}}}}
\CustomizeMathJax{\newcommand{\boxdotright}{\mathrel{\unicode{x022A1}\!\unicode{x02192}}}}
@@ -84812,80 +86698,95 @@ height:\LWR@printlength{\LWR@tempheight}%
\CustomizeMathJax{\let\circleddotright\circledotright}
\CustomizeMathJax{\let\circleddotleft\circledotleft}
+\CustomizeMathJax{\newcommand{\multimapinv}{\mathrel{\unicode{x027DC}}}}
+\CustomizeMathJax{\newcommand{\multimapboth}{\mathrel{\unicode{x029DF}}}}
+\CustomizeMathJax{\newcommand{\multimapdot}{{\mathrel{-\!\bullet}}}}
+\CustomizeMathJax{\newcommand{\multimapdotinv}{\mathrel{\bullet\!-}}}
+\CustomizeMathJax{\newcommand{\multimapdotboth}{\mathrel{{\bullet\!\!-\!\!\bullet}}}}
+\CustomizeMathJax{\newcommand{\multimapdotbothA}{\mathrel{\unicode{x022B6}}}}
+\CustomizeMathJax{\newcommand{\multimapdotbothB}{\mathrel{\unicode{x22B7}}}}
+
\CustomizeMathJax{\newcommand{\multimapbothvert}{%
\mathrel{\overset{\unicode{x025CB}}{\underset{\unicode{x025CB}}{|}}}%
}}
\CustomizeMathJax{\newcommand{\multimapdotbothvert}{%
\mathrel{\overset{\unicode{x025CF}}{\underset{\unicode{x025CF}}{|}}}%
}}
-\CustomizeMathJax{\newcommand{\multimapdotbothBvert}{%
+\CustomizeMathJax{\newcommand{\multimapdotbothBvert}{% bug in kpfonts-otf
\mathrel{\overset{\unicode{x025CF}}{\underset{\unicode{x025CB}}{|}}}%
}}
-\CustomizeMathJax{\newcommand{\multimapdotbothAvert}{%
+\CustomizeMathJax{\newcommand{\multimapdotbothAvert}{% bug in kpfonts-otf
\mathrel{\overset{\unicode{x025CB}}{\underset{\unicode{x025CF}}{|}}}%
}}
-\CustomizeMathJax{\newcommand{\dlb}{\mathopen{\unicode{x027E6}}}}
-\CustomizeMathJax{\newcommand{\drb}{\mathopen{\unicode{x027E7}}}}
+\CustomizeMathJax{\newcommand{\bignplus}{%
+ \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x22C2}}}%
+}}
+\CustomizeMathJax{\let\bigcapplus\bignplus}
+\CustomizeMathJax{\let\capplus\bignplus}% from kpfonts-otf
-% * \marg{2: prefix} \marg{3: postfix} \marg{4: i/u: italic/upright}
-\LWR@mathjax@addgreek@u@up*{}{up}
-\LWR@mathjax@addgreek@u@up*{up}{}
-\LWR@mathjax@addgreek@l@up{up}{}
-\LWR@mathjax@addgreek@l@up{}{up}
-\LWR@mathjax@addgreek@u@it*{}{it}
-\LWR@mathjax@addgreek@l@it{}{it}
+\CustomizeMathJax{\newcommand{\bigsqcapplus}{%
+ \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x2A05}}}
+}}
+\CustomizeMathJax{\let\sqcapplus\bigsqcapplus}% from kpfonts-otf
-% only newtxmath, not newpxmath:
-\LWR@mathjax@addgreek@u@it*{it}{}
-\LWR@mathjax@addgreek@l@it{it}{}
+\CustomizeMathJax{\newcommand{\bigsqcupplus}{%
+ \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x2A06}}}
+}}
+\CustomizeMathJax{\let\sqcupplus\bigsqcupplus}% from kpfonts-otf
-\CustomizeMathJax{\newcommand{\varg}{g}}
-\CustomizeMathJax{\newcommand{\vary}{y}}
-\CustomizeMathJax{\newcommand{\varv}{v}}
-\CustomizeMathJax{\newcommand{\varw}{w}}
+\CustomizeMathJax{\newcommand{\parallelslant}{\mathrel{\unicode{x02AFD}}}}
+\CustomizeMathJax{\newcommand{\parallelbackslant}{\mathrel{\unicode{x0005C}\!\!\unicode{x0005C}}}}
-\CustomizeMathJax{\newcommand{\nexistsAlt}{\mathord{\unicode{x02204}}}}
-\CustomizeMathJax{\newcommand{\existsAlt}{\mathord{\unicode{x02203}}}}
-\CustomizeMathJax{\newcommand{\forallAlt}{\mathord{\unicode{x02200}}}}
-\CustomizeMathJax{\newcommand{\emptysetAlt}{\mathord{\unicode{x02205}}}}
+\CustomizeMathJax{\newcommand{\Eqqcolon}{\mathrel{=\!\unicode{x2237}}}}
+\CustomizeMathJax{\let\eqqColon\Eqqcolon}% for kpfonts-otf
+\CustomizeMathJax{\newcommand{\dashColon}{\mathrel{-\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\Colondash}{\mathrel{\unicode{x2237}-}}}
-\CustomizeMathJax{\newcommand{\uppartial}{\mathord{\unicode{x02202}}}}
+\CustomizeMathJax{\newcommand{\colonapprox}{\mathrel{:\approx}}}
+\CustomizeMathJax{\newcommand{\colonsim}{\mathrel{:\sim}}}
+\CustomizeMathJax{\newcommand{\Colonapprox}{\mathrel{\unicode{x2237}\!\approx}}}
+\CustomizeMathJax{\newcommand{\Colonsim}{\mathrel{\unicode{x2237}\!\sim}}}
-\CustomizeMathJax{\let\varmathbb\mathbb}
-\CustomizeMathJax{\let\vmathbb\mathbb}
-\CustomizeMathJax{\let\vvmathbb\mathbb}
+\CustomizeMathJax{\newcommand{\strictif}{\mathrel{\unicode{x0297D}}}}% right fish tail
+\CustomizeMathJax{\newcommand{\strictfi}{\mathrel{\unicode{x0297C}}}}% left fish tail
+\CustomizeMathJax{\newcommand{\strictiff}{%
+ \mathrel{\unicode{x0297C}\!\!\unicode{x0297D}}%
+}}% left/right fish tails
-\CustomizeMathJax{\let\smallprod\prod}
-\CustomizeMathJax{\let\smallsum\sum}
-\CustomizeMathJax{\let\smallcoprod\coprod}
+\CustomizeMathJax{\newcommand{\circledwedge}{%
+ \mathbin{\LWRoverlaysymbols{\unicode{x025EF}}{\unicode{x02227}}}%
+}}
+\CustomizeMathJax{\newcommand{\circledvee}{%
+ \mathbin{\LWRoverlaysymbols{\unicode{x025EF}}{\unicode{0x02228}}}%
+}}
+\CustomizeMathJax{\newcommand{\circledbar}{\mathbin{\unicode{x029B6}}}}
-\CustomizeMathJax{\newcommand{\openbox}{\mathord{\unicode{x25FD}}}}
-\CustomizeMathJax{\let\textsquare\openbox}
+\CustomizeMathJax{\newcommand{\openJoin}{\mathrel{\unicode{x2AA4}}}}% overlapping ><
+\CustomizeMathJax{\newcommand{\opentimes}{\mathrel{\unicode{x2AA4}}}}% overlapping ><
-% only newtxmath, not newpxmath:
-\ifdef{\iftx@BI}{
- \iftx@BI
- \LWR@mathjax@addlatin@u@bfit{BI}
- \LWR@mathjax@addlatin@l@bfit{BI}
- \fi
-}{}
+\CustomizeMathJax{\newcommand{\VvDash}{\mathrel{\unicode{x22AA}}}}
-% for newpxmath:
-\CustomizeMathJax{\newcommand{\mathsterling}{\mathord{\unicode{x000A3}}}}
-\CustomizeMathJax{\newcommand{\mathcent}{\mathord{\unicode{x000A2}}}}
+\CustomizeMathJax{\newcommand{\lambdabar}{%
+ \mathord{\LWRoverlaysymbols{\raise{.5ex}{-}}{\lambda}}%
+}}
+
+\CustomizeMathJax{\newcommand{\lambdaslash}{\mathord{\unicode{x019B}}}}
+
+\CustomizeMathJax{\newcommand{\Wr}{\mathbin{\unicode{x02240}\!\unicode{x02240}}}}
+
+\CustomizeMathJax{\newcommand{\dashleftrightarrow}{\mathrel{\unicode{x021E0}\!\unicode{x021E2}}}}
+\CustomizeMathJax{\let\leftrightdasharrow\dashleftrightarrow}% for kpfonts-otf
\end{warpMathJax}
% \end{macrocode}
%
% \iffalse
-%</common-mathjax-newpxtxmath>
+%</common-mathjax-nonunicode>
% \fi
%
%
%
-%
-%
% ^^A *common-mathjax-overlaysymbols
%
% \iffalse
diff --git a/macros/latex/contrib/lwarp/lwarp.ins b/macros/latex/contrib/lwarp/lwarp.ins
index c3e4c7d0e6..af15c2f162 100644
--- a/macros/latex/contrib/lwarp/lwarp.ins
+++ b/macros/latex/contrib/lwarp/lwarp.ins
@@ -93,6 +93,7 @@ version 2005/12/01 or later.
\file{lwarp-breakurl.sty}{\from{lwarp.dtx}{breakurl}}
\file{lwarp-breqn.sty}{\from{lwarp.dtx}{breqn}}
\file{lwarp-bsheaders.sty}{\from{lwarp.dtx}{bsheaders}}
+\file{lwarp-bussproofs.sty}{\from{lwarp.dtx}{bussproofs}}
\file{lwarp-bxpapersize.sty}{\from{lwarp.dtx}{bxpapersize}}
\file{lwarp-bytefield.sty}{\from{lwarp.dtx}{bytefield}}
\file{lwarp-cancel.sty}{\from{lwarp.dtx}{cancel}}
@@ -120,6 +121,7 @@ version 2005/12/01 or later.
\file{lwarp-CJKutf8.sty}{\from{lwarp.dtx}{CJKutf8}}
\file{lwarp-cleveref.sty}{\from{lwarp.dtx}{cleveref}}
\file{lwarp-clrdblpg.sty}{\from{lwarp.dtx}{clrdblpg}}
+\file{lwarp-cmbright.sty}{\from{lwarp.dtx}{cmbright}}
\file{lwarp-cmdtrack.sty}{\from{lwarp.dtx}{cmdtrack}}
\file{lwarp-colonequals.sty}{\from{lwarp.dtx}{colonequals}}
\file{lwarp-color.sty}{\from{lwarp.dtx}{color}}
@@ -209,6 +211,7 @@ version 2005/12/01 or later.
\file{lwarp-foreign.sty}{\from{lwarp.dtx}{foreign}}
\file{lwarp-forest.sty}{\from{lwarp.dtx}{forest}}
\file{lwarp-fouridx.sty}{\from{lwarp.dtx}{fouridx}}
+\file{lwarp-fourier.sty}{\from{lwarp.dtx}{fourier}}
\file{lwarp-framed.sty}{\from{lwarp.dtx}{framed}}
\file{lwarp-ftcap.sty}{\from{lwarp.dtx}{ftcap}}
\file{lwarp-ftnright.sty}{\from{lwarp.dtx}{ftnright}}
@@ -251,6 +254,8 @@ version 2005/12/01 or later.
\file{lwarp-jurabib.sty}{\from{lwarp.dtx}{jurabib}}
\file{lwarp-karnaugh-map.sty}{\from{lwarp.dtx}{karnaugh-map}}
\file{lwarp-keyfloat.sty}{\from{lwarp.dtx}{keyfloat}}
+\file{lwarp-kpfonts.sty}{\from{lwarp.dtx}{kpfonts}}
+\file{lwarp-kpfonts-otf.sty}{\from{lwarp.dtx}{kpfonts-otf}}
\file{lwarp-layaureo.sty}{\from{lwarp.dtx}{layaureo}}
\file{lwarp-layout.sty}{\from{lwarp.dtx}{layout}}
\file{lwarp-layouts.sty}{\from{lwarp.dtx}{layouts}}
@@ -258,6 +263,7 @@ version 2005/12/01 or later.
\file{lwarp-leftidx.sty}{\from{lwarp.dtx}{leftidx}}
\file{lwarp-letterspace.sty}{\from{lwarp.dtx}{letterspace}}
\file{lwarp-lettrine.sty}{\from{lwarp.dtx}{lettrine}}
+\file{lwarp-libertinust1math.sty}{\from{lwarp.dtx}{libertinust1math}}
\file{lwarp-lineno.sty}{\from{lwarp.dtx}{lineno}}
\file{lwarp-lips.sty}{\from{lwarp.dtx}{lips}}
\file{lwarp-listings.sty}{\from{lwarp.dtx}{listings}}
@@ -412,6 +418,7 @@ version 2005/12/01 or later.
\file{lwarp-rviewport.sty}{\from{lwarp.dtx}{rviewport}}
\file{lwarp-savetrees.sty}{\from{lwarp.dtx}{savetrees}}
\file{lwarp-scalefnt.sty}{\from{lwarp.dtx}{scalefnt}}
+\file{lwarp-scalerel.sty}{\from{lwarp.dtx}{scalerel}}
\file{lwarp-schemata.sty}{\from{lwarp.dtx}{schemata}}
\file{lwarp-scrextend.sty}{\from{lwarp.dtx}{scrextend}}
\file{lwarp-scrhack.sty}{\from{lwarp.dtx}{scrhack}}
@@ -506,6 +513,7 @@ version 2005/12/01 or later.
\file{lwarp-turnthepage.sty}{\from{lwarp.dtx}{turnthepage}}
\file{lwarp-twoup.sty}{\from{lwarp.dtx}{twoup}}
\file{lwarp-txfonts.sty}{\from{lwarp.dtx}{txfonts}}
+\file{lwarp-txgreeks.sty}{\from{lwarp.dtx}{txgreeks}}
\file{lwarp-typearea.sty}{\from{lwarp.dtx}{typearea}}
\file{lwarp-typicons.sty}{\from{lwarp.dtx}{typicons}}
\file{lwarp-ulem.sty}{\from{lwarp.dtx}{ulem}}
@@ -558,6 +566,7 @@ version 2005/12/01 or later.
\file{lwarp-common-multimedia.sty}{\from{lwarp.dtx}{common-multimedia}}
\file{lwarp-common-mathjax-letters.sty}{\from{lwarp.dtx}{common-mathjax-letters}}
\file{lwarp-common-mathjax-newpxtxmath.sty}{\from{lwarp.dtx}{common-mathjax-newpxtxmath}}
+\file{lwarp-common-mathjax-nonunicode.sty}{\from{lwarp.dtx}{common-mathjax-nonunicode}}
\file{lwarp-common-mathjax-overlaysymbols.sty}{\from{lwarp.dtx}{common-mathjax-overlaysymbols}}
}
\Msg{*********************************************************}
diff --git a/macros/latex/contrib/lwarp/lwarp.pdf b/macros/latex/contrib/lwarp/lwarp.pdf
index dd84ba9fdc..df8c6908b0 100644
--- a/macros/latex/contrib/lwarp/lwarp.pdf
+++ b/macros/latex/contrib/lwarp/lwarp.pdf
Binary files differ
diff --git a/macros/latex/contrib/lwarp/lwarpmk.lua b/macros/latex/contrib/lwarp/lwarpmk.lua
index 18c1b40443..11a09285da 100755
--- a/macros/latex/contrib/lwarp/lwarpmk.lua
+++ b/macros/latex/contrib/lwarp/lwarpmk.lua
@@ -2,7 +2,7 @@
-- Copyright 2016-2020 Brian Dunn
-printversion = "v0.89"
+printversion = "v0.891"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()