⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pm3dcompress.awk

📁 智能画图软件
💻 AWK
字号:
# pm3dCompress.awk - (c) Petr Mikulik; 1996/1997/1999/2002## This awk script tries to compress a postscript file created by pm3d or# gnuplot with pm3d splotting mode (limits: compresses only the first pm3d# splot map there if in multiplot mode).### Installation:#	Copy this file into a directory listed in your AWKPATH # Running:#	awk -f pm3dCompress.awk _original_.ps >reduced.ps## Hint: make a script file/abbreviation/alias, e.g. under VMS#	pm3dcompress:=="$disk:[dir]gawk.exe -f disk:[dir]pm3dCompress.awk"## Note: use GNU awk whenever possible (HP awk does not have /dev/stderr, for# instance).### Strategy: this program browses the given .ps file and makes a list of all# frequently used chains of postscript commands. If this list is not too large,# then it replaces these chains by abbreviated commands.#   This may reduce the size of the postscript file about 50 %, which is not# so bad if you want to store these files for a later use (and with the same # functionality, of course). ### (c) Petr Mikulik, mikulik@physics.muni.cz, http://www.sci.muni.cz/~mikulik/## Distribution policy: this file must be distributed together with the # whole stuff of pm3d or gnuplot program.## This is version: 2. 3. 2002#     2. 3. 2002 - updated because of stroke in /g definition#    15. 1. 1999 - new staff in pm3d and gnuplot/pm3d#     9. 7. 1997 - update#    16. 3. 1997 - first (?) version#BEGIN {err = "/dev/stderr"if (ARGC!=2) {  print "pm3dCompress.awk --- (c) Petr Mikulik, Brno. Version 2. 3. 2002" >err  print "Compression of pm3d .ps files. See the header of this file for more info." >err  print "Usage:  awk -f pm3dCompress.awk inp_file.ps >out_file.ps" >err  exit(1)  }getlineprint "Please wait, it may take a while (input file "ARGV[1]" is read twice)." >errwhile ($1!="%pm3d_map_begin")   if (getline<=0) { 	print "No pm3d piece found in the input file, exiting." >err	exit(7) }PrintMapping=$0nList=0while ($1!="%pm3d_map_end") {  if (getline<=0) {	print "Corrupted pm3d block---end not found, exiting." >err	exit(8) }  i=index($0,"N");  if (i>0) {    S=substr($0,i,length($0))  # M including    # is this string defined?    for (i=0; i<nList && List[i]!=S; i++);    if (i==nList) { # string is not in the list      List[i]=S; nList++;       if (nList>300) {	print "Defining more than 300 strings makes no sense, I think. Exiting, sorry." >err	exit(2) }      }    } # for all NR  }print "List of frequent strings contains "nList" elements." >err# now read the same file again the 3d part:getline <ARGV[1]while ($1!="%pm3d_map_begin") {   if ($1=="%%Creator:")     print $0", compressed by pm3dCompress.awk"  else if ($1=="/pmdict") {    $2+=nList; print }  else print  getline <ARGV[1]  }# now print the list as a new definitionprint "\t\t\t\t\t%pm3dCompress definitions"for (i=0; i<nList; i++)   print "/X"i" {"List[i]"} def"for (i=0; i<nList; i++) {  S=List[i]  sub("N ","2 index g N ",S)  print "/x"i" {"S"} def"  }print "\n"PrintMapping"\n"# now substitute the new definitions: while ($1!="%pm3d_map_end") {  getline <ARGV[1]; i=index($0,"N");  if (i>0) {    S=substr($0,i,length($0))  # M including    # find the definition in the list    for (m=0; m<nList && List[m]!=S; m++);    S=substr($0,1,i-1)    if (index(S," g ")) {	gsub(" g "," ",S);	S=S"x"m	}      else	S=S"X"m    print S    }    else print  }# read the rest of the fileflag = (getline <ARGV[1] ); while (flag>0) { print; flag = (getline <ARGV[1] ); }close(ARGV[1])}# eof pm3dCompress.awk

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -