Skip to content

Commit 454fa21

Browse files
committed
Restructure the warning handling for the LaTeXImage.pm module.
This moves the error warnings up to immediately after latex or pdflatex/xelatex (whichever is the latex2pdf program) runs. This way these errors are always warned. When the `TikZ.pm` module was converted the the `LaTeXImage.pm` module and restructured for PTX output, it resulted in the case that a `pdf` file is the end result (such as for hardcopy) not having these warnings issued. This is to address issue openwebwork/webwork2#2834.
1 parent 24a0c5a commit 454fa21

File tree

1 file changed

+31
-33
lines changed

1 file changed

+31
-33
lines changed

lib/LaTeXImage.pm

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,17 @@ sub draw {
183183
system "cd $working_dir && "
184184
. WeBWorK::PG::IO::externalCommand('latex')
185185
. " --interaction=nonstopmode image-dvisvgm.tex > latex.stdout 2> /dev/null";
186-
move("$working_dir/image-dvisvgm.dvi", "$working_dir/image.dvi");
187-
chmod(oct(664), "$working_dir/image.dvi");
186+
187+
if (-r "$working_dir/image-dvisvgm.dvi") {
188+
move("$working_dir/image-dvisvgm.dvi", "$working_dir/image.dvi");
189+
chmod(oct(664), "$working_dir/image.dvi");
190+
} else {
191+
warn 'The dvi file was not created.';
192+
if (open(my $err_fh, '<', "$working_dir/latex.stdout")) {
193+
while (my $error = <$err_fh>) { warn $error; }
194+
close($err_fh);
195+
}
196+
}
188197
} else {
189198
warn "Can't open $working_dir/image-dvisvgm.tex for writing.";
190199
return '';
@@ -200,47 +209,36 @@ sub draw {
200209
system "cd $working_dir && "
201210
. WeBWorK::PG::IO::externalCommand('latex2pdf')
202211
. " --interaction=nonstopmode image.tex > latex.stdout 2> /dev/null";
203-
chmod(oct(664), "$working_dir/image.pdf");
212+
213+
if (-r "$working_dir/image.pdf") {
214+
chmod(oct(664), "$working_dir/image.pdf");
215+
} else {
216+
warn 'The pdf file was not created.';
217+
if (open(my $err_fh, '<', "$working_dir/latex.stdout")) {
218+
while (my $error = <$err_fh>) { warn $error; }
219+
close($err_fh);
220+
}
221+
}
204222
} else {
205223
warn "Can't open $working_dir/image.tex for writing.";
206224
return '';
207225
}
208226
}
209227

210228
# Make derivatives of the dvi
211-
if (($ext eq 'svg' || $ext eq 'tgz') && $svgMethod eq 'dvisvgm') {
212-
if (-r "$working_dir/image.dvi") {
213-
$self->use_svgMethod($working_dir);
214-
} else {
215-
warn "The dvi file was not created.";
216-
if (open(my $err_fh, "<", "$working_dir/latex.stdout")) {
217-
while (my $error = <$err_fh>) {
218-
warn $error;
219-
}
220-
close($err_fh);
221-
}
222-
}
229+
if (($ext eq 'svg' || $ext eq 'tgz') && $svgMethod eq 'dvisvgm' && -r "$working_dir/image.dvi") {
230+
$self->use_svgMethod($working_dir);
223231
}
224232

225233
# Make derivatives of the pdf
226-
if (($svgMethod ne 'dvisvgm' || $ext ne 'svg') && $ext ne 'pdf') {
227-
if (-r "$working_dir/image.pdf") {
228-
if (($ext eq 'svg' || $ext eq 'tgz') && $svgMethod ne 'dvisvgm') {
229-
$self->use_svgMethod($working_dir);
230-
}
231-
if ($ext eq 'tgz') {
232-
$self->use_convert($working_dir, "png");
233-
} elsif ($ext ne 'svg' && $ext ne 'pdf') {
234-
$self->use_convert($working_dir, $ext);
235-
}
236-
} else {
237-
warn "The pdf file was not created.";
238-
if (open(my $err_fh, "<", "$working_dir/latex.stdout")) {
239-
while (my $error = <$err_fh>) {
240-
warn $error;
241-
}
242-
close($err_fh);
243-
}
234+
if (($svgMethod ne 'dvisvgm' || $ext ne 'svg') && $ext ne 'pdf' && -r "$working_dir/image.pdf") {
235+
if (($ext eq 'svg' || $ext eq 'tgz') && $svgMethod ne 'dvisvgm') {
236+
$self->use_svgMethod($working_dir);
237+
}
238+
if ($ext eq 'tgz') {
239+
$self->use_convert($working_dir, 'png');
240+
} elsif ($ext ne 'svg' && $ext ne 'pdf') {
241+
$self->use_convert($working_dir, $ext);
244242
}
245243
}
246244

0 commit comments

Comments
 (0)