mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-27 22:03:54 +03:00
* A function `simpleTeXToPNG' that typesets a piece of LaTeX code
(e.g., a file containing something like `$x^2 + y^2 = z^2$') and converts it to a PNG image with no unnecessary surrounding whitespace. Useful when you want to include TeX stuff in webpages / other documents. This currently calls /usr/bin/convert, so we should add ImageMagick. svn path=/nixpkgs/trunk/; revision=8269
This commit is contained in:
parent
ead48be229
commit
1c65a5b328
@ -84,4 +84,83 @@ rec {
|
|||||||
inherit dotGraph nrFrames;
|
inherit dotGraph nrFrames;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Wrap a piece of TeX code in a document. Useful when generating
|
||||||
|
# inline images from TeX code.
|
||||||
|
wrapSimpleTeX =
|
||||||
|
{ preamble ? null
|
||||||
|
, body
|
||||||
|
, name ? baseNameOf (toString body)
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.stdenv.mkDerivation {
|
||||||
|
inherit name preamble body;
|
||||||
|
buildCommand = "
|
||||||
|
touch $out
|
||||||
|
echo '\\documentclass{article}' >> $out
|
||||||
|
echo '\\pagestyle{empty}' >> $out
|
||||||
|
if test -n \"$preamble\"; then cat $preamble >> $out; fi
|
||||||
|
echo '\\begin{document}' >> $out
|
||||||
|
cat $body >> $out
|
||||||
|
echo '\\end{document}' >> $out
|
||||||
|
";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Convert a Postscript file to a PNG image, trimming it so that
|
||||||
|
# there is no unnecessary surrounding whitespace.
|
||||||
|
postscriptToPNG =
|
||||||
|
{ postscript
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.stdenv.mkDerivation {
|
||||||
|
name = "png";
|
||||||
|
inherit postscript;
|
||||||
|
|
||||||
|
buildCommand = "
|
||||||
|
if test -d $postscript; then
|
||||||
|
input=$(ls $postscript/*.ps)
|
||||||
|
else
|
||||||
|
input=$(stripHash $postscript; echo $strippedName)
|
||||||
|
ln -s $postscript $input
|
||||||
|
fi
|
||||||
|
|
||||||
|
# !!! Quick hack: no ImageMagick in Nixpkgs yet!
|
||||||
|
export PATH=/usr/bin:$PATH
|
||||||
|
ensureDir $out
|
||||||
|
convert -units PixelsPerInch \\
|
||||||
|
-density 300 \\
|
||||||
|
-trim \\
|
||||||
|
-matte \\
|
||||||
|
-transparent '#ffffff' \\
|
||||||
|
-type PaletteMatte \\
|
||||||
|
+repage \\
|
||||||
|
$input \\
|
||||||
|
\"$out/$(basename $input .ps).png\"
|
||||||
|
";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Convert a piece of TeX code to a PNG image.
|
||||||
|
simpleTeXToPNG =
|
||||||
|
{ preamble ? null
|
||||||
|
, body
|
||||||
|
, name ? baseNameOf (toString body)
|
||||||
|
, packages ? []
|
||||||
|
}:
|
||||||
|
|
||||||
|
postscriptToPNG {
|
||||||
|
postscript = runLaTeX {
|
||||||
|
rootFile = wrapSimpleTeX {
|
||||||
|
inherit body preamble;
|
||||||
|
};
|
||||||
|
inherit packages;
|
||||||
|
generatePDF = false;
|
||||||
|
generatePS = true;
|
||||||
|
searchRelativeTo = dirOf (toString body);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user