1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
# -*- mode: Perl -*-
# /=====================================================================\ #
# | comment | #
# | 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;
#**********************************************************************
# Define \name and \begin{name} to start an ignored section
# until \endname or \end{name}, respectively
sub defineExcluded {
my ($stomach, $name) = @_;
$name = ToString($name);
my $endmark = '\end{' . $name . '}';
DefMacroI(T_CS("\\begin{$name}"), undef, sub {
my ($gullet) = @_;
my $line = $gullet->readRawLine; # skip rest of 1st line (after the \begin{$name} !!!
my @stuff = ();
push(@stuff, $line) if $line;
while (defined($line = $gullet->readRawLine) && ($line !~ /^\s*\Q$endmark\E\s*$/)) {
push(@stuff, $line); }
return Tokens(T_COMMENT(join("\n", @stuff))); });
return; }
sub defineIncluded {
my ($stomach, $name, $before, $after) = @_;
$name = ToString($name);
# Note that we define the `magic' environment control sequences,
# but DO NOT do any of the normal environ things, like \begingroup \endgroup!
DefMacroI(T_CS("\\begin{$name}"), undef, sub {
my ($gullet) = @_;
$gullet->readRawLine; # IGNORE 1st line (after the \begin{$name} !!!
Tokens(($before ? $before->unlist : ()), T_CS('\ignorespaces')); });
DefMacroI(T_CS("\\end{$name}"), undef,
Tokens(($after ? $after->unlist : ()), T_CS('\ignorespaces')));
return; }
defineExcluded(undef, 'comment');
DefPrimitive('\includecomment{}', \&defineIncluded);
DefPrimitive('\excludecomment{}', \&defineExcluded);
DefPrimitive('\specialcomment{}{}{}', \&defineIncluded);
#DefPrimitive('\processcomment{}{}{}{}',);
DefMacro('\csarg{}{}', '\expandafter#1\csname#2\endcsname');
#**********************************************************************
1;
|