# -*- mode: Perl -*-
# /=====================================================================\ #
# | inputenc | #
# | 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;
#**********************************************************************
DefPrimitive('\DeclareInputMath {Number} {}', sub {
my ($stomach, $code, $expansion) = @_;
my $char = pack('C', $code->valueOf);
AssignCatcode($char, CC_ACTIVE);
DefMacroI($char, undef, $expansion); });
DefPrimitive('\DeclareInputText {Number} {}', sub {
my ($stomach, $code, $expansion) = @_;
my $char = pack('C', $code->valueOf);
AssignCatcode($char, CC_ACTIVE);
DefMacroI($char, undef, $expansion); });
DefMacro('\IeC{}', '#1');
DefMacroI('\@inpenc@undefined', undef, sub {
Error('unexpected', '<char>', $_[0],
"Keyboard character used is undefined in inputencoding " . LookupValue('INPUT_ENCODING')); });
DefPrimitive('\inputencoding{}', sub { SetInputEncoding(ToString(Digest($_[1]))); });
DeclareOption(undef, sub { SetInputEncoding(ToString(Digest(T_CS('\CurrentOption')))); });
ProcessOptions();
#**********************************************************************
sub SetInputEncoding {
my ($encoding) = @_;
# Initially disable all odd & upper half-plane chars
foreach my $code ((0 .. 8), 0xB, (0xE .. 0x1E), (128 .. 255)) {
my $char = pack('C', $code);
AssignCatcode($char, CC_ACTIVE);
Let($char, '\@inpenc@undefined'); }
AssignValue(PERL_INPUT_ENCODING => undef); # Disable the perl-level decoding, if any.
# Then load TeX's input encoding definitions.
InputDefinitions($encoding, type => 'def');
AssignValue(INPUT_ENCODING => $encoding);
return; }
#**********************************************************************
1;