texlive[74863] Master: figureversions (6apr25)
commits+karl at tug.org
commits+karl at tug.org
Sun Apr 6 23:13:02 CEST 2025
Revision: 74863
https://tug.org/svn/texlive?view=revision&revision=74863
Author: karl
Date: 2025-04-06 23:13:01 +0200 (Sun, 06 Apr 2025)
Log Message:
-----------
figureversions (6apr25)
Modified Paths:
--------------
trunk/Master/tlpkg/bin/tlpkg-ctan-check
trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/figureversions/
trunk/Master/texmf-dist/doc/latex/figureversions/README.md
trunk/Master/texmf-dist/doc/latex/figureversions/figureversions.pdf
trunk/Master/texmf-dist/source/latex/figureversions/
trunk/Master/texmf-dist/source/latex/figureversions/figureversions.dtx
trunk/Master/texmf-dist/source/latex/figureversions/figureversions.ins
trunk/Master/texmf-dist/tex/latex/figureversions/
trunk/Master/texmf-dist/tex/latex/figureversions/figureversions.sty
trunk/Master/tlpkg/tlpsrc/figureversions.tlpsrc
Added: trunk/Master/texmf-dist/doc/latex/figureversions/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/figureversions/README.md (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/figureversions/README.md 2025-04-06 21:13:01 UTC (rev 74863)
@@ -0,0 +1,36 @@
+# figureversions
+
+### How do you like your figures?
+
+The figureversions package defines several commands to switch between
+figure versions, which determine the appearance of numbers in your
+document. The package works with many font packages available on CTAN
+as well as with most OpenType fonts under XeTeX and LuaTeX in combination
+with fontspec.
+
+The development of this font package is hosted at
+[GitHub](https://github.com/ummels/figureversions).
+
+## Usage
+
+To use this package, include
+
+ \usepackage{figureversions}
+
+in the preamble of your LaTeX document. See the
+[PDF documentation](figureversions.pdf) for details.
+
+## License
+
+Copyright (c) 2025 by Michael Ummels <michael at ummels.de>
+
+This work may be distributed and modified under the terms and conditions of the
+[LaTeX Project Public License](https://www.latex-project.org/lppl/),
+version 1.3c or greater (your choice).
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Michael Ummels.
+
+This work consists of the files figureversions.dtx, figureversions.ins and
+the derived file figureversions.sty.
Property changes on: trunk/Master/texmf-dist/doc/latex/figureversions/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/figureversions/figureversions.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/figureversions/figureversions.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/figureversions/figureversions.pdf 2025-04-05 23:49:02 UTC (rev 74862)
+++ trunk/Master/texmf-dist/doc/latex/figureversions/figureversions.pdf 2025-04-06 21:13:01 UTC (rev 74863)
Property changes on: trunk/Master/texmf-dist/doc/latex/figureversions/figureversions.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/figureversions/figureversions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/figureversions/figureversions.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/figureversions/figureversions.dtx 2025-04-06 21:13:01 UTC (rev 74863)
@@ -0,0 +1,1107 @@
+% \iffalse meta-comment
+%
+% Copyright (c) 2025 by Michael Ummels <michael at ummels.de>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Michael Ummels.
+%
+% This work consists of the files figureversions.dtx, figureversions.ins and
+% the derived files figureversions.sty and figureversions.pdf.
+%
+%<*driver>
+\documentclass[a4paper,onlydoc]{l3doc}
+
+\usepackage[nottoc]{tocbibind}
+\usepackage{figureversions}
+\usepackage[toc,enum,bib]{tabfigures}
+\usepackage[scale=0.95]{cantarell}
+\usepackage[narrow]{inconsolata}
+\usepackage{microtype}
+
+\hypersetup{
+ bookmarksnumbered,
+ colorlinks=false,
+ pdfborder={0 0 0}
+}
+
+% Hack in order to get quotes in verbatim mode right
+\DeclareEncodingSubset{TS1}{zi4}{1}
+
+\renewcommand{\sfdefault}{cantarell-OsF}
+\renewcommand{\familydefault}{\sfdefault}
+\renewcommand{\MacroLongFont}{\fontfamily{zi4}\scriptsize}
+\renewcommand{\baselinestretch}{1.1}
+\makeatletter
+\renewcommand{\meta at font@select}{\sffamily\itshape}
+\makeatother
+
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+
+\begin{document}
+ \DocInput{figureversions.dtx}
+\end{document}
+%</driver>
+%<*package>
+\ProvidesExplPackage {figureversions} {2025-04-05} {1.0} {Figure versions}
+%</package>
+% \fi
+%
+% \changes{v1.0}{2025-04-05}{Initial version}
+%
+% \GetFileInfo{figureversions.sty}
+%
+% \title{How Do You Like Your Figures?}
+% \author{Michael Ummels}
+% \date{\fileversion\quad\filedate}
+% \maketitle
+%
+% \begin{abstract}
+% The \pkg{figureversions} package defines several commands to switch between
+% figure versions, which determine the appearance of numbers in your
+% document. The package works with many font packages available on CTAN
+% as well as with most OpenType fonts under \XeTeX\ and \LuaTeX\ in combination
+% with \pkg{fontspec}.
+% \end{abstract}
+%
+% \begin{documentation}
+%
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% While basic fonts only have \emph{lining} figures (aka numbers), which extend
+% from the base line to the height of capital letters, advanced fonts may come
+% with several other \emph{figure versions}, the most prominent being
+% \emph{old-style} or \emph{text} figures which look more like lowercase letters
+% and therefore fit nicely into a block of lower/mixed-case text: compare
+% \liningfigures{1234567890} to \textfigures{1234567890}.%
+% \marginpar{%
+% \raggedleft\LARGE
+% \begin{tabular}{r}
+% \liningfigures{1234567890} \\
+% \textfigures{1234567890}
+% \end{tabular}
+% }
+%
+% Since \LaTeX's font selection system \cite{nfss} has no support
+% for figure versions, font package authors have resorted to define one
+% \LaTeX\ font family for each figure version, so you can switch between
+% different figure versions by invoking the low-level \cs{fontfamily} command,
+% followed by a call to \cs{selectfont}. This is not only cumbersome, but also
+% ties the font family to the figure version, so you cannot change them
+% independently.
+%
+% The \pkg{figureversions} package not only makes it easier to switch figure
+% versions, but it also lets you change the two dimensions of a figure version
+% separately: \emph{figure style} and \emph{figure alignment}. While figure
+% style is solely about the the appearance of figures, figure alignment
+% is concerned with the width of figures. In particular, \emph{tabular}
+% figures all have the same width, so multiple-digit numbers nicely line up
+% when stacked on top of each other.%
+% \marginpar{%
+% \raggedleft\LARGE
+% \begin{tabular}{rr}
+% 12345 & \tbfigures{12345} \\
+% 67890 & \tbfigures{67890}
+% \end{tabular}
+% }
+%
+% \subsection{History}
+%
+% Most commands defined by this package first appeared in the
+% \pkg{MinionPro} package\footnote{\url{https://ctan.org/pkg/minionpro}} by
+% Achim Blumensath et al., a package that made the professional
+% Minion\texttrademark\ Pro font family by Adobe accessible to all
+% \LaTeX\ users (i.e.\ not only when using \XeTeX\ or \LuaTeX).
+% Since the concept of figure versions is not specific to Minion Pro, the
+% corresponding functionality was then incorporated by Andreas Bühmann into a
+% separate package called \pkg{fontaxes}.\kern-0.15em%
+% \footnote{\url{https://ctan.org/pkg/fontaxes}} The \pkg{fontaxes}
+% package does not only support different figure versions, but has also split
+% the \emph{shape} of a font into two dimensions (`axes'), which can be
+% changed independently of each other. For instance, \cs{itshape} operates on
+% the first dimension, while \cs{scshape} operates on the second. With
+% \LaTeX\ release 2020-02-02, that functionality was integrated into the
+% kernel \cite{ltnews31}, so -- with the exception of the functionality
+% dealing with figure versions -- the \pkg{fontaxes} package has been made
+% redundant. Hence, its current maintainer decided to undertake a modern
+% rewrite and strip off all functionality that has been integrated into the
+% kernel, thereby adding support for
+% \pkg{fontspec}\footnote{\url{https://ctan.org/pkg/fontspec}} under
+% \XeTeX\ and \LuaTeX.
+%
+% \section{Usage}
+%
+% You can load this package by adding
+% \begin{quote}
+% |\usepackage{figureversions}|
+% \end{quote}
+% to the preamble of your document.
+%
+% \subsection{High-level document commands}
+%
+% \begin{function}{\lnfigures,\txfigures,\liningfigures,\textfigures}
+% \begin{syntax}
+% \cs{lnfigures}
+% \cs{txfigures}
+% \cs{liningfigures}\marg{text}
+% \cs{textfigures}\marg{text}
+% \end{syntax}
+% By default, the \pkg{figureversions} package knows two figure styles, `text'
+% and `lining', which can be accessed using the commands \cs{txfigures} and
+% \cs{lnfigures} respectively. Similar to commands like \cs{itshape},
+% these commands are \emph{declarations} and remain in effect until the end of
+% the current group or environment. If you only want to change the figure
+% style for a short amount of text, you can use the corresponding \emph{text
+% font commands} \cs{liningfigures} and \cs{textfigures}, which take as
+% argument the text to which the figure style should apply.
+% \end{function}
+%
+% \begin{function}{\prfigures,\tbfigures,\proportionalfigures,\tabularfigures}
+% \begin{syntax}
+% \cs{prfigures}
+% \cs{tbfigures}
+% \cs{proportionalfigures}\marg{text}
+% \cs{tabularfigures}\marg{text}
+% \end{syntax}
+% For changing the figure alignment, use the commands \cs{prfigures} and
+% \cs{tbfigures}: while \cs{prfigures} changes to proportional figures, which
+% vary in width, \cs{tbfigures} changes to tabular or \emph{monospaced} figures.
+% As for \cs{linfigures} and \cs{txfigures}, the selected figure
+% alignment remains in effect until the end of the current group or environment;
+% the corresponding text font commands are \cs{proportionalfigures} and
+% \cs{tabularfigures}.
+% \end{function}
+%
+% \begin{function}{\boldmath,\unboldmath,\tabularmath,\proportionalmath}
+% \begin{syntax}
+% \cs{boldmath}
+% \cs{unboldmath}
+% \cs{tabularmath}
+% \cs{proportionalmath}
+% \end{syntax}
+% By default, \LaTeX\ provides two \emph{math versions}, `normal' and `bold',
+% as well as commands \cs{boldmath} and \cs{unboldmath} for switching between
+% them. The \pkg{figureversions} packages redefines these commands to only
+% change the math font's weight and provides commands \cs{tabularmath} and
+% \cs{proportionalmath} to switch between tabular and proportional figures
+% in math mode.\footnote{Note that these commands have to be executed outside
+% of math mode.} This functionality assumes the presence of additional math
+% versions `tabular' and `boldtabular'; the package will copy the setups of math
+% versions `normal' and `bold' if you do not provide your own declarations.
+% \end{function}
+%
+% \begin{function}{\figureversion}
+% \begin{syntax}
+% \cs{figureversion}\marg{comma-separated list}
+% \end{syntax}
+% The \cs{figureversion} command can be used to change the figure version by a
+% single command. It takes as argument a comma-separated list of one or more
+% of the following options:\footnote{More options can be added by package
+% authors; see Section~\ref{sect:code-interface}.}
+% \begin{quote}
+% \begin{tabular}{@{}ll}
+% |text|, |osf| & for text figures,\\
+% |lining|, |lf| & for lining figures,\\
+% |tabular|, |tab| & for tabular figures (also in math mode),\\
+% |proportional|, |prop| & for proportional figures (also in math mode).
+% \end{tabular}
+% \end{quote}
+% \end{function}
+%
+% \subsection{Low-level document commands}
+%
+% The low-level commands described in this section are mostly relevant for
+% package authors. They are meant to be be combined with other low-level font
+% selection commands like \cs{fontshape} and \cs{fontseries} and a subsequent
+% call to \cs{selectfont}.
+% Finally, since they rely on the classical \LaTeXe\ font selection scheme --
+% with the exception of \cs{mathweight} and \cs{mathfigurealignment} -- they
+% would normally not work with \pkg{fontspec}.
+%
+% \begin{function}{\fontfigurestyle}
+% \begin{syntax}
+% \cs{fontfigurestyle}\marg{figure style}
+% \end{syntax}
+% By default, the \pkg{figureversions} package knows two figure styles: `text'
+% and `lining', but package authors can define additional figure styles; see
+% Section~\ref{sect:code-interface}.
+% \end{function}
+%
+% \begin{function}{\fontfigurealignment}
+% \begin{syntax}
+% \cs{fontfigurealignment}\marg{figure alignment}
+% \end{syntax}
+% Using this command, you can choose either `proportional' or `tabular' figures.
+% \end{function}
+%
+% \begin{function}{\fontbasefamily}
+% \begin{syntax}
+% \cs{fontbasefamily}\marg{family name}
+% \end{syntax}
+% Recall that figure versions are implemented on top of the \LaTeXe\ font
+% selection scheme by amending the family name. For instance,
+% |\fontfamily{cantarell-TLF}| selects \emph{Cantarell} with tabular lining
+% figures.
+% The \cs{fontbasefamily} command thus allows you to select the
+% font family independently of the figure version. Hence,
+% |\fontbasefamily{cantarell}| switches to Cantarell, but does not change the
+% current figure style or alignment.
+% \end{function}
+%
+% \begin{function}{\mathweight}
+% \begin{syntax}
+% \cs{mathweight}\marg{font weight}
+% \end{syntax}
+% The package knows two different math weights `normal' and `bold', which can
+% be accessed by this command. Note that -- like \cs{mathversion} -- this
+% command does \emph{not} work in math mode and takes effect immediately,
+% i.e.\ for all following invocations of math mode.
+% \end{function}
+%
+% \begin{function}{\mathfigurealignment}
+% \begin{syntax}
+% \cs{mathfigurealignment}\marg{figure alignment}
+% \end{syntax}
+% To change the math figure alignment, use this command. As for
+% \cs{fontfigurealignment}, valid arguments are `proportional` and `tabular`.
+% Like \cs{mathweight}, this command does not work in math mode and takes
+% effect immediately.
+% \end{function}
+%
+% \subsection{Code-level interface}\label{sect:code-interface}
+%
+% Like other packages implemented in \LaTeX3, this package defines several
+% commands at \emph{code level}, i.e.\ with \cs{ExplSyntaxOn}, which can be
+% used to extend the functionality of this package.
+%
+% \begin{function}{\figureversions_new_figurestyle:nnn,\figureversions_new_figurestyle:Vnn}
+% \begin{syntax}
+% \cs{figureversions_new_figurestyle:nnn} \marg{name} \marg{proportional suffixes} \marg{tabular suffixes}
+% \end{syntax}
+% Defines a new figure style named \meta{name} with corresponding font family
+% suffixes (given as comma-separated lists, maybe empty) for proportional and
+% tabular figure alignment. For instance, the existing figure style `text'
+% is defined by
+% \begin{quote}
+% |\figureversions_new_figurestyle:nnn {text} {OsF} {TOsF}|
+% \end{quote}
+% \end{function}
+%
+% \begin{function}{\figureversions_new_figureversion:nn}
+% \begin{syntax}
+% \cs{figureversions_new_figureversion:nn} \marg{option} \marg{code}
+% \end{syntax}
+% Defines a new option for the \cs{figureversion} command: Expands to
+% \meta{code} when \cs{figureversion} is called with \meta{option} among
+% its arguments.
+% \end{function}
+%
+% \section{Compatibility}
+%
+% \subsection{Font support}
+%
+% Within the \LaTeXe\ font selection scheme, the package supports the two most
+% common naming schemes for font families:
+% \begin{enumerate}
+% \item \meta{family}|-|\meta{suffix} where the suffix is e.g. |OsF| for
+% proportional text figures or |TLF| for tabular lining figures.
+% \item \meta{family}\meta{style} where the family is given by a
+% three-letter lowercase identifier and and \emph{style} is either
+% |j| for text figures or |x| for lining figures.\footnote{Note that
+% this scheme does not support different figure alignments.}
+% \end{enumerate}
+% Almost all of the many font packages available on CTAN adhere to one of these
+% conventions, so \pkg{figureversions} works with all of them.
+%
+% Even more fonts are supported with \pkg{fontspec}: Since the
+% \pkg{figureversions} package simply maps commands like \cs{tbfigures} to the
+% corresponding OpenType feature, the package works with any OpenType font that
+% implements one or more of these features.
+%
+% \subsection{Interplay with other packages}
+%
+% Since this package defines the \cs{tbfigures} command to switch to tabular
+% figures, this package plays well and -- in some sense -- enables the
+% \pkg{tabfigures} package\footnote{https://ctan.org/pkg/tabfigures}, which
+% patches several \LaTeX\ commands and environments to use tabular figures. If
+% you are a document author who uses a font with proportional figures by
+% default, the \pkg{tabfigures} package is warmly recommended (also used in
+% this document for e.g.\ the table of contents).
+%
+% As mentioned in the introduction, this package replaces the \pkg{fontaxes}
+% package, which -- as of version~1.1 -- is just a wrapper around
+% this package, adding some internal commands that
+% have historically been used by package authors to define new figure styles.
+% If you are the author of a package that depends on \pkg{fontaxes}, please
+% consider updating you package to depend on this package instead, using the
+% commands described in Section~\ref{sect:code-interface} to define additional
+% figure styles if necessary.
+%
+% \end{documentation}
+%
+% \begin{implementation}
+% \AddToHook{sffamily}{\fontfigurealignment{tabular}}
+%
+% \section{Implementation}
+%
+% \begin{macrocode}
+%<*package>
+%<@@=figureversions>
+% \end{macrocode}
+%
+% \subsection{Variables and Constants}
+%
+% First, some constants.
+% \begin{macrocode}
+\str_const:Nn \c_@@_text_str {text}
+\str_const:Nn \c_@@_lining_str {lining}
+\str_const:Nn \c_@@_proportional_str {proportional}
+\str_const:Nn \c_@@_tabular_str {tabular}
+\str_const:Nn \c_@@_normal_str {normal}
+\str_const:Nn \c_@@_bold_str {bold}
+\str_const:Nn \c_@@_lf_str {LF}
+\str_const:Nn \c_@@_osf_str {OsF}
+\str_const:Nn \c_@@_tlf_str {TLF}
+\str_const:Nn \c_@@_tosf_str {TOsF}
+% \end{macrocode}
+% This global boolean is set to true when \pkg{fontspec} is loaded.
+% \begin{macrocode}
+\bool_new:N \g_@@_fontspec_bool
+% \end{macrocode}
+% The following string variables will hold the current value of the font base
+% family, the font figure style, and the figure alignment, respectively. We
+% initialize them with default values, although these will almost surely be
+% overwritten once a figure style selection command is executed.
+% \begin{macrocode}
+\str_new:N \l_@@_fontbasefamily_str
+\str_new:N \l_@@_fontfigurestyle_str
+\str_new:N \l_@@_fontfigurealignment_str
+\str_set:Nn \l_@@_fontbasefamily_str {cmr}
+\str_set_eq:NN \l_@@_fontfigurestyle_str \c_@@_lining_str
+\str_set_eq:NN \l_@@_fontfigurealignment_str \c_@@_proportional_str
+% \end{macrocode}
+% The defined figure styles are held in two maps, one each for the two
+% supported figure alignments `proportional' and `tabular'. Those
+% maps take as key the name of the figure style and as value the corresponding
+% suffix of the font family (think |OsF| or |TOsF|).
+% \begin{macrocode}
+\prop_new:N \g_@@_figurestyles_proportional_prop
+\prop_new:N \g_@@_figurestyles_tabular_prop
+% \end{macrocode}
+% The possible inputs for the \cs{figureversion} commands and their meanings are
+% held in a map as well.
+% \begin{macrocode}
+\prop_new:N \g_@@_figureversions_prop
+% \end{macrocode}
+% For math fonts, we only support changing the weight or the figure alignment.
+% The following two variables will hold the current value of each axis.
+% \begin{macrocode}
+\str_new:N \l_@@_mathweight_str
+\str_new:N \l_@@_mathalign_str
+% \end{macrocode}
+%
+% \subsection{Messages}
+%
+% \begin{macrocode}
+\msg_new:nnn { figureversions } { unknown-figurestyle }
+ { Ignoring~unknown~figure~style~`#1'~\msg_line_context: }
+\msg_new:nnn { figureversions } { unknown-figurealignment }
+ { Ignoring~unknown~figure~alignment~`#1'~\msg_line_context: }
+\msg_new:nnn { figureversions } { unknown-mathweight }
+ { Ignoring~unknown~math~weight~`#1'~\msg_line_context: }
+\msg_new:nnn { figureversions } { unknown-mathfigurealignment }
+ { Ignoring~unknown~math~figure~alignment~`#1'~\msg_line_context: }
+\msg_new:nnn { figureversions } { unknown-figureversion }
+ { Ignoring~unknown~figure~version~`#1'~\msg_line_context: }
+% \end{macrocode}
+% \subsection{Utility functions}
+%
+% \begin{macro}{\@@_warning:nn}
+% Issues a warning.
+% \begin{macrocode}
+\cs_new:Nn \@@_warning:nn
+ { \msg_warning:nnn {figureversions} {#1} {#2} }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_if_family_exists:nTF}
+% Used to test whether a given font family exists or not.
+% \begin{macrocode}
+\prg_new_protected_conditional:Nnn \@@_if_family_exists:n { TF }
+ {
+ \group_begin:
+ \fontfamily {#1}
+ \try at load@fontshape
+ \cs_if_eq:cNTF \curr at fontshape \relax
+ { \group_insert_after:N \prg_return_false: }
+ { \group_insert_after:N \prg_return_true: }
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_split_family:nNNTF,
+% \@@_split_family:VNNTF,
+% \@@_split_family_aux:w}
+% Tries to split the font family name given by the \meta{token list}~|#1|
+% into the base name and a variant suffix, delimited by |-|. Sets
+% \meta{string variable}~|#2| to the base name and \meta{string variable}~|#3|
+% to the suffix if the split succeeds.
+% \begin{macrocode}
+\prg_new_protected_conditional:Nnn \@@_split_family:nNN { TF }
+ { \@@_split_family_aux:w #1 - - \q_stop #2 #3 }
+\prg_generate_conditional_variant:Nnn \@@_split_family:nNN { V } { TF }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_split_family_aux:w #1-#2-#3 \q_stop #4 #5
+ {
+ \tl_if_empty:nTF {#2}
+ { \prg_return_false: }
+ {
+ \str_set:Nn #4 {#1}
+ \str_set:Nn #5 {#2}
+ \prg_return_true:
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_copy_mathversion_if_undefined:nn}
+% Declare math version |#1| to be a copy of math version |#2| if |#1| does not
+% exist already. To accomplish this, we have to know that a math version's
+% configuration is basically stored in a macro |\mv@|\meta{name}.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_copy_mathversion_if_undefined:nn
+ {
+ \cs_if_exist:cF {mv@#1}
+ {
+ \DeclareMathVersion {#1}
+ \cs_set_eq:cc {mv@#1} {mv@#2}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Encoding}
+%
+% \begin{macro}{\@@_encode_suffix_proportional:N}
+% Determines the possible proportional font family suffixes for the
+% current figure style and places the result in the given \meta{seq variable}
+% |#1|. Since some figure styles may only exist in a tabular version, use that
+% as a fallback. Finally, fall back to |LF|, |OsF|, |TLF| and |TOsF| (in that
+% order).
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_encode_suffix_proportional:N
+ {
+ \prop_get:NVNF \g_@@_figurestyles_proportional_prop
+ \l_@@_fontfigurestyle_str \l_tmpa_str
+ {
+ \prop_get:NVNF \g_@@_figurestyles_tabular_prop
+ \l_@@_fontfigurestyle_str \l_tmpa_str
+ }
+ \tl_if_eq:NNTF \l_tmpa_str \q_no_value
+ { \seq_set_eq:NN #1 \c_empty_seq }
+ { \seq_set_from_clist:NN #1 \l_tmpa_str }
+% \end{macrocode}
+% Since any given font family might have only a restricted number of figure
+% versions (maybe even only tabular ones), we add the well-known suffixes
+% |LF|, |OsF|, |TLF| and |TOsF| to the end of the seq.
+% \begin{macrocode}
+ \seq_if_in:NVF #1 \c_@@_lf_str { \seq_put_right:NV #1 \c_@@_lf_str }
+ \seq_if_in:NVF #1 \c_@@_osf_str { \seq_put_right:NV #1 \c_@@_osf_str }
+ \seq_if_in:NVF #1 \c_@@_tlf_str { \seq_put_right:NV #1 \c_@@_tlf_str }
+ \seq_if_in:NVF #1 \c_@@_tosf_str { \seq_put_right:NV #1 \c_@@_tosf_str }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_encode_suffix_tabular:N}
+% Determines the possible tabular font family suffixes for the current figure
+% style and places the result in the given \meta{seq variable} |#1|.
+% Since some figure styles may only exist in a proportional version, use that
+% as a fallback.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_encode_suffix_tabular:N
+ {
+ \prop_get:NVNF \g_@@_figurestyles_tabular_prop
+ \l_@@_fontfigurestyle_str \l_tmpa_str
+ {
+ \prop_get:NVN \g_@@_figurestyles_proportional_prop
+ \l_@@_fontfigurestyle_str \l_tmpa_str
+ }
+ \tl_if_eq:NNTF \l_tmpa_str \q_no_value
+ { \seq_set_eq:NN #1 \c_empty_seq }
+ { \seq_set_from_clist:NN #1 \l_tmpa_str }
+% \end{macrocode}
+% Since any given font family might have only a restricted number of figure
+% versions (maybe even only proportional ones), we add the well-known suffixes
+% |TLF|, |TOsF|, |LF| and |OsF| to the end of the seq.
+% \begin{macrocode}
+ \seq_if_in:NVF #1 \c_@@_tlf_str { \seq_put_right:NV #1 \c_@@_tlf_str }
+ \seq_if_in:NVF #1 \c_@@_tosf_str { \seq_put_right:NV #1 \c_@@_tosf_str }
+ \seq_if_in:NVF #1 \c_@@_lf_str { \seq_put_right:NV #1 \c_@@_lf_str }
+ \seq_if_in:NVF #1 \c_@@_osf_str { \seq_put_right:NV #1 \c_@@_osf_str }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_encode_suffix:N}
+% Determines the possible font family suffixes corresponding to the current
+% figure style/alignment and places the result in the given
+% \meta{seq variable} |#1|.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_encode_suffix:N
+ {
+ \str_if_eq:NNTF \l_@@_fontfigurealignment_str \c_@@_tabular_str
+ { \@@_encode_suffix_tabular:N #1 }
+ { \@@_encode_suffix_proportional:N #1 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_encode_suffix_alt:N}
+% Determines the alternate one-letter suffix for the current
+% figure style and places the result in the given \meta{string variable}
+% |#1|. Note that the suffix only depends on the current figure style
+% and not on the current figure alignment.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_encode_suffix_alt:N
+ {
+ \str_if_eq:NNTF \l_@@_fontfigurestyle_str \c_@@_text_str
+ { \str_set:Nn #1 {j} }
+ { \str_set:Nn #1 {x} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_fontfamily:}
+% Sets the font family accoding to the current figure style, figure alignment
+% and base family.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_set_fontfamily:
+ {
+ \bool_set_false:N \l_tmpa_bool
+ \@@_encode_suffix:N \l_tmpa_seq
+ \seq_map_inline:Nn \l_tmpa_seq
+ {
+ \@@_if_family_exists:nTF { \l_@@_fontbasefamily_str-##1 }
+ {
+ \fontfamily { \l_@@_fontbasefamily_str-##1 }
+ \seq_map_break:n { \bool_set_true:N \l_tmpa_bool }
+ }
+ }
+% \end{macrocode}
+% If no suffix could be applied, try the alternate scheme.
+% \begin{macrocode}
+ \bool_if:NF \l_tmpa_bool
+ {
+ \@@_encode_suffix_alt:N \l_tmpa_str
+ \@@_if_family_exists:nTF { \l_@@_fontbasefamily_str\l_tmpa_str }
+ { \fontfamily { \l_@@_fontbasefamily_str\l_tmpa_str } }
+ { \fontfamily \l_@@_fontbasefamily_str }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_mathversion:}
+% Sets the math version according to the current math weight and figure
+% alignment.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_set_mathversion:
+ {
+ \str_clear:N \l_tmpa_str
+ \str_if_eq:NNT \l_@@_mathweight_str \c_@@_bold_str
+ { \str_put_right:Nn \l_tmpa_str { bold } }
+ \str_if_eq:NNT \l_@@_mathalign_str \c_@@_tabular_str
+ { \str_put_right:Nn \l_tmpa_str { tabular } }
+ \str_if_empty:NTF \l_tmpa_str
+ { \mathversion { normal } }
+ { \mathversion { \l_tmpa_str } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Decoding}
+%
+% \begin{macro}{\@@_decode_suffix:n,\@@_decode_suffix:V}
+% Takes a font family suffix like |TOsF| and sets the current font
+% figure style and figure alignment accordingly. Iterates through all
+% suffixes corresponding to the proportional version of a figure style
+% before it iterates through all suffixes corresponding to the tabular
+% versions until the given suffix is found. Does not alter the current
+% figure alignment if a figure style has no tabular version or the suffix
+% is ambiguous.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_decode_suffix:n
+ {
+ \str_set:Nn \l_tmpa_str {#1}
+ \bool_set_false:N \l_tmpa_bool
+ \prop_map_inline:Nn \g_@@_figurestyles_proportional_prop
+ {
+ \seq_set_from_clist:Nn \l_tmpa_seq {##2}
+ \seq_if_in:NVT \l_tmpa_seq \l_tmpa_str
+ {
+ \str_set:Nn \l_@@_fontfigurestyle_str {##1}
+ \prop_get:NnNT \g_@@_figurestyles_tabular_prop {##1} \l_tmpb_str
+ {
+ \seq_set_from_clist:NN \l_tmpa_seq \l_tmpb_str
+ \seq_if_in:NVF \l_tmpa_seq \l_tmpa_str
+ {
+ \str_set_eq:NN \l_@@_fontfigurealignment_str
+ \c_@@_proportional_str
+ }
+ }
+ \prop_map_break:n { \bool_set_true:N \l_tmpa_bool }
+ }
+ }
+ \bool_if:NF \l_tmpa_bool
+ {
+ \prop_map_inline:Nn \g_@@_figurestyles_tabular_prop
+ {
+ \seq_set_from_clist:Nn \l_tmpa_seq {##2}
+ \seq_if_in:NVT \l_tmpa_seq \l_tmpa_str
+ {
+ \str_set:Nn \l_@@_fontfigurestyle_str {##1}
+ \str_set_eq:NN \l_@@_fontfigurealignment_str
+ \c_@@_tabular_str
+ \prop_map_break:
+ }
+ }
+ }
+ }
+\cs_generate_variant:Nn \@@_decode_suffix:n { V }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_decode_fontfamily_alt:n,
+% \@@_decode_fontfamily_alt:V,
+% \@@_decode_fontfamily_alt_aux:w}
+% Tries to decode the given font family name using the \emph{alternate}
+% four-letter scheme where the last letter is either |x| for lining or
+% |j| for text and sets the font base family and figure style accordingly.
+% Note that the current figure alignment is not altered by this command.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_decode_fontfamily_alt:n
+ {
+ \str_set:Nn \l_@@_fontbasefamily_str {#1}
+ \@@_decode_fontfamily_alt_aux:w #1 \q_stop
+ }
+\cs_generate_variant:Nn \@@_decode_fontfamily_alt:n { V }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_decode_fontfamily_alt_aux:w #1#2#3#4 \q_stop
+ {
+ \str_if_eq:nnT {#4} {x}
+ {
+ \str_set:Nn \l_@@_fontbasefamily_str { #1#2#3 }
+ \str_set_eq:NN \l_@@_fontfigurestyle_str \c_@@_lining_str
+ }
+ \str_if_eq:nnT {#4} {j}
+ {
+ \str_set:Nn \l_@@_fontbasefamily_str { #1#2#3 }
+ \str_set_eq:NN \l_@@_fontfigurestyle_str \c_@@_text_str
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_get_fontfamily:}
+% Evaluates the current font family and infers the current figure
+% style, figure alignment and base family.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_get_fontfamily:
+ {
+ \@@_split_family:VNNTF \f at family \l_@@_fontbasefamily_str \l_tmpa_str
+ { \@@_decode_suffix:V \l_tmpa_str }
+ { \@@_decode_fontfamily_alt:V \f at family }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_get_mathversion:}
+% Evaluates the current math version and infers the current math weight
+% and figure alignment.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_get_mathversion:
+ {
+ \str_if_in:NnTF \math at version { bold }
+ { \str_set_eq:NN \l_@@_mathweight_str \c_@@_bold_str }
+ { \str_set_eq:NN \l_@@_mathweight_str \c_@@_normal_str }
+ \str_if_in:NnTF \math at version { tabular }
+ { \str_set_eq:NN \l_@@_mathalign_str \c_@@_tabular_str }
+ { \str_set_eq:NN \l_@@_mathalign_str \c_@@_proportional_str }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{User functions}
+%
+% \begin{macro}{\fontfigurestyle,\@@_fontfigurestyle:n,\@@_fontfigurestyle:e}
+% Sets the font figure style.
+% \begin{macrocode}
+\ProvideDocumentCommand \fontfigurestyle {m}
+ { \@@_fontfigurestyle:e {#1} }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_fontfigurestyle:n
+ {
+ \bool_if:nTF
+ {
+ \prop_if_in_p:Nn \g_@@_figurestyles_proportional_prop {#1} ||
+ \prop_if_in_p:Nn \g_@@_figurestyles_tabular_prop {#1}
+ }
+ {
+ \@@_get_fontfamily:
+ \str_set:Nn \l_@@_fontfigurestyle_str {#1}
+ \@@_set_fontfamily:
+ }
+ {
+ \@@_warning:nn { unknown-figurestyle } {#1}
+ }
+ }
+\cs_generate_variant:Nn \@@_fontfigurestyle:n { e }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fontfigurealignment,
+% \@@_fontfigurealignment:n,
+% \@@_fontfigurealignment:e}
+% Sets the font figure alignment.
+% \begin{macrocode}
+\ProvideDocumentCommand \fontfigurealignment {m}
+ { \@@_fontfigurealignment:e {#1} }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_fontfigurealignment:n
+ {
+ \bool_if:nTF
+ {
+ \str_if_eq_p:Vn \c_@@_proportional_str {#1} ||
+ \str_if_eq_p:Vn \c_@@_tabular_str {#1}
+ }
+ {
+ \@@_get_fontfamily:
+ \str_set:Nn \l_@@_fontfigurealignment_str {#1}
+ \@@_set_fontfamily:
+ }
+ {
+ \@@_warning:nn { unknown-figurealignment } {#1}
+ }
+ }
+\cs_generate_variant:Nn \@@_fontfigurealignment:n { e }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fontbasefamily}
+% Sets the base font family.
+% \begin{macrocode}
+\ProvideDocumentCommand \fontbasefamily {m}
+ {
+ \@@_get_fontfamily:
+ \str_set:Ne \l_@@_fontbasefamily_str {#1}
+ \@@_set_fontfamily:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mathweight,\@@_mathweight:n,\@@_mathweight:e}
+% Sets the math weight.
+% \begin{macrocode}
+\ProvideDocumentCommand \mathweight {m}
+ { \@@_mathweight:e {#1} }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_mathweight:n
+ {
+ \bool_if:nTF
+ {
+ \str_if_eq_p:Vn \c_@@_normal_str {#1} ||
+ \str_if_eq_p:Vn \c_@@_bold_str {#1}
+ }
+ {
+ \@@_get_mathversion:
+ \str_set:Nn \l_@@_mathweight_str {#1}
+ \@@_set_mathversion:
+ }
+ {
+ \@@_warning:nn { unknown-mathweight } {#1}
+ }
+ }
+\cs_generate_variant:Nn \@@_mathweight:n { e }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mathfigurealignment,
+% \@@_mathfigurealignment:n,
+% \@@_mathfigurealignment:e}
+% Sets the math figure alignment.
+% \begin{macrocode}
+\ProvideDocumentCommand \mathfigurealignment {m}
+ { \@@_mathfigurealignment:e {#1} }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_mathfigurealignment:n
+ {
+ \bool_if:nTF
+ {
+ \str_if_eq_p:Vn \c_@@_proportional_str {#1} ||
+ \str_if_eq_p:Vn \c_@@_tabular_str {#1}
+ }
+ {
+ \@@_get_mathversion:
+ \str_set:Nn \l_@@_mathalign_str {#1}
+ \@@_set_mathversion:
+ }
+ {
+ \@@_warning:nn { unknown-mathfigurealignment } {#1}
+ }
+ }
+\cs_generate_variant:Nn \@@_mathfigurealignment:n { e }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\txfigures,\lnfigures}
+% Higher-level commands for choosing the font figure style.
+% \begin{macrocode}
+\ProvideDocumentCommand \txfigures {}
+ {
+ \@nomath \txfigures
+ \bool_if:NTF \g_@@_fontspec_bool
+ { \addfontfeature{ Numbers = OldStyle } }
+ {
+ \fontfigurestyle { \c_@@_text_str }
+ \selectfont
+ }
+ }
+\ProvideDocumentCommand \lnfigures {}
+ {
+ \@nomath \lnfigures
+ \bool_if:NTF \g_@@_fontspec_bool
+ { \addfontfeature{ Numbers = Lining } }
+ {
+ \fontfigurestyle { \c_@@_lining_str }
+ \selectfont
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\prfigures,\tbfigures}
+% Higher-level commands for choosing the font figure alignment.
+% \begin{macrocode}
+\ProvideDocumentCommand \prfigures {}
+ {
+ \@nomath\prfigures
+ \bool_if:NTF \g_@@_fontspec_bool
+ { \addfontfeature{ Numbers = Proportional } }
+ {
+ \fontfigurealignment { \c_@@_proportional_str }
+ \selectfont
+ }
+ }
+\ProvideDocumentCommand \tbfigures {}
+ {
+ \@nomath\tbfigures
+ \bool_if:NTF \g_@@_fontspec_bool
+ { \addfontfeature{ Numbers = Monospaced } }
+ {
+ \fontfigurealignment { \c_@@_tabular_str }
+ \selectfont
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\boldmath,\unboldmath}
+% Reimplementation of \cs{boldmath} and \cs{unboldmath} to only change the
+% math weight.
+% \begin{macrocode}
+\RenewDocumentCommand \boldmath {}
+ {
+ \@nomath \boldmath
+ \mathweight { \c_@@_bold_str }
+ }
+\RenewDocumentCommand \unboldmath {}
+ {
+ \@nomath \unboldmath
+ \mathweight { \c_@@_normal_str }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tabularmath,\proportionalmath}
+% Higher-level commands to change the math figure alignment.
+% \begin{macrocode}
+\ProvideDocumentCommand \proportionalmath {}
+ {
+ \@nomath \proportionalmath
+ \mathfigurealignment { \c_@@_proportional_str }
+ }
+\ProvideDocumentCommand \tabularmath {}
+ {
+ \@nomath \tabularmath
+ \mathfigurealignment { \c_@@_tabular_str }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textfigures,\liningfigures,
+% \tabularfigures,\proportionalfigures}
+% Text font commands which apply a certain figure style or figure alignment
+% to their argument.
+% \begin{macrocode}
+\DeclareTextFontCommand {\textfigures} {\txfigures}
+\DeclareTextFontCommand {\liningfigures }{\lnfigures}
+\DeclareTextFontCommand {\tabularfigures} {\tbfigures\tabularmath}
+\DeclareTextFontCommand {\proportionalfigures} {\prfigures\proportionalmath}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\figureversion}
+% Convenience macro for setting font figure style and alignment simultaneously.
+% \begin{macrocode}
+\ProvideDocumentCommand \figureversion {m}
+ {
+ \clist_set:Ne \l_tmpa_clist {#1}
+ \clist_map_inline:Nn \l_tmpa_clist
+ {
+ \prop_get:NnNTF \g_@@_figureversions_prop {##1} \l_tmpa_tl
+ { \tl_use:N \l_tmpa_tl }
+ { \@@_warning:nn { unknown-figureversion } {##1} }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Public code-level functions}
+%
+% \begin{macro}{\figureversions_new_figurestyle:nnn,
+% \figureversions_new_figurestyle:Vnn,
+% \@@_new_figurestyle_proportional:nn,
+% \@@_new_figurestyle_tabular:nn}
+% Defines the figure style |#1| with the corresponding font family suffixes
+% listed in the \meta{comma lists} |#2| for proportional figures and |#3| for
+% tabular figures. Does nothing if |#1| is already defined as a figure style.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new_figurestyle_proportional:nn
+ {
+ \prop_gput_if_not_in:Nne \g_@@_figurestyles_proportional_prop {#1}
+ { \tl_to_str:n {#2} }
+ }
+\cs_new_protected:Nn \@@_new_figurestyle_tabular:nn
+ {
+ \prop_gput_if_not_in:Nne \g_@@_figurestyles_tabular_prop {#1}
+ { \tl_to_str:n {#2} }
+ }
+\cs_new_protected:Nn \figureversions_new_figurestyle:nnn
+ {
+ \@@_new_figurestyle_proportional:nn {#1} {#2}
+ \@@_new_figurestyle_tabular:nn {#1} {#3}
+ }
+\cs_generate_variant:Nn \figureversions_new_figurestyle:nnn { V }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\figureversions_new_figureversion:nn}
+% Defines the figure version |#1| and assigns the code |#2| to it.
+% Does nothing if |#1| is already defined as a figure version.
+% \begin{macrocode}
+\cs_new_protected:Nn \figureversions_new_figureversion:nn
+ { \prop_gput_if_not_in:Nnn \g_@@_figureversions_prop {#1} {#2} }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Initialization}
+%
+% Finally, we declare the pre-defined figure styles `text' and `lining' and the
+% initial keys for the \cs{figureversion} command.
+% \begin{macrocode}
+\figureversions_new_figurestyle:Vnn \c_@@_text_str { OsF } { TOsF }
+\figureversions_new_figurestyle:Vnn \c_@@_lining_str { LF } { TLF }
+% \end{macrocode}
+% \begin{macrocode}
+\figureversions_new_figureversion:nn { text } { \txfigures }
+\figureversions_new_figureversion:nn { osf } { \txfigures }
+\figureversions_new_figureversion:nn { lining } { \lnfigures }
+\figureversions_new_figureversion:nn { lf } { \lnfigures }
+\figureversions_new_figureversion:nn { tabular }
+ { \tbfigures \tabularmath }
+\figureversions_new_figureversion:nn { tab }
+ { \tbfigures \tabularmath }
+\figureversions_new_figureversion:nn { proportional }
+ { \prfigures \proportionalmath }
+\figureversions_new_figureversion:nn { prop }
+ { \prfigures \proportionalmath }
+% \end{macrocode}
+%
+% \subsection{Hooks}
+%
+% At the start of the document, we check whether math versions `tabular' and
+% `boldtabular' have been defined. If not, we provide a default by copying the
+% state of `normal' respectively `bold'.
+% \begin{macrocode}
+\AtBeginDocument
+ {
+ \@@_copy_mathversion_if_undefined:nn { tabular } { normal }
+ \@@_copy_mathversion_if_undefined:nn { boldtabular } { bold }
+% \end{macrocode}
+% Test for \pkg{fontspec}.
+% \begin{macrocode}
+ \IfPackageLoadedT { fontspec }
+ { \bool_gset_true:N \g_@@_fontspec_bool }
+% \end{macrocode}
+% Finally, we redefine some commands for use in PDF strings.
+% \begin{macrocode}
+ \IfPackageLoadedT { hyperref }
+ {
+ \pdfstringdefDisableCommands
+ {
+ \cs_set_eq:NN \figureversion \use_none:n
+ \cs_set_eq:NN \fontfigurestyle \use_none:n
+ \cs_set_eq:NN \fontfigurealignment \use_none:n
+ \cs_set_eq:NN \fontbasefamily \use_none:n
+ \cs_set_eq:NN \mathweight \use_none:n
+ \cs_set_eq:NN \mathfigurealignment \use_none:n
+ \cs_set_eq:NN \txfigures \relax
+ \cs_set_eq:NN \lnfigures \relax
+ \cs_set_eq:NN \prfigures \relax
+ \cs_set_eq:NN \tbfigures \relax
+ \cs_set_eq:NN \proportionalmath \relax
+ \cs_set_eq:NN \tabularmath \relax
+ \cs_set_eq:NN \textfigures \use:n
+ \cs_set_eq:NN \liningfigures \use:n
+ \cs_set_eq:NN \tabularfigures \use:n
+ \cs_set_eq:NN \proportionalfigures \use:n
+ }
+ }
+ }
+%</package>
+% \end{macrocode}
+%
+% \RemoveFromHook{sffamily}
+% \end{implementation}
+%
+% \begin{thebibliography}{9}
+%
+% \bibitem{nfss}
+% \LaTeX\ Project Team:
+% \LaTeXe\ font selection.
+% \url{https://www.latex-project.org/help/documentation/fntguide.pdf}
+%
+% \bibitem{ltnews31}
+% \LaTeX\ News. Issue 31, February 2020.
+% \url{https://www.latex-project.org/news/latex2e-news/ltnews31.pdf}
+%
+% \end{thebibliography}
+%
+% \Finale
Property changes on: trunk/Master/texmf-dist/source/latex/figureversions/figureversions.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/figureversions/figureversions.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/figureversions/figureversions.ins (rev 0)
+++ trunk/Master/texmf-dist/source/latex/figureversions/figureversions.ins 2025-04-06 21:13:01 UTC (rev 74863)
@@ -0,0 +1,53 @@
+%
+% Copyright (c) 2025 by Michael Ummels <michael.ummels at rwth-aachen.de>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Michael Ummels.
+%
+% This work consists of the files figureversions.dtx, figureversions.ins and
+% the derived file figureversions.sty.
+%
+
+\input docstrip
+
+\preamble
+
+Copyright (c) 2025 by Michael Ummels <michael at ummels.de>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Michael Ummels.
+
+This work consists of the files figureversions.dtx, figureversions.ins and
+the derived file figureversions.sty.
+
+\endpreamble
+
+\postamble
+\endpostamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{
+ \file{figureversions.sty}{\from{figureversions.dtx}{package}}
+}
+
+\endbatchfile
Added: trunk/Master/texmf-dist/tex/latex/figureversions/figureversions.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/figureversions/figureversions.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/figureversions/figureversions.sty 2025-04-06 21:13:01 UTC (rev 74863)
@@ -0,0 +1,458 @@
+%%
+%% This is file `figureversions.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% figureversions.dtx (with options: `package')
+%%
+%% Copyright (c) 2025 by Michael Ummels <michael at ummels.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Michael Ummels.
+%%
+%% This work consists of the files figureversions.dtx, figureversions.ins and
+%% the derived file figureversions.sty.
+%%
+\ProvidesExplPackage {figureversions} {2025-04-05} {1.0} {Figure versions}
+\str_const:Nn \c__figureversions_text_str {text}
+\str_const:Nn \c__figureversions_lining_str {lining}
+\str_const:Nn \c__figureversions_proportional_str {proportional}
+\str_const:Nn \c__figureversions_tabular_str {tabular}
+\str_const:Nn \c__figureversions_normal_str {normal}
+\str_const:Nn \c__figureversions_bold_str {bold}
+\str_const:Nn \c__figureversions_lf_str {LF}
+\str_const:Nn \c__figureversions_osf_str {OsF}
+\str_const:Nn \c__figureversions_tlf_str {TLF}
+\str_const:Nn \c__figureversions_tosf_str {TOsF}
+\bool_new:N \g__figureversions_fontspec_bool
+\str_new:N \l__figureversions_fontbasefamily_str
+\str_new:N \l__figureversions_fontfigurestyle_str
+\str_new:N \l__figureversions_fontfigurealignment_str
+\str_set:Nn \l__figureversions_fontbasefamily_str {cmr}
+\str_set_eq:NN \l__figureversions_fontfigurestyle_str \c__figureversions_lining_str
+\str_set_eq:NN \l__figureversions_fontfigurealignment_str \c__figureversions_proportional_str
+\prop_new:N \g__figureversions_figurestyles_proportional_prop
+\prop_new:N \g__figureversions_figurestyles_tabular_prop
+\prop_new:N \g__figureversions_figureversions_prop
+\str_new:N \l__figureversions_mathweight_str
+\str_new:N \l__figureversions_mathalign_str
+\msg_new:nnn { figureversions } { unknown-figurestyle }
+ { Ignoring~unknown~figure~style~`#1'~\msg_line_context: }
+\msg_new:nnn { figureversions } { unknown-figurealignment }
+ { Ignoring~unknown~figure~alignment~`#1'~\msg_line_context: }
+\msg_new:nnn { figureversions } { unknown-mathweight }
+ { Ignoring~unknown~math~weight~`#1'~\msg_line_context: }
+\msg_new:nnn { figureversions } { unknown-mathfigurealignment }
+ { Ignoring~unknown~math~figure~alignment~`#1'~\msg_line_context: }
+\msg_new:nnn { figureversions } { unknown-figureversion }
+ { Ignoring~unknown~figure~version~`#1'~\msg_line_context: }
+\cs_new:Nn \__figureversions_warning:nn
+ { \msg_warning:nnn {figureversions} {#1} {#2} }
+\prg_new_protected_conditional:Nnn \__figureversions_if_family_exists:n { TF }
+ {
+ \group_begin:
+ \fontfamily {#1}
+ \try at load@fontshape
+ \cs_if_eq:cNTF \curr at fontshape \relax
+ { \group_insert_after:N \prg_return_false: }
+ { \group_insert_after:N \prg_return_true: }
+ \group_end:
+ }
+\prg_new_protected_conditional:Nnn \__figureversions_split_family:nNN { TF }
+ { \__figureversions_split_family_aux:w #1 - - \q_stop #2 #3 }
+\prg_generate_conditional_variant:Nnn \__figureversions_split_family:nNN { V } { TF }
+\cs_new_protected:Npn \__figureversions_split_family_aux:w #1-#2-#3 \q_stop #4 #5
+ {
+ \tl_if_empty:nTF {#2}
+ { \prg_return_false: }
+ {
+ \str_set:Nn #4 {#1}
+ \str_set:Nn #5 {#2}
+ \prg_return_true:
+ }
+ }
+\cs_new_protected:Nn \__figureversions_copy_mathversion_if_undefined:nn
+ {
+ \cs_if_exist:cF {mv@#1}
+ {
+ \DeclareMathVersion {#1}
+ \cs_set_eq:cc {mv@#1} {mv@#2}
+ }
+ }
+\cs_new_protected:Nn \__figureversions_encode_suffix_proportional:N
+ {
+ \prop_get:NVNF \g__figureversions_figurestyles_proportional_prop
+ \l__figureversions_fontfigurestyle_str \l_tmpa_str
+ {
+ \prop_get:NVNF \g__figureversions_figurestyles_tabular_prop
+ \l__figureversions_fontfigurestyle_str \l_tmpa_str
+ }
+ \tl_if_eq:NNTF \l_tmpa_str \q_no_value
+ { \seq_set_eq:NN #1 \c_empty_seq }
+ { \seq_set_from_clist:NN #1 \l_tmpa_str }
+ \seq_if_in:NVF #1 \c__figureversions_lf_str { \seq_put_right:NV #1 \c__figureversions_lf_str }
+ \seq_if_in:NVF #1 \c__figureversions_osf_str { \seq_put_right:NV #1 \c__figureversions_osf_str }
+ \seq_if_in:NVF #1 \c__figureversions_tlf_str { \seq_put_right:NV #1 \c__figureversions_tlf_str }
+ \seq_if_in:NVF #1 \c__figureversions_tosf_str { \seq_put_right:NV #1 \c__figureversions_tosf_str }
+ }
+\cs_new_protected:Nn \__figureversions_encode_suffix_tabular:N
+ {
+ \prop_get:NVNF \g__figureversions_figurestyles_tabular_prop
+ \l__figureversions_fontfigurestyle_str \l_tmpa_str
+ {
+ \prop_get:NVN \g__figureversions_figurestyles_proportional_prop
+ \l__figureversions_fontfigurestyle_str \l_tmpa_str
+ }
+ \tl_if_eq:NNTF \l_tmpa_str \q_no_value
+ { \seq_set_eq:NN #1 \c_empty_seq }
+ { \seq_set_from_clist:NN #1 \l_tmpa_str }
+ \seq_if_in:NVF #1 \c__figureversions_tlf_str { \seq_put_right:NV #1 \c__figureversions_tlf_str }
+ \seq_if_in:NVF #1 \c__figureversions_tosf_str { \seq_put_right:NV #1 \c__figureversions_tosf_str }
+ \seq_if_in:NVF #1 \c__figureversions_lf_str { \seq_put_right:NV #1 \c__figureversions_lf_str }
+ \seq_if_in:NVF #1 \c__figureversions_osf_str { \seq_put_right:NV #1 \c__figureversions_osf_str }
+ }
+\cs_new_protected:Nn \__figureversions_encode_suffix:N
+ {
+ \str_if_eq:NNTF \l__figureversions_fontfigurealignment_str \c__figureversions_tabular_str
+ { \__figureversions_encode_suffix_tabular:N #1 }
+ { \__figureversions_encode_suffix_proportional:N #1 }
+ }
+\cs_new_protected:Nn \__figureversions_encode_suffix_alt:N
+ {
+ \str_if_eq:NNTF \l__figureversions_fontfigurestyle_str \c__figureversions_text_str
+ { \str_set:Nn #1 {j} }
+ { \str_set:Nn #1 {x} }
+ }
+\cs_new_protected:Nn \__figureversions_set_fontfamily:
+ {
+ \bool_set_false:N \l_tmpa_bool
+ \__figureversions_encode_suffix:N \l_tmpa_seq
+ \seq_map_inline:Nn \l_tmpa_seq
+ {
+ \__figureversions_if_family_exists:nTF { \l__figureversions_fontbasefamily_str-##1 }
+ {
+ \fontfamily { \l__figureversions_fontbasefamily_str-##1 }
+ \seq_map_break:n { \bool_set_true:N \l_tmpa_bool }
+ }
+ }
+ \bool_if:NF \l_tmpa_bool
+ {
+ \__figureversions_encode_suffix_alt:N \l_tmpa_str
+ \__figureversions_if_family_exists:nTF { \l__figureversions_fontbasefamily_str\l_tmpa_str }
+ { \fontfamily { \l__figureversions_fontbasefamily_str\l_tmpa_str } }
+ { \fontfamily \l__figureversions_fontbasefamily_str }
+ }
+ }
+\cs_new_protected:Nn \__figureversions_set_mathversion:
+ {
+ \str_clear:N \l_tmpa_str
+ \str_if_eq:NNT \l__figureversions_mathweight_str \c__figureversions_bold_str
+ { \str_put_right:Nn \l_tmpa_str { bold } }
+ \str_if_eq:NNT \l__figureversions_mathalign_str \c__figureversions_tabular_str
+ { \str_put_right:Nn \l_tmpa_str { tabular } }
+ \str_if_empty:NTF \l_tmpa_str
+ { \mathversion { normal } }
+ { \mathversion { \l_tmpa_str } }
+ }
+\cs_new_protected:Nn \__figureversions_decode_suffix:n
+ {
+ \str_set:Nn \l_tmpa_str {#1}
+ \bool_set_false:N \l_tmpa_bool
+ \prop_map_inline:Nn \g__figureversions_figurestyles_proportional_prop
+ {
+ \seq_set_from_clist:Nn \l_tmpa_seq {##2}
+ \seq_if_in:NVT \l_tmpa_seq \l_tmpa_str
+ {
+ \str_set:Nn \l__figureversions_fontfigurestyle_str {##1}
+ \prop_get:NnNT \g__figureversions_figurestyles_tabular_prop {##1} \l_tmpb_str
+ {
+ \seq_set_from_clist:NN \l_tmpa_seq \l_tmpb_str
+ \seq_if_in:NVF \l_tmpa_seq \l_tmpa_str
+ {
+ \str_set_eq:NN \l__figureversions_fontfigurealignment_str
+ \c__figureversions_proportional_str
+ }
+ }
+ \prop_map_break:n { \bool_set_true:N \l_tmpa_bool }
+ }
+ }
+ \bool_if:NF \l_tmpa_bool
+ {
+ \prop_map_inline:Nn \g__figureversions_figurestyles_tabular_prop
+ {
+ \seq_set_from_clist:Nn \l_tmpa_seq {##2}
+ \seq_if_in:NVT \l_tmpa_seq \l_tmpa_str
+ {
+ \str_set:Nn \l__figureversions_fontfigurestyle_str {##1}
+ \str_set_eq:NN \l__figureversions_fontfigurealignment_str
+ \c__figureversions_tabular_str
+ \prop_map_break:
+ }
+ }
+ }
+ }
+\cs_generate_variant:Nn \__figureversions_decode_suffix:n { V }
+\cs_new_protected:Nn \__figureversions_decode_fontfamily_alt:n
+ {
+ \str_set:Nn \l__figureversions_fontbasefamily_str {#1}
+ \__figureversions_decode_fontfamily_alt_aux:w #1 \q_stop
+ }
+\cs_generate_variant:Nn \__figureversions_decode_fontfamily_alt:n { V }
+\cs_new_protected:Npn \__figureversions_decode_fontfamily_alt_aux:w #1#2#3#4 \q_stop
+ {
+ \str_if_eq:nnT {#4} {x}
+ {
+ \str_set:Nn \l__figureversions_fontbasefamily_str { #1#2#3 }
+ \str_set_eq:NN \l__figureversions_fontfigurestyle_str \c__figureversions_lining_str
+ }
+ \str_if_eq:nnT {#4} {j}
+ {
+ \str_set:Nn \l__figureversions_fontbasefamily_str { #1#2#3 }
+ \str_set_eq:NN \l__figureversions_fontfigurestyle_str \c__figureversions_text_str
+ }
+ }
+\cs_new_protected:Nn \__figureversions_get_fontfamily:
+ {
+ \__figureversions_split_family:VNNTF \f at family \l__figureversions_fontbasefamily_str \l_tmpa_str
+ { \__figureversions_decode_suffix:V \l_tmpa_str }
+ { \__figureversions_decode_fontfamily_alt:V \f at family }
+ }
+\cs_new_protected:Nn \__figureversions_get_mathversion:
+ {
+ \str_if_in:NnTF \math at version { bold }
+ { \str_set_eq:NN \l__figureversions_mathweight_str \c__figureversions_bold_str }
+ { \str_set_eq:NN \l__figureversions_mathweight_str \c__figureversions_normal_str }
+ \str_if_in:NnTF \math at version { tabular }
+ { \str_set_eq:NN \l__figureversions_mathalign_str \c__figureversions_tabular_str }
+ { \str_set_eq:NN \l__figureversions_mathalign_str \c__figureversions_proportional_str }
+ }
+\ProvideDocumentCommand \fontfigurestyle {m}
+ { \__figureversions_fontfigurestyle:e {#1} }
+\cs_new_protected:Nn \__figureversions_fontfigurestyle:n
+ {
+ \bool_if:nTF
+ {
+ \prop_if_in_p:Nn \g__figureversions_figurestyles_proportional_prop {#1} ||
+ \prop_if_in_p:Nn \g__figureversions_figurestyles_tabular_prop {#1}
+ }
+ {
+ \__figureversions_get_fontfamily:
+ \str_set:Nn \l__figureversions_fontfigurestyle_str {#1}
+ \__figureversions_set_fontfamily:
+ }
+ {
+ \__figureversions_warning:nn { unknown-figurestyle } {#1}
+ }
+ }
+\cs_generate_variant:Nn \__figureversions_fontfigurestyle:n { e }
+\ProvideDocumentCommand \fontfigurealignment {m}
+ { \__figureversions_fontfigurealignment:e {#1} }
+\cs_new_protected:Nn \__figureversions_fontfigurealignment:n
+ {
+ \bool_if:nTF
+ {
+ \str_if_eq_p:Vn \c__figureversions_proportional_str {#1} ||
+ \str_if_eq_p:Vn \c__figureversions_tabular_str {#1}
+ }
+ {
+ \__figureversions_get_fontfamily:
+ \str_set:Nn \l__figureversions_fontfigurealignment_str {#1}
+ \__figureversions_set_fontfamily:
+ }
+ {
+ \__figureversions_warning:nn { unknown-figurealignment } {#1}
+ }
+ }
+\cs_generate_variant:Nn \__figureversions_fontfigurealignment:n { e }
+\ProvideDocumentCommand \fontbasefamily {m}
+ {
+ \__figureversions_get_fontfamily:
+ \str_set:Ne \l__figureversions_fontbasefamily_str {#1}
+ \__figureversions_set_fontfamily:
+ }
+\ProvideDocumentCommand \mathweight {m}
+ { \__figureversions_mathweight:e {#1} }
+\cs_new_protected:Nn \__figureversions_mathweight:n
+ {
+ \bool_if:nTF
+ {
+ \str_if_eq_p:Vn \c__figureversions_normal_str {#1} ||
+ \str_if_eq_p:Vn \c__figureversions_bold_str {#1}
+ }
+ {
+ \__figureversions_get_mathversion:
+ \str_set:Nn \l__figureversions_mathweight_str {#1}
+ \__figureversions_set_mathversion:
+ }
+ {
+ \__figureversions_warning:nn { unknown-mathweight } {#1}
+ }
+ }
+\cs_generate_variant:Nn \__figureversions_mathweight:n { e }
+\ProvideDocumentCommand \mathfigurealignment {m}
+ { \__figureversions_mathfigurealignment:e {#1} }
+\cs_new_protected:Nn \__figureversions_mathfigurealignment:n
+ {
+ \bool_if:nTF
+ {
+ \str_if_eq_p:Vn \c__figureversions_proportional_str {#1} ||
+ \str_if_eq_p:Vn \c__figureversions_tabular_str {#1}
+ }
+ {
+ \__figureversions_get_mathversion:
+ \str_set:Nn \l__figureversions_mathalign_str {#1}
+ \__figureversions_set_mathversion:
+ }
+ {
+ \__figureversions_warning:nn { unknown-mathfigurealignment } {#1}
+ }
+ }
+\cs_generate_variant:Nn \__figureversions_mathfigurealignment:n { e }
+\ProvideDocumentCommand \txfigures {}
+ {
+ \@nomath \txfigures
+ \bool_if:NTF \g__figureversions_fontspec_bool
+ { \addfontfeature{ Numbers = OldStyle } }
+ {
+ \fontfigurestyle { \c__figureversions_text_str }
+ \selectfont
+ }
+ }
+\ProvideDocumentCommand \lnfigures {}
+ {
+ \@nomath \lnfigures
+ \bool_if:NTF \g__figureversions_fontspec_bool
+ { \addfontfeature{ Numbers = Lining } }
+ {
+ \fontfigurestyle { \c__figureversions_lining_str }
+ \selectfont
+ }
+ }
+\ProvideDocumentCommand \prfigures {}
+ {
+ \@nomath\prfigures
+ \bool_if:NTF \g__figureversions_fontspec_bool
+ { \addfontfeature{ Numbers = Proportional } }
+ {
+ \fontfigurealignment { \c__figureversions_proportional_str }
+ \selectfont
+ }
+ }
+\ProvideDocumentCommand \tbfigures {}
+ {
+ \@nomath\tbfigures
+ \bool_if:NTF \g__figureversions_fontspec_bool
+ { \addfontfeature{ Numbers = Monospaced } }
+ {
+ \fontfigurealignment { \c__figureversions_tabular_str }
+ \selectfont
+ }
+ }
+\RenewDocumentCommand \boldmath {}
+ {
+ \@nomath \boldmath
+ \mathweight { \c__figureversions_bold_str }
+ }
+\RenewDocumentCommand \unboldmath {}
+ {
+ \@nomath \unboldmath
+ \mathweight { \c__figureversions_normal_str }
+ }
+\ProvideDocumentCommand \proportionalmath {}
+ {
+ \@nomath \proportionalmath
+ \mathfigurealignment { \c__figureversions_proportional_str }
+ }
+\ProvideDocumentCommand \tabularmath {}
+ {
+ \@nomath \tabularmath
+ \mathfigurealignment { \c__figureversions_tabular_str }
+ }
+\DeclareTextFontCommand {\textfigures} {\txfigures}
+\DeclareTextFontCommand {\liningfigures }{\lnfigures}
+\DeclareTextFontCommand {\tabularfigures} {\tbfigures\tabularmath}
+\DeclareTextFontCommand {\proportionalfigures} {\prfigures\proportionalmath}
+\ProvideDocumentCommand \figureversion {m}
+ {
+ \clist_set:Ne \l_tmpa_clist {#1}
+ \clist_map_inline:Nn \l_tmpa_clist
+ {
+ \prop_get:NnNTF \g__figureversions_figureversions_prop {##1} \l_tmpa_tl
+ { \tl_use:N \l_tmpa_tl }
+ { \__figureversions_warning:nn { unknown-figureversion } {##1} }
+ }
+ }
+\cs_new_protected:Nn \__figureversions_new_figurestyle_proportional:nn
+ {
+ \prop_gput_if_not_in:Nne \g__figureversions_figurestyles_proportional_prop {#1}
+ { \tl_to_str:n {#2} }
+ }
+\cs_new_protected:Nn \__figureversions_new_figurestyle_tabular:nn
+ {
+ \prop_gput_if_not_in:Nne \g__figureversions_figurestyles_tabular_prop {#1}
+ { \tl_to_str:n {#2} }
+ }
+\cs_new_protected:Nn \figureversions_new_figurestyle:nnn
+ {
+ \__figureversions_new_figurestyle_proportional:nn {#1} {#2}
+ \__figureversions_new_figurestyle_tabular:nn {#1} {#3}
+ }
+\cs_generate_variant:Nn \figureversions_new_figurestyle:nnn { V }
+\cs_new_protected:Nn \figureversions_new_figureversion:nn
+ { \prop_gput_if_not_in:Nnn \g__figureversions_figureversions_prop {#1} {#2} }
+\figureversions_new_figurestyle:Vnn \c__figureversions_text_str { OsF } { TOsF }
+\figureversions_new_figurestyle:Vnn \c__figureversions_lining_str { LF } { TLF }
+\figureversions_new_figureversion:nn { text } { \txfigures }
+\figureversions_new_figureversion:nn { osf } { \txfigures }
+\figureversions_new_figureversion:nn { lining } { \lnfigures }
+\figureversions_new_figureversion:nn { lf } { \lnfigures }
+\figureversions_new_figureversion:nn { tabular }
+ { \tbfigures \tabularmath }
+\figureversions_new_figureversion:nn { tab }
+ { \tbfigures \tabularmath }
+\figureversions_new_figureversion:nn { proportional }
+ { \prfigures \proportionalmath }
+\figureversions_new_figureversion:nn { prop }
+ { \prfigures \proportionalmath }
+\AtBeginDocument
+ {
+ \__figureversions_copy_mathversion_if_undefined:nn { tabular } { normal }
+ \__figureversions_copy_mathversion_if_undefined:nn { boldtabular } { bold }
+ \IfPackageLoadedT { fontspec }
+ { \bool_gset_true:N \g__figureversions_fontspec_bool }
+ \IfPackageLoadedT { hyperref }
+ {
+ \pdfstringdefDisableCommands
+ {
+ \cs_set_eq:NN \figureversion \use_none:n
+ \cs_set_eq:NN \fontfigurestyle \use_none:n
+ \cs_set_eq:NN \fontfigurealignment \use_none:n
+ \cs_set_eq:NN \fontbasefamily \use_none:n
+ \cs_set_eq:NN \mathweight \use_none:n
+ \cs_set_eq:NN \mathfigurealignment \use_none:n
+ \cs_set_eq:NN \txfigures \relax
+ \cs_set_eq:NN \lnfigures \relax
+ \cs_set_eq:NN \prfigures \relax
+ \cs_set_eq:NN \tbfigures \relax
+ \cs_set_eq:NN \proportionalmath \relax
+ \cs_set_eq:NN \tabularmath \relax
+ \cs_set_eq:NN \textfigures \use:n
+ \cs_set_eq:NN \liningfigures \use:n
+ \cs_set_eq:NN \tabularfigures \use:n
+ \cs_set_eq:NN \proportionalfigures \use:n
+ }
+ }
+ }
+%%
+%%
+%% End of file `figureversions.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/figureversions/figureversions.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check 2025-04-05 23:49:02 UTC (rev 74862)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check 2025-04-06 21:13:01 UTC (rev 74863)
@@ -345,7 +345,7 @@
feupphdteses fewerfloatpages feyn feynmf feynmp-auto
ffcode ffslides fge fgruler
fifinddo-info fifo-stack
- fig4latex figbas figbib figchild figflow figput figsize
+ fig4latex figbas figbib figchild figflow figput figsize figureversions
filecontents filecontentsdef filedate filehook fileinfo filemod
fillpages fillwith
findhyph fink finstrut fira firamath firamath-otf
Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2025-04-05 23:49:02 UTC (rev 74862)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2025-04-06 21:13:01 UTC (rev 74863)
@@ -540,6 +540,7 @@
depend fgruler
depend fifo-stack
depend figsize
+depend figureversions
depend filecontents
depend filecontentsdef
depend filedate
Added: trunk/Master/tlpkg/tlpsrc/figureversions.tlpsrc
===================================================================
More information about the tex-live-commits
mailing list.