# -*- mode: Perl -*- # /=====================================================================\ # # | nicefrac | # # | Implementation for LaTeXML | # # |=====================================================================| # # | Part of LaTeXML: | # # | Public domain software, produced as part of work done by the | # # | United States Government & not subject to copyright in the US. | # # |---------------------------------------------------------------------| # # | Bruce Miller <bruce.miller@nist.gov> #_# | # # | http://dlmf.nist.gov/LaTeXML/ (o o) | # # \=========================================================ooo==U==ooo=/ # package LaTeXML::Package::Pool; use strict; use warnings; use LaTeXML::Package; #RequirePackage('ifthen'); # Handy for cases where macros want to use math, but track the current text font # (examples, nicefrac, units...) DefPrimitiveI('\nf@mathcopytextfont', undef, sub { if (my $textfont = LookupValue('savedfont')) { MergeFont(family => $textfont->getFamily, series => $textfont->getSeries, shape => $textfont->getShape); } return; }); DefMacro('\@UnitsNiceFrac Optional:\nf@mathcopytextfont{}{}', '\ensuremath{\ltx@nicefrac@ifrac{#1{#2}}{#1{#3}}}'); # copy of \ifrac from amsmath DefConstructor('\ltx@nicefrac@ifrac{}{}', "<ltx:XMApp>" . "<ltx:XMTok stretchy='true' meaning='divide' role='MULOP' _font='#slashfont'>/</ltx:XMTok>" . "<ltx:XMArg>#1</ltx:XMArg><ltx:XMArg>#2</ltx:XMArg>" . "</ltx:XMApp>", alias => '\nicefrac', properties => { slashfont => sub { LookupValue('font')->specialize('/'); } }); DefMacro('\@UnitsUglyFrac Optional:\nf@mathcopytextfont {}{}', '\ifmmode\frac{#1{#2}}{#1{#2}}\else#1{#2}/#1{#2}\fi'); DeclareOption('nice', sub { Let('\nicefrac', '\@UnitsNiceFrac'); }); DeclareOption('ugly', sub { Let('\nicefrac', '\@UnitsUglyFrac'); }); ExecuteOptions('nice'); ProcessOptions(); #====================================================================== 1;