????JFIF??x?x????'
| Server IP : 79.136.114.73 / Your IP : 216.73.216.28 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/bin/X11/X11/X11/X11/ |
Upload File : |
#!/bin/sh
unset POSIXLY_CORRECT
gawk '
#########################################################################
#########################################################################
BEGIN {
cmdGawk = "gawk";
cmdCat = "cat";
cmdLess = "less";
cmdRm = "rm"
cmdMv = "mv"
cmdLatex = "latex";
cmdPdftex = "pdflatex";
cmdEpsToPdf = "epstopdf";
cmdDvips = "dvips";
cmdFig2dev = "fig2dev";
cmdTouch = "touch";
szVersion = "1.1.2";
iError = 0;
iGapWidth = 1;
# get the options
szOptString = "&l%e&m$p%i%I$s$H$g%G%v%V%d";
getopt(szOptString);
if (aOptions["d"])
{
aOptions["v"] = "-";
for (iI = 0; iI < ARGC; iI++)
printf("ARGV[%d]=%s\n", iI, ARGV[iI]);
iDim = split(szOptString, aOpts, "[$%&]");
for (iI = 2; iI <= iDim; iI++)
debug("aOptions[%s] = >%s<\n", aOpts[iI], aOptions[aOpts[iI]]);
}
if (aOptions["V"] != "")
{
printf("fig2mpdf: version %s\n", szVersion);
iError = 1;
exit(0);
}
szTmpPrefix = "_fig2mpdf"
iLine = -1;
iInString = 0;
iDepths = 1;
iInvalidDepth = -2
iAdminDepth = 2000
szBase = ARGV[1];
szOrigFile = ARGV[1];
szOrigPath = ARGV[1];
# set default switch state
iDoMultiLayer = 0;
iDoLatex = 0;
iDoPdftex = 1;
iIncludeLowestRange = 1;
# set iDoLatex and iDoMultiLayer concerning the given suffix
match(szBase, /\.[^\.\/]+$/);
if (RLENGTH != -1)
{
szSuffix = substr(szBase, RSTART);
if (szSuffix == ".lfig")
iDoLatex = 1;
else if (szSuffix == ".mfig")
iDoMultiLayer = 1;
else if ((szSuffix == ".mlfig") || (szSuffix == ".lmfig"))
{
iDoLatex = 1;
iDoMultiLayer = 1;
}
}
################################
# evalutate options
# set toggle latex
if (aOptions["l"] == "-")
iDoLatex = 1;
if (aOptions["l"] == "+")
iDoLatex = 0;
# set multilayer flag
if (aOptions["m"] == "-")
iDoMultiLayer = 1;
if (aOptions["m"] == "+")
iDoMultiLayer = 0;
# set toggle pdftex
if (aOptions["e"] == "-")
iDoPdftex = 0;
# evaluate do not include lowest layer in all figs
iIncludeLowestRange = (aOptions["i"] == "-");
# evaluate include all lower ranges in the sub figs
iIncludeAllLowerRanges = (aOptions["I"] != "-");
# check consistencies
# if there are ranges given -> do multilayer
if (aOptions["p"] != "")
iDoMultiLayer = 1;
if (aOptions["g"] != "")
{
if ( ! match (aOptions["g"], /^[0-9]+$/))
usage();
iGapWidth = aOptions["g"] + 1;
}
# get the basename of the source
gsub(/\.[^\/]+$/, "", szBase);
gsub(/^.*\//, "", szBase);
# get the path to the original
gsub(/[^\/]+$/, "", szOrigPath);
}
#########################################################################
#########################################################################
( iInString != 0) {
aszLine[iLine] = sprintf("%s\n%s", aszLine[iLine], $0);
iInString = (match($0, "\\\\001$") == 0);
iSubLine++;
next;
}
/^[135][ ]/ {
iCmd = $1;
iSubCmd = -1;
iSubLine = 0;
aiDepth[++iLine] = fnGetDepth($1);
aszLine[iLine] = $0;
next;
}
/^[2][ ]/ {
iCmd = $1;
iSubCmd = $2;
iSubLine = 0;
aiDepth[++iLine] = fnGetDepth($1);
aszLine[iLine] = $0;
next;
}
/^[4][ ]/ {
iCmd = $1;
iSubCmd = $2;
iSubLine = 0;
aiDepth[++iLine] = fnGetDepth($1);
aszLine[iLine] = $0;
iInString = (match($0, "\\\\001$") == 0);
next;
}
/^(6[ ])|(-6)/ {
iCmd = $1;
iSubCmd = -1;
iSubLine = 0;
next;
}
/^[^ ]/ {
iCmd = -1;
aiDepth[++iLine] = fnGetDepth("A");
iSubLine = 0;
aszLine[iLine] = $0;
next;
}
/^[ ]/ {
iSubLine++;
if ((iCmd == 2) && (iSubCmd == 5) && (iSubLine == 1))
{
if (match($0, "^\t[01] "))
{
szFileName = substr($0, RSTART + RLENGTH);
if ( ! match(szFileName, /^\//))
szFileName = sprintf("%s%s", szOrigPath, szFileName);
aszLine[iLine] = sprintf("%s\n\t%s %s", aszLine[iLine], $1, szFileName);
}
else
aszLine[iLine] = sprintf("%s\n%s", aszLine[iLine], $0);
}
else
aszLine[iLine] = sprintf("%s\n%s", aszLine[iLine], $0);
}
END {
iLine++;
iLowestLayer = 0;
iFirstRange = 0;
if (iError == 0)
{
if (iDoMultiLayer)
{
asort(aiDepths, aiSortedDepth);
# check for ranges as options
if (aOptions["p"] != "")
{
# we have explicit ranges
gsub(/-/, ":", aOptions["p"]);
iRanges = split(aOptions["p"], aszRanges, ",");
}
else
{
if (iDepths < 4)
{
iRanges = 1;
aszRanges[1] = "1:999";
}
else
{
iRanges = 0;
iLastRange = aiSortedDepth[iDepths - 2] + 0;
iRangeStart = iLastRange;
for (iI = iDepths - 3; iI > 0; iI--)
{
aiSortedDepth[iI] += 0;
if ((aiSortedDepth[iI] < iLastRange - iGapWidth) || (iI == 1))
{
if (aiSortedDepth[iI] >= iLastRange - iGapWidth)
iLastRange = aiSortedDepth[iI];
if (iLastRange != iRangeStart)
aszRanges[++iRanges] = sprintf("%d:%d", iLastRange, iRangeStart);
else
aszRanges[++iRanges] = sprintf("%d", iRangeStart);
iRangeStart = aiSortedDepth[iI];
if ((iI == 1) && (aiSortedDepth[iI] < iLastRange - iGapWidth))
aszRanges[++iRanges] = sprintf("%d", aiSortedDepth[iI]);
}
iLastRange = aiSortedDepth[iI];
}
}
}
# check for a multilayer file with only one range
if ((iRanges == 1) && iIncludeLowestRange)
{
iIncludeLowestRange = 0;
}
szInitRangeList = " -D ";
szSep = "";
if (iIncludeLowestRange)
{
szInitRangeList = sprintf("%s+%s", szInitRangeList, aszRanges[1]);
szSep = ",";
}
szRangeList = szInitRangeList;
# step through the ranges
for (iI = iIncludeLowestRange; iI < iRanges; iI++)
{
szFileBase = sprintf("%s-%d", szBase, iI - iIncludeLowestRange);
if (aOptions["I"])
{
szRangeList = sprintf("%s%s+%s", szRangeList, szSep, aszRanges[iI + 1]);
szSep = ",";
}
else
szRangeList = sprintf("%s%s+%s", szInitRangeList, szSep, aszRanges[iI + 1]);
if (iDoLatex)
szTargetFile = fnDoTexFig(szFileBase, szOrigFile, szRangeList, (iDoPdftex != 0));
else
szTargetFile = fnDoNormalFig(szFileBase, szOrigFile, szRangeList, (iDoPdftex != 0));
if (aOptions["G"])
{
match(szTargetFile, /\.[^.]*$/);
szCommand = sprintf("%s %s %s.page%d%s", cmdMv, szTargetFile, szBase, iI - iIncludeLowestRange, substr(szTargetFile, RSTART, RLENGTH));
debug("%s\n", szCommand);
system(szCommand);
}
}
}
else
{
szRangeList = "";
if (iDoLatex)
szTargetFile = fnDoTexFig(szBase, szOrigFile, szRangeList, (iDoPdftex != 0));
else
szTargetFile = fnDoNormalFig(szBase, szOrigFile, szRangeList, (iDoPdftex != 0));
}
}
}
#########################################################################
#########################################################################
function debug(str, arg0, arg1, arg2, arg3, arg4)
{
if (aOptions["v"])
printf (str, arg0, arg1, arg2, arg3, arg4);
}
#########################################################################
#########################################################################
function fnGetDepth (iControl)
{
if (iControl == 1)
{
iReturn = sprintf("%04d", $7);
}
else if (iControl == 2)
{
iReturn = sprintf("%04d", $7);
}
else if (iControl == 3)
{
iReturn = sprintf("%04d", $7);
}
else if (iControl == 4)
{
iReturn = sprintf("%04d", $4);
}
else if (iControl == 5)
{
iReturn = sprintf("%04d", $7);
}
else if ((iControl == 6) || (iControl == -6))
{
iReturn = sprintf("%04d", iInvalidDepth);
}
else
{
iReturn = sprintf("%04d", iAdminDepth);
}
if (iReturn >= 0)
{
if (ahDepths[iReturn] == 0)
{
ahDepths[iReturn] = 1;
aiDepths[iDepths++] = iReturn;
}
}
return (iReturn);
}
#########################################################################
#########################################################################
function fnDoNormalFig(szFileNameBase, szFigFile, szRangeList, iPdf,
szEpsFile, szPdfFile, szTargetFile, szCommand)
{
debug("FileNameBase >%s< FigFile >%s< Pdf:%d\n", szFileNameBase, szFigFile, iPdf);
if (iPdf)
szEpsFile = sprintf("%s%s.eps", szTmpPrefix, szFileNameBase);
else
{
szEpsFile = sprintf("%s.eps", szFileNameBase);
szTargetFile = szEpsFile;
}
szCommand = sprintf("%s -L eps %s %s %s 2> /dev/null", cmdFig2dev, szRangeList, szFigFile, szEpsFile);
debug("%s\n", szCommand);
system(szCommand);
if (iPdf)
{
szPdfFile = sprintf("%s.pdf", szFileNameBase);
szTargetFile = szPdfFile;
szCommand = sprintf("%s --outfile=%s %s", cmdEpsToPdf, szPdfFile, szEpsFile);
debug("%s\n", szCommand);
system(szCommand);
if ( ! aOptions["d"])
{
szCommand = sprintf("%s -f %s", cmdRm, szEpsFile);
debug("%s\n", szCommand);
system(szCommand);
}
}
return (szTargetFile);
}
#########################################################################
#########################################################################
function fnDoTexFig(szFileNameBase, szFigFile, szRangeList, iPdf,
szEpsFile, szPdfFile, szTexDoc, szTexPdf, szTexLog, szTexAux, szTexInp, szTmpPs, szTmpPdf, szTexSiz, szTmpEps, szCommand, szHeader)
{
debug("FileNameBase >%s< FigFile >%s< Pdf:%d\n", szFileNameBase, szFigFile, iPdf);
szEpsFile = sprintf("%s.eps", szFileNameBase);
szPdfFile = sprintf("%s.pdf", szFileNameBase);
szTexDoc = sprintf("%s%s_doc.tex", szTmpPrefix, szFileNameBase);
szTexPdf = sprintf("%s%s_doc.pdf", szTmpPrefix, szFileNameBase);
szTexDvi = sprintf("%s%s_doc.dvi", szTmpPrefix, szFileNameBase);
szTexLog = sprintf("%s%s_doc.log", szTmpPrefix, szFileNameBase);
szTexAux = sprintf("%s%s_doc.aux", szTmpPrefix, szFileNameBase);
szTexInpPref = sprintf("%s%s_inp", szTmpPrefix, szFileNameBase);
szTexInp = sprintf("%s.tex", szTexInpPref);
szTexCreator = sprintf("%s.create", szTexInpPref);
szTexSiz = sprintf("%s.size", szTexInpPref);
if (iPdf)
szCommand = sprintf("%s -L pdftex_p %s -p %s %s %s", cmdFig2dev, szRangeList, szTexInpPref, szFigFile, szTexInp);
else
szCommand = sprintf("%s -L pstex_p %s -p %s %s %s", cmdFig2dev, szRangeList, szTexInpPref, szFigFile, szTexInp);
debug("%s\n", szCommand);
system(szCommand);
szCommand = sprintf("./%s", szTexCreator);
debug("%s\n", szCommand);
system(szCommand);
# check if there is an own hederfile to include
if (aOptions["s"] == "")
aOptions["s"] = "times";
if (aOptions["H"] == "")
{
szHeader = sprintf("\\documentclass{article}\n\
\\usepackage{german,amssymb,amsmath}\n\
\\usepackage{%s}", aOptions["s"]);
}
else
szHeader = sprintf("\\input{%s}\n", aOptions["H"]);
szHeader = sprintf("%s\n\
\\usepackage{color}\n\
\\usepackage{ifpdf}\n\
\\setlength{\\textwidth}{100cm}\n\
\\setlength{\\textheight}{100cm}\n\
\\setlength{\\topmargin}{-1in}\n\
\\setlength{\\headsep}{0pt}\n\
\\setlength{\\headheight}{0pt}\n\
\\setlength{\\oddsidemargin}{-1in}\n\
\\parindent=0cm\n\
\\ifpdf\n\
\\usepackage[pdftex]{graphicx}\n\
\\DeclareGraphicsExtensions{.pdf,.png,.jpg}\n\
\\usepackage{epsfig}\n\
\\input{%s}\n\
\\else\n\
\\usepackage{graphicx}\n\
\\usepackage{epsfig}\n\
\\fi\n\
", szHeader, szTexSiz);
szCommand = sprintf("%s > %s << EOF\n\
%s\\begin{document}\n\
\\pagestyle{empty}\n\
\\input{%s}\n\
\\end{document}\n\
EOF", cmdCat, szTexDoc, szHeader, szTexInp);
if (aOptions["d"] != "")
debug("%s\n", szCommand);
system(szCommand);
if (iPdf)
{
szCommand = sprintf("%s -interaction batchmode %s", cmdPdftex, szTexDoc);
debug("%s\n", szCommand);
iReturn = system(szCommand);
if (iReturn)
{
szCommand = sprintf("%s %s | %s +G", cmdCat, szTexLog, cmdLess);
system (szCommand);
}
else
{
szCommand = sprintf("%s %s %s", cmdMv, szTexPdf, szPdfFile);
debug("%s\n", szCommand);
system(szCommand);
}
}
else
{
szCommand = sprintf("%s -interaction batchmode %s", cmdLatex, szTexDoc);
debug("%s\n", szCommand);
iReturn = system(szCommand);
if (iReturn)
{
szCommand = sprintf("%s %s | %s +G", cmdCat, szTexLog, cmdLess);
system (szCommand);
}
else
{
szCommand = sprintf("%s -q -E %s -o %s 2>&1 > /dev/null", cmdDvips, szTexDvi, szEpsFile);
debug("%s\n", szCommand);
system(szCommand);
}
}
if ( ! aOptions["d"])
{
szCommand = sprintf("./%s -r", szTexCreator);
debug("%s\n", szCommand);
system(szCommand);
}
if ( ! aOptions["d"])
{
szCommand = sprintf("%s -f %s %s %s %s %s %s %s", cmdRm, szTexDoc, szTexLog, szTexAux, szTexDvi, szTexInp, szTexCreator, szTexPdf);
debug("%s\n", szCommand);
system(szCommand);
}
if (iPdf)
return (szPdfFile);
else
return (szEpsFile);
}
#########################################################################
#########################################################################
function getopt(sOptions, n, m, fHuntParam, iSearchMinus, iSPos, iCLen, iHuntSwitches, szSwChar, szOptChar) {
# Options: Flagoptions: %f
# Parameter: $p
n = 1; # index in argv
m = 1; # processed entries in argv finally it points to the firs$
iSearchMinus = 1; # indicate that a switch leading sign minus is expected
# check for initial -- to separate the gawk switches from the script switches
if (ARGV[n] == "--")
n++;
while (n < ARGC)
{
iHuntSwitches = 0;
iCLen = length(ARGV[n]);
szSwChar = substr(ARGV[n], 1, 1);
if ((szSwChar == "-") || (szSwChar == "+"))
{
if ((iSearchMinus == 0) || fHuntParam)
usage();
iHuntSwitches = 1;
iSPos = 2;
fHuntParam = 0;
}
else
{
iSPos = 1;
if (fHuntParam == 0)
iSearchMinus = 0;
}
while (iSPos <= iCLen)
{
if (iHuntSwitches)
{
szOptChar = substr(ARGV[n], iSPos, 1);
iOPos = index(sOptions, szOptChar);
if (iOPos == 0)
{
printf("unknown option \"%s\"\n", szOptChar);
usage();
}
if ((substr(sOptions, iOPos - 1, 1) == "&") || ((substr(sOptions, iOPos - 1, 1) == "%") && (szSwChar == "-")))
{
aOptions[szOptChar] = szSwChar;
iSPos = iSPos + 1;
}
else if ((substr(sOptions, iOPos - 1, 1) == "$") && (szSwChar == "-"))
{
fHuntParam = 1;
iHuntSwitches = 0;
iSPos = iSPos + 1;
}
else
usage();
}
else if (fHuntParam)
{
fHuntParam = 0;
aOptions[szOptChar] = substr(ARGV[n], iSPos, iCLen + 1 - iSPos);
iSPos = iCLen + 1;
}
else
{
ARGV[m++] = ARGV[n];
iSPos = iCLen + 1;
}
}
n = n + 1;
}
ARGC = m;
}
#########################################################################
#########################################################################
function usage() {
print "usage: fig2mpdf [-|+lm] [-eiIGvV] [-p <ranges>] [-g <gapwidth>] [-s <style>] [-H <headerfile>] file\n\
\n\
-|+l set|reset latex call\n\
-e create an eps file instead of a pdf\n\
-|+m set|reset multilayer creation\n\
-p <ranges> colon separated list of layer ranges a-b,c,d-e,...\n\
-i do include the deepest range in all figures\n\
(the one with the higest level number)\n\
-I include all lower ranges (pyramide mode)\n\
-g <gap> set layer gapwidth for automatically detecting ranges (default:0)\n\
-s <style> replace \\usepackage{times} by \\usepackage{<style>} in the latex commands\n\
-H <header> use file <header> for creating tex documents (only\n\
\\begin{document}...\\end{document} is set by fig2mpdf)\n\
-G name multilayer files in PGF file name format <name>.page<no>.<ext>\n\
-v be verbose\n\
-V print out the version of fig2mpdf\n";
exit 1;
}
' -- $*