* runLaTeX: support generation of Postscript.
* findLaTeXIncludes: handle the case where the input is already in the Nix store, and allow a different prefix to be used for searching included files. svn path=/nixpkgs/trunk/; revision=8268
This commit is contained in:
parent
c9c70b8d75
commit
ead48be229
@ -5,22 +5,26 @@ rec {
|
|||||||
|
|
||||||
runLaTeX =
|
runLaTeX =
|
||||||
{ rootFile
|
{ rootFile
|
||||||
, generatePDF ? true
|
, generatePDF ? true # generate PDF, not DVI
|
||||||
|
, generatePS ? false # generate PS in addition to DVI
|
||||||
, extraFiles ? []
|
, extraFiles ? []
|
||||||
, compressBlanksInIndex ? true
|
, compressBlanksInIndex ? true
|
||||||
, packages ? []
|
, packages ? []
|
||||||
|
, searchRelativeTo ? dirOf (toString rootFile) # !!! duplication
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
assert generatePDF -> !generatePS;
|
||||||
|
|
||||||
pkgs.stdenv.mkDerivation {
|
pkgs.stdenv.mkDerivation {
|
||||||
name = "doc";
|
name = "doc";
|
||||||
|
|
||||||
builder = ./run-latex.sh;
|
builder = ./run-latex.sh;
|
||||||
copyIncludes = ./copy-includes.pl;
|
copyIncludes = ./copy-includes.pl;
|
||||||
|
|
||||||
inherit rootFile generatePDF extraFiles
|
inherit rootFile generatePDF generatePS extraFiles
|
||||||
compressBlanksInIndex;
|
compressBlanksInIndex;
|
||||||
|
|
||||||
includes = import (findLaTeXIncludes {inherit rootFile;});
|
includes = import (findLaTeXIncludes {inherit rootFile searchRelativeTo;});
|
||||||
|
|
||||||
buildInputs = [ pkgs.tetex pkgs.perl ] ++ packages;
|
buildInputs = [ pkgs.tetex pkgs.perl ] ++ packages;
|
||||||
};
|
};
|
||||||
@ -28,6 +32,7 @@ rec {
|
|||||||
|
|
||||||
findLaTeXIncludes =
|
findLaTeXIncludes =
|
||||||
{ rootFile
|
{ rootFile
|
||||||
|
, searchRelativeTo ? dirOf (toString rootFile)
|
||||||
}:
|
}:
|
||||||
|
|
||||||
pkgs.stdenv.mkDerivation {
|
pkgs.stdenv.mkDerivation {
|
||||||
@ -38,6 +43,8 @@ rec {
|
|||||||
|
|
||||||
rootFile = toString rootFile; # !!! hacky
|
rootFile = toString rootFile; # !!! hacky
|
||||||
|
|
||||||
|
inherit searchRelativeTo;
|
||||||
|
|
||||||
# Forces rebuilds.
|
# Forces rebuilds.
|
||||||
hack = __currentTime;
|
hack = __currentTime;
|
||||||
};
|
};
|
||||||
|
@ -3,17 +3,12 @@ use File::Basename;
|
|||||||
|
|
||||||
my $root = $ENV{"rootFile"};
|
my $root = $ENV{"rootFile"};
|
||||||
my $out = $ENV{"out"};
|
my $out = $ENV{"out"};
|
||||||
|
my $path = $ENV{"searchRelativeTo"};
|
||||||
|
my $store = $ENV{"NIX_STORE"};
|
||||||
|
|
||||||
open OUT, ">$out" or die;
|
open OUT, ">$out" or die;
|
||||||
print OUT "[\n";
|
print OUT "[\n";
|
||||||
|
|
||||||
# We search for files relative to the root file. TODO: search
|
|
||||||
# relative to the paths in $TEXINPUTS.
|
|
||||||
die unless substr($root, 0, 1) eq "/";
|
|
||||||
my ($x, $path, $y) = fileparse($root);
|
|
||||||
|
|
||||||
$path =~ s/\/$//;
|
|
||||||
|
|
||||||
my @workset = ();
|
my @workset = ();
|
||||||
my %doneset = ();
|
my %doneset = ();
|
||||||
|
|
||||||
@ -38,10 +33,17 @@ while (scalar @workset > 0) {
|
|||||||
|
|
||||||
# Print out the full path *and* its relative path to $root.
|
# Print out the full path *and* its relative path to $root.
|
||||||
|
|
||||||
die if substr($fn, 0, length $path) ne $path;
|
if (substr($fn, 0, length $path) eq $path) {
|
||||||
my $relFN = substr($fn, (length $path) + 1);
|
my $relFN = substr($fn, (length $path) + 1);
|
||||||
|
print OUT "$fn \"$relFN\"\n";
|
||||||
print OUT "$fn \"$relFN\"\n";
|
} else {
|
||||||
|
my $base = basename $fn;
|
||||||
|
my $x = substr($fn, 0, length($store) + 1);
|
||||||
|
if (substr($fn, 0, length($store) + 1) eq "$store/") {
|
||||||
|
$base = substr($base, 33);
|
||||||
|
}
|
||||||
|
print OUT "$fn \"$base\"\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# If this is a TeX file, recursively find include in $fn.
|
# If this is a TeX file, recursively find include in $fn.
|
||||||
|
@ -94,6 +94,11 @@ if test -n "$generatePDF"; then
|
|||||||
cp $rootNameBase.pdf $out
|
cp $rootNameBase.pdf $out
|
||||||
else
|
else
|
||||||
cp $rootNameBase.dvi $out
|
cp $rootNameBase.dvi $out
|
||||||
|
if test -n "$generatePS"; then
|
||||||
|
echo "CONVERTING TO POSTSCRIPT..."
|
||||||
|
dvips $rootNameBase.dvi -o $out/$rootNameBase.ps
|
||||||
|
echo
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user