📄 textogif
字号:
#! /usr/bin/perl## T E X T O G I F## by John Walker# http://www.fourmilab.ch/# $version = '1.1 (2003-11-07)';### Converts a LaTeX file containing equations(s) into a GIF file for# embedding into an HTML document. The black and white image of the# equation is created at high resolution and then resampled to the# target resolution to antialias what would otherwise be jagged# edges.## Online documentation with sample output is available on the Web# at http://www.fourmilab.ch/webtools/textogif/## Write your equation (or anything else you can typeset with LaTeX)# in a file like:## \documentclass[12pt]{article}# \pagestyle{empty}# \begin{document}## \begin{displaymath}# \bf % Compiled formulae often look better in boldface# \int H(x,x')\psi(x')dx' = -\frac{\hbar2}{2m}\frac{d2}{dx2}# \psi(x)+V(x)\psi(x)# \end{displaymath}## \end{document}## The "\pagestyle{empty}" is required to avoid generating a huge# image with a page number at the bottom.## Then (assuming you have all the software described below installed# properly), you can simply say:## textogif [options] filename ...## to compile filename.tex to filename.gif, an interlaced,# transparent background GIF file ready to use an an inline image.# You can specify the base name, for example, "schrod", rather than# the full name of the TeX file ("schrod.tex"). TeX requires the# input file to have an extension of ".tex". The command line# options are described in the help text at the end of this program# and in the "Default Configuration" section below.## A sample IMG tag, including the image width and height is printed# on standard error, for example:## <img src="schrod.gif" width=508 height=56>## Required Software## This script requires the following software to be installed# in the standard manner. Version numbers are those used in the# development and testing of the script.## Perl 5.8.0 (anything later than 4.036 should work)# TeX 3.14159 (Web2C 7.3.1)# LaTeX2e <2000/06/01># dvips dvipsk 5.86# Ghostscript 6.52 (2001-10-20)# Netpbm 9.24### Default Configuration## The following settings are the defaults used if the -dpi and# -res options are not specified on the command line.## The parameter $dpi controls how large the equation will appear# with respect to other inline images and the surrounding text.# The parameter is expressed in "dots per inch" in the PostScript# sense. Unfortunately, since there's no standard text size in# Web browsers (and most allow the user to change fonts and# point sizes), there's no "right" value for this setting. The# default of 150 seems about right for most documents. A setting# of 75 generates equations at half the normal size, while 300# doubles the size of equations. The setting of $dpi can always be# overridden by specifying the "-dpi" command line option.# $dpi = 150;## The parameter $res specifies the oversampling as the ratio# of the final image size to the initial black and white image.# Smaller values produce smoothing with more levels of grey but# require (much) more memory and intermediate file space to create# the image. If you run out of memory or disc space with the# default value of 0.5, try changing it to 0.75. A $res setting of# 1.0 disables antialiasing entirely. The setting of $res can# always be overridden by specifying the "res" command line option.# $res = 0.5;## The $background parameter supplies a command, which may be# void, to be inserted in the image processing pipeline to# adjust the original black-on-white image so that its background# agrees with that of the document in which it is to be inserted.# For a document with the default grey background used by Mosaic# and old versions of Netscape, use:## $background = "ppmdim 0.7 |"; $transparent = "b2/b2/b2";## If your document uses a white background, the void specification:## $background = ""; $transparent = "ff/ff/ff";## should be used. For colour or pattern backgrounds, you'll have# to hack the code. The reason for adjusting the background is to# ensure that when the image is resampled and then output with a# transparent background the edges of the characters will fade# smoothly into the page background. Otherwise you'll get a# distracting "halo" around each character. You can override this# default specification with the -grey command line option.# $background = ""; $transparent = "ff/ff/ff";## Image generation and decoding commands for GIF and PNG output.# $cmdGIF = 'ppmtogif'; $cmdGIFdecode = 'giftopnm'; $cmdPNG = 'pnmtopng'; $cmdPNGdecode = 'pngtopnm';## Default image creation modes# $imageCmd = $cmdGIF; $imageCmdD = $cmdGIFdecode; $imageExt = 'gif'; # # Command line option processing # while ($ARGV[0] =~ m/^-/) { $_ = shift(@ARGV); s/^--/-/; # Allow GNU-style -- options if (m/^-d/) { # -dpi nnn $dpi = shift(@ARGV); } elsif (m/^-gi/) { # -gif $imageCmd = $cmdGIF; $imageCmdD = $cmdGIFdecode; $imageExt = 'gif'; } elsif (m/^-gr/) { # -grey n $grey = shift(@ARGV); $background = "ppmdim $grey | "; $greylev = int(255 * $grey); $transparent = sprintf("%02x/%02x/%02x", $greylev, $greylev, $greylev); } elsif (m/^-h/) { # -help &help(); exit(0); } elsif (m/^-p/) { # -png $imageCmd = $cmdPNG; $imageCmdD = $cmdPNGdecode; $imageExt = 'png'; } elsif (m/^-r/) { # -res nnn $res = shift(@ARGV); } elsif (m/^-v/) { # -version print("Version $version\n"); exit(0); } } # # Main file processing loop # foreach $f (@ARGV) { $f =~ s/(.*)\.tex$/$1/; &syscmd("echo x | latex $f \n"); &syscmd("dvips -f $f >_temp_$$.ps\n"); # Assemble and execute the command pipeline which generates the image. # Start by invoking Ghostscript with the pbmraw output device and # output file set to standard output ("-") and the requested resolution. # The -q (Quiet) option is required; otherwise Ghostscript will send # processing information to standard output and corrupt transmission # of the bitmap to the next component in the pipeline. $cmd = "echo quit | gs -q -dNOPAUSE -r" . int($dpi / $res). "x". int($dpi / $res) . " -sOutputFile=- -sDEVICE=pbmraw _temp_$$.ps | " . # Next we crop white space surrounding the generated text, promote # the monochrome bitmap to a grey scale image with 8 bits per pixel, # apply whatever background adjustment transform is requested, and # scale the image to the desired size. "pnmcrop -white | pnmdepth 255 | $background pnmscale " . $res . " | " . # Finally, convert the image to the desired output format and write # the output file. "$imageCmd -interlace -transparent rgb:$transparent >$f.$imageExt"; &syscmd($cmd); # Sweep up debris left around by the various intermediate steps &syscmd("rm $f.dvi $f.aux $f.log _temp_$$.ps"); # Print the reference to include this figure, including width and height, # to standard error. $r = `$imageCmdD $f.$imageExt | pnmfile`; $r =~ m/(\d+) by (\d+)/; print(STDERR "<img src=\"$f.$imageExt\" width=\"$1\" height=\"$2\">\n"); } # Echo and execute a system command sub syscmd { local ($cmd) = @_; print(STDERR "$cmd\n"); system($cmd) == 0 || die("Error processing command:\n\t$cmd\n\t"); } # Print help text sub help { print <<"EOD"usage: textogif [ options ] texfile... Options: -dpi n Set rendering dots per inch to n (default 150) -gif Generate GIF image (default) -grey Grey scale background level: 0 = black, 1 = white (default) -help Print this message -png Generate PNG image -res n Set oversampling ratio, smaller = finer (default 0.5) -version Print version numberFor documentation and the latest version of this programplease visit the Web page: http://www.fourmilab.ch/webtools/textogif/EOD; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -