# -*- 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;