# -*- mode: Perl -*-
# /=====================================================================\ #
# |  revtex4.cls                                                        | #
# | 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.     | #
# |---------------------------------------------------------------------| #
# | Thanks to Catalin David <c.david@jacobs-university.de>              | #
# | of the arXMLiv group for initial implementation                     | #
# |    http://arxmliv.kwarc.info/                                       | #
# | Released to the Public Domain                                       | #
# |---------------------------------------------------------------------| #
# | 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;

# Generally ignorable options
foreach my $option (qw(overload checkin preprint manuscript showpacs noshowpacs
  showkeys noshowkeys balancelastpage nobalancelastpage
  preprintnumbers nopreprintnumbers bibnotes nobibnotes
  footinbib nofootinbib altaffilletter altaffilsymbol
  superbib citeautoscript raggedbottom flushbottom tightenlines
  lengthcheck eqsecnum secnumarabic fleqn floats endfloats endfloats*
  titlepage notitlepage groupedaddress unsortedaddress runinaddress
  superscriptaddress byrevtex floatfix nofloatfix ltxgridinfo
  outputdebug raggedfooter newabstract oldabstract)) {
  DeclareOption($option, undef); }

# The following specify sub-styles; I'll assume they're irrelevant for now.
foreach my $substyle (qw(aps pra prb prc prd pre prl prstab rmp osa osameet opex tops josa)) {
  DeclareOption($substyle, undef); }

# Options that load packages; but DO NOT load them yet!!
my @revtex_toload = ();
foreach my $pkg (qw(amsfonts amssymb amsmath)) {
  DeclareOption($pkg, sub { push(@revtex_toload, $pkg); return; });
  DeclareOption("no$pkg", sub {
      @revtex_toload = grep { $_ ne $pkg } @revtex_toload;
      return; }); }

DeclareOption("osajnl", sub {
    push(@revtex_toload, 'graphics');
    DefMacro('\ocis', '\pacs'); });

# Anything else is for article.
DeclareOption(undef, sub {
    PassOptions('article', 'cls', ToString(Digest(T_CS('\CurrentOption')))); });

ProcessOptions();
LoadClass('article');
RequirePackage('revtex4_support');
map { RequirePackage($_) } @revtex_toload;

1;
