diff options
author | Karl Berry <karl@freefriends.org> | 2024-01-01 20:50:34 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-01-01 20:50:34 +0000 |
commit | 75b739cfeea6b5159a4d97c63dc210fec5ff1ae8 (patch) | |
tree | a130a1ca1f43eba5e14d22ad5511295583aa108c /Master/texmf-dist/tex | |
parent | 4d8ff3b2a5b9ca8f62591a036088152d0e7e6879 (diff) |
freealign (1jan24)
git-svn-id: svn://tug.org/texlive/trunk@69267 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/freealign/freealign.sty | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/freealign/freealign.sty b/Master/texmf-dist/tex/latex/freealign/freealign.sty new file mode 100644 index 00000000000..a00717045c2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/freealign/freealign.sty @@ -0,0 +1,70 @@ +% -*- coding: utf-8 -*- +% ---------------------------------------------------------------------------- +% Author: Jianrui Lyu <tolvjr@163.com> +% License: The LaTeX Project Public License 1.3c +% ---------------------------------------------------------------------------- + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{freealign}[2024-01-01 v2024A Align math formulas in different lines] + +\RequirePackage{etoolbox,zref-savepos} + +\@ifundefined{zsaveposx}{\let\zsaveposx\zsavepos}{} % 旧版本无 \zsaveposx 命令 + +\newcounter{saveposcnt} +\newcounter{useposcnt} +\renewcommand*{\thesaveposcnt}{savepos\number\value{saveposcnt}} +\renewcommand*{\theuseposcnt}{usepos\number\value{useposcnt}} + +\def\my@alignment@offset{} + +\def\my@alignment@list{} +\forcsvlist{\listadd\my@alignment@list}{=,<,>,\le,\ge,\leq,\geq,\approx} + +\newlength{\my@alignment@kern} + +\newcommand*{\my@alignment@check}[1]{% + \ifx\my@let@token #1% + \def\my@alignment@offset{5}% + \expandafter\listbreak + \fi +} + +\newcommand{\my@alignment@next}{% + \ifdefempty{\my@alignment@offset}{% + \def\my@alignment@offset{0}% + \forlistloop{\my@alignment@check}{\my@alignment@list}% + }{}% + \settowidth{\my@alignment@kern}{$\mkern\my@alignment@offset mu$}% + \stepcounter{saveposcnt}% + \rlap{\kern\my@alignment@kern\zsaveposx{\thesaveposcnt}}% +} + +\newcommand*{\tabpoint}[1][]{% + \leavevmode + \def\my@alignment@offset{#1}% + \futurelet\my@let@token\my@alignment@next +} +\let \? = \tabpoint + +\newcommand*{\tabto}{% + \stepcounter{useposcnt}% + \zsaveposx{\theuseposcnt}% + \noindent + \hskip\zposx{\thesaveposcnt}sp\relax + \hskip-\zposx{\theuseposcnt}sp\relax + \ignorespaces +} +\let \+ = \tabto + +\newcommand*{\tableft}{% + \settowidth{\my@alignment@kern}{$=\mkern5mu$}% + \stepcounter{useposcnt}% + \zsaveposx{\theuseposcnt}% + \noindent + \hskip\zposx{\thesaveposcnt}sp\relax + \hskip-\zposx{\theuseposcnt}sp\relax + \hskip-\my@alignment@kern + \ignorespaces +} +\let \< = \tableft |