# 2.) While copying,
# 2a.) searches for relative references to files and
# replaces them with absolute ones
-# 2b.) In order to be able to compile with luatex or xetex
-# changes default fonts to use non-tex-fonts instead
+# 2b.) Changes default fonts to use non-tex-fonts
+# 2c.) Changes the non-tex fonts setting if it is "default" (see below).
#
# Syntax: perl useSystemFonts.pl sourceFile destFile format
# Each param represents a path to a file
# convert lyx file to be compilable with xetex
-my ($source, $dest, $format, $fontT, $languageFile, $rest) = @ARGV;
+my ($source, $dest, $format, $fontT, $encodingT, $languageFile, $rest) = @ARGV;
my %encodings = (); # Encoding with TeX fonts, depending on language tag
diestack("Too many arguments") if (defined($rest));
diestack("Destfilename not defined") if (! defined($dest));
diestack("Format (e.g. pdf4) not defined") if (! defined($format));
diestack("Font type (e.g. texF) not defined") if (! defined($fontT));
+diestack("Encoding (e.g. ascii) not defined") if (! defined($encodingT));
$source = File::Spec->rel2abs($source);
$dest = File::Spec->rel2abs($dest);
$font{sans} = "FreeFarsi";
$font{typewriter} = "FreeFarsi Monospace";
}
- elsif ($lang eq "zh_CN") {
- $font{roman} = "WenQuanYi Micro Hei";
- $font{sans} = "WenQuanYi Micro Hei";
- $font{typewriter} = "WenQuanYi Micro Hei";
- }
- elsif ($lang eq "ko" ) {
- $font{roman} = "NanumGothic"; # NanumMyeongjo, NanumGothic Eco, NanumGothicCoding
- $font{sans} = "NanumGothic";
- $font{typewriter} = "NanumGothic";
- }
+ # elsif ($lang eq "ko" ) {
+ # $font{roman} = "NanumGothic"; # NanumMyeongjo, NanumGothic Eco, NanumGothicCoding
+ # $font{sans} = "NanumGothic";
+ # $font{typewriter} = "NanumGothic";
+ # }
elsif ($lang eq "ar" ) {
# available in 'fonts-sil-scheherazade' package
$font{roman} = "Scheherazade";
$font{typewriter} = "FreeMono";
}
}
+elsif ($encodingT ne "default") {
+ # set input encoding to the requested value
+ $inputEncoding = {
+ "search" => '.*', # this will be substituted from '\inputencoding'-line
+ "out" => $encodingT,
+ };
+}
elsif (0) { # set to '1' to enable setting of inputencoding
# use tex font here
my %encoding = ();
if(-d $destdirOfSubdocuments) {
rmtree($destdirOfSubdocuments);
}
-mkdir($destdirOfSubdocuments); # for possibly included files
+mkpath($destdirOfSubdocuments); # for possibly included files
my %IncludedFiles = ();
my %type2hash = (
initLyxStack(\%font, $fontT, $inputEncoding);
+ my $fi_line_no = 0;
+ my @path_errors = ();
while (my $l = <FI>) {
+ $fi_line_no += 1;
$l =~ s/[\n\r]+$//;
#chomp($l);
my $rStatus = checkLyxLine($l);
$res += $res1;
}
}
+ else {
+ if (! -e "$f") {
+ # Non relative (e.g. with absolute path) file should exist
+ if ($rStatus->{"filetype"} eq "interpret") {
+ # filetype::interpret should be interpreted by lyx or latex and therefore emit error
+ # We prinnt a warning instead
+ print "WARNING: Interpreted file \"$f\" not found, at \"$source:$fi_line_no\"\n";
+ }
+ elsif ($rStatus->{"filetype"} eq "prefix_only") {
+ # filetype::prefix_only should be interpreted by latex
+ print "WARNING: Prefixed file \"$f\" not found, at \"$source:$fi_line_no\"\n";
+ }
+ else {
+ # Collect the path-error-messages
+ push(@path_errors, "File \"$f(" . $rStatus->{"filetype"} . ")\" not found, at \"$source:$fi_line_no\"");
+ }
+ }
+ }
}
if ($foundrelative) {
$rF->[$fidx] = join($separator, @{$filelist});
}
close(FI);
close(FO);
+ if (@path_errors > 0) {
+ for my $entry (@path_errors) {
+ print "ERROR: $entry\n";
+ }
+ diestack("Aborted because of path errors in \"$source\"");
+ }
closeLyxStack();
return($res);