about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/typesetting/tex/nix/find-includes.pl
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/typesetting/tex/nix/find-includes.pl')
-rw-r--r--nixpkgs/pkgs/tools/typesetting/tex/nix/find-includes.pl69
1 files changed, 69 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/typesetting/tex/nix/find-includes.pl b/nixpkgs/pkgs/tools/typesetting/tex/nix/find-includes.pl
new file mode 100644
index 000000000000..41675e939f60
--- /dev/null
+++ b/nixpkgs/pkgs/tools/typesetting/tex/nix/find-includes.pl
@@ -0,0 +1,69 @@
+use strict;
+use File::Basename;
+
+my $src = $ENV{"src"};
+my $out = $ENV{"out"};
+my $path = $ENV{"searchRelativeTo"};
+
+open OUT, ">$out" or die;
+print OUT "[\n";
+
+open FILE, "< $src" or die;
+
+sub addName {
+    my ($type, $name) = @_;
+    print OUT "{ type = \"$type\"; name = \"$name\"; }\n";
+}
+    
+while (<FILE>) {
+    if (/\\input\{(.*)\}/) {
+        my $fn2 = $1;
+        die "absolute path! $fn2" if substr($fn2, 0, 1) eq "/";
+        addName "tex", "$fn2";
+    } elsif (/\\input (.*)$/) {
+        my $fn2 = $1;
+        die "absolute path! $fn2" if substr($fn2, 0, 1) eq "/";
+        addName "tex", "$fn2";
+    } elsif (/\\RequirePackage(\[.*\])?\{(.*)\}/) {
+        my $fn2 = $2;
+        die "absolute path! $fn2" if substr($fn2, 0, 1) eq "/";
+        addName "misc", "$fn2.sty";
+    } elsif (/\\usepackage(\[.*\])?\{(.*)\}/) {
+        my $fn2 = $2;
+        die "absolute path! $fn2" if substr($fn2, 0, 1) eq "/";
+        addName "misc", "$fn2.sty";
+    } elsif (/\\documentclass(\[.*\])?\{(.*)\}/) {
+        my $fn2 = $2;
+        die "absolute path! $fn2" if substr($fn2, 0, 1) eq "/";
+        addName "misc", "$fn2.cls";
+    } elsif (/\\bibliographystyle\{(.*)\}/) {
+        my $fn2 = $1;
+        die "absolute path! $fn2" if substr($fn2, 0, 1) eq "/";
+        addName "misc", "$fn2.bst";
+    } elsif (/\\bibliography\{(.*)\}/) {
+        foreach my $bib (split /,/, $1) {
+            $bib =~ s/^\s+//; # remove leading / trailing whitespace
+            $bib =~ s/\s+$//;
+            addName "misc", "$bib.bib";
+            addName "misc", (basename($ENV{"rootFile"}, ".tex", ".ltx") . ".bbl");
+        }
+    } elsif (/\\includegraphics(\[.*\])?\{(.*)\}/) {
+        my $fn2 = $2;
+        die "absolute path! $fn2" if substr($fn2, 0, 1) eq "/";
+        addName "img", "$fn2";
+    } elsif (/\\pgfdeclareimage(\[.*\])?\{.*\}\{(.*)\}/) {
+        my $fn2 = $2;
+        die "absolute path! $fn2" if substr($fn2, 0, 1) eq "/";
+        addName "img", "$fn2";
+    } elsif (/\\pgfimage(\[.*\])?\{(.*)\}/) {
+        my $fn2 = $2;
+        die "absolute path! $fn2" if substr($fn2, 0, 1) eq "/";
+        addName "img", "$fn2";
+    }
+    # !!! also support \usepackage
+}
+
+close FILE;
+
+print OUT "]\n";
+close OUT;