# preview.sty can be obtained from CTAN/macros/latex/contrib/supported/preview.
-# This script takes three arguments:
+# This script takes two arguments:
# TEXFILE: the name of the .tex file to be converted.
-# SCALEFACTOR: scale factor, used to ascertain the resolution of the
+# SCALEFACTOR: a scale factor, used to ascertain the resolution of the
# generated image which is then passed to gs.
-# NDIGITS: the number of digits in the filenames generated by gs,
-# ${BASE}%0${NDIGITS}d.ppm.
# If successful, this script will leave in dir ${DIR}:
-# ${BASE}[0-9]\{${NDIGITS}\}.ppm: a (possibly large) number of image files.
-# ${BASE}.metrics: a file containing info needed by LyX to
-# position the images correctly on the screen.
+# ${BASE}\([0-9]*\).ppm: a (possibly large) number of image files.
+# ${BASE}.metrics: a file containing info needed by LyX to position the
+# images correctly on the screen.
# All other files ${BASE}* will be deleted.
# Three helper functions.
}
# Preliminary check.
-if [ $# -ne 3 ]; then
+if [ $# -ne 2 ]; then
exit 1
fi
BASE=`basename $1 .tex`
SCALEFACTOR=$2
-NDIGITS=$3
TEXFILE=${BASE}.tex
LOGFILE=${BASE}.log
fi
gs -q -dNOPAUSE -dBATCH -dSAFER \
- -sDEVICE=pnmraw -sOutputFile=${BASE}%0${NDIGITS}d.ppm \
+ -sDEVICE=pnmraw -sOutputFile=${BASE}%d.ppm \
-dGraphicsAlphaBit=${ALPHA} -dTextAlphaBits=${ALPHA} -r${RESOLUTION} \
${PSFILE}
# All has been successful, so remove everything except the bitmap files
# and the metrics file.
FILES=`ls ${BASE}* | \
- sed -e "/${BASE}.metrics/d" -e "/${BASE}[0-9]\{${NDIGITS}\}.ppm/d"`
-rm -f ${FILES}
+ sed -e "/${BASE}.metrics/d" -e "/${BASE}\([0-9]*\).ppm/d"`
+rm -f ${FILES} texput.log
};
-// Given a base-10 number return the number of digits needed to store it.
-// Eg 2 requires 1 digit, 22 requires 2 digits and 999 requires 3 digits.
-// Note that André suggests just returning '12' here...
- int ndigits(int /*num*/)
-{
- //return 1 + int(std::log10(double(num)));
- return 5;
-}
-
-
/// Store info on a currently executing, forked process.
struct InProgress {
///
struct IncrementedFileName {
IncrementedFileName(string const & to_format,
- string const & filename_base, int nd)
- : to_format_(to_format), base_(filename_base),
- ndigits_(nd), counter_(1)
+ string const & filename_base)
+ : to_format_(to_format), base_(filename_base), counter_(1)
{}
StrPair const operator()(string const & snippet)
{
ostringstream os;
- os << base_
- << setfill('0') << setw(ndigits_) << counter_++
- << "." << to_format_;
-
+ os << base_ << counter_++ << "." << to_format_;
string const file = os.str().c_str();
return make_pair(snippet, file);
private:
string const & to_format_;
string const & base_;
- int const ndigits_;
int counter_;
};
PendingSnippets::const_iterator pend = pending.end();
BitmapFile::iterator sit = snippets.begin();
- std::transform(pit, pend, sit,
- IncrementedFileName(to_format, filename_base,
- ndigits(int(snippets.size()))));
+ std::transform(pit, pend, sit,
+ IncrementedFileName(to_format, filename_base));
}
// such processes if it starts correctly.
InProgress inprogress(filename_base, pending_, pconverter_->to);
+ // clear pending_, so we're ready to start afresh.
+ pending_.clear();
+
// Output the LaTeX file.
string const latexfile = filename_base + ".tex";
// The conversion command.
ostringstream cs;
cs << pconverter_->command << " " << latexfile << " "
- << int(font_scaling_factor_) << " "
- << ndigits(int(pending_.size()));
+ << int(font_scaling_factor_);
string const command = LibScriptSearch(cs.str().c_str());
- // clear pending_, so we're ready to start afresh.
- pending_.clear();
-
// Initiate the conversion from LaTeX to bitmap images files.
Forkedcall::SignalTypePtr convert_ptr;
convert_ptr.reset(new Forkedcall::SignalType);