@@ -160,6 +160,50 @@ sub digestFile {
160160 return $list ; });
161161}
162162
163+ sub iniTeX {
164+ my ($self , $request , %options ) = @_ ;
165+ my ($dir , $name , $ext );
166+ my $mode = $options {mode } || ' Base' ; # normally, w/o TeX (plain) itself
167+ if (pathname_is_literaldata($request )) {
168+ $dir = undef ; $ext = ' tex' ;
169+ $name = " Anonymous String" ; }
170+ elsif (pathname_is_url($request )) {
171+ $dir = undef ; $ext = ' tex' ;
172+ $name = $request ; }
173+ else {
174+ if (my $pathname = pathname_find($request , types => [' tex' ,' ltx' ],
175+ paths => $$self {state }-> lookupValue(' SEARCHPATHS' ))
176+ || pathname_kpsewhich($request , types => [' tex' ,' ltx' ],
177+ paths => $$self {state }-> lookupValue(' SEARCHPATHS' ))) {
178+ $request = $pathname ;
179+ ($dir , $name , $ext ) = pathname_split($request ); }
180+ else {
181+ $self -> withState(sub {
182+ Fatal(' missing_file' , $request , undef , " Can't find $mode file $request " ,
183+ LaTeXML::Package::maybeReportSearchPaths()
184+ ); }); } }
185+ return
186+ $self -> withState(sub {
187+ my ($state ) = @_ ;
188+ ProgressSpinup(" Digesting $mode $name " );
189+ # Not so sure if preloads are a good idea yet...
190+ $self -> initializeState($mode . " .pool" , @{ $$self {preload } || [] }) unless $options {noinitialize };
191+ $state -> assignValue(SOURCEFILE => $request ) if (!pathname_is_literaldata($request ));
192+ $state -> assignValue(SOURCEDIRECTORY => $dir ) if defined $dir ;
193+ $state -> unshiftValue(SEARCHPATHS => $dir )
194+ if defined $dir && !grep { $_ eq $dir } @{ $state -> lookupValue(' SEARCHPATHS' ) };
195+ $state -> unshiftValue(GRAPHICSPATHS => $dir )
196+
197+ if defined $dir && !grep { $_ eq $dir } @{ $state -> lookupValue(' GRAPHICSPATHS' ) };
198+
199+ $state -> installDefinition(LaTeXML::Core::Definition::Expandable-> new(T_CS(' \jobname' ), undef ,
200+ Tokens(Explode($name ))));
201+ LaTeXML::Package::Pool::DumpFile($request );
202+ $self -> finishDigestion;
203+ ProgressSpindown(" Digesting $mode $name " );
204+ return ; });
205+ }
206+
163207sub finishDigestion {
164208 my ($self ) = @_ ;
165209 my $state = $$self {state };
0 commit comments