Diff for /loncom/xml/lonplot.pm between versions 1.140 and 1.143

version 1.140, 2008/05/20 10:53:07 version 1.143, 2008/05/27 10:40:30
Line 819  sub parse_label { Line 819  sub parse_label {
     return $result;      return $result;
 }  }
   
   #
   #  Note that there are severe restrictions on font selection in the
   # ps driver now.  later in life Gnuplot is supposed to support
   # utf-8 fonts in the posts script driver.  When this happens,
   # the tex entries with comments that include the word <FIX>
   # should be changed to print the correct glyphs rather than some
   # approximation or fallback of what is intended.
   
 my %lookup =   my %lookup = 
    (  # Greek alphabet:     (  # Greek alphabet:
Line 888  my %lookup = Line 895  my %lookup =
       '#134'          => {'tex' => '{/Text \262}',    'web' => "\x{2020}"},        '#134'          => {'tex' => '{/Text \262}',    'web' => "\x{2020}"},
       '#135'          => {'tex' => '{/Text \263}',    'web' => "\x{2021}"},        '#135'          => {'tex' => '{/Text \263}',    'web' => "\x{2021}"},
       '#136'          => {'tex' => '\\\\^',           'web' => '\\\\^'},        '#136'          => {'tex' => '\\\\^',           'web' => '\\\\^'},
       '#137'          => {'tex' => '{/Text \275}',    'web' => "\x{2030}"},        '#137'          => {'tex' => '%o',              'web' => "\x{2030}"}, # Per Mille <FIX>
       '#138'          => {'tex' => 'S',               'web' => "\x{160}"}, # no S-caron in ps fonts.        '#138'          => {'tex' => 'S',               'web' => "\x{160}"}, # S-Caron <FIX>
       '#139'          => {'tex' => '<',               'web' => '<'},        '#139'          => {'tex' => '<',               'web' => '<'},
       '#140'          => {'tex' => '{/Text \352}',    'web' => "\x{152}"},        '#140'          => {'tex' => 'AE',              'web' => "\x{152}"}, # AE ligature <FIX>
       '#145'          => {'tex' => '\140',            'web' => "\x{2018}"},        '#145'          => {'tex' => '\140',            'web' => "\x{2018}"},
       '#146'          => {'tex' => '\47',             'web' => "\x{2019}"},        '#146'          => {'tex' => '\47',             'web' => "\x{2019}"},
       '#147'          => {'tex' => '{/Text \252}',    'web' => "\x{201c}"},        '#147'          => {'tex' => '\140\140',        'web' => "\x{201c}"}, # Left " <FIX>
       '#148'          => {'tex' => '{/Text \315}',    'web' => '\\"'},        '#148'          => {'tex' => '\47\47',          'web' => '\\"'},      # Right " <FIX>
       '#149'          => {'tex' => '{/Symbol \267}',  'web' => "\x{2022}"},        '#149'          => {'tex' => '{/Symbol \267}',  'web' => "\x{2022}"},
       '#150'          => {'tex' => '{/Text \55}',     'web' => "\x{2013}"},  #Untested here en dash        '#150'          => {'tex' => '{/Text \55}',     'web' => "\x{2013}"},  # en dash
       '#151'          => {'tex' => '{/Symbol \55}',   'web' => "\x{2014}"},  # em dash        '#151'          => {'tex' => '{/Symbol \55}',   'web' => "\x{2014}"},  # em dash
       '#152'          => {'tex' => '~',               'web' => '~'},        '#152'          => {'tex' => '\\\\~',           'web' => '\\\\~'},
       '#153'          => {'tex' => '{/Text \324}',    'web' => "\x{2122}"}, # trademark        '#153'          => {'tex' => '{/Symbol \324}',  'web' => "\x{2122}"}, # trademark
   
       # Accented letters, and other furreign language glyphs.        # Accented letters, and other furreign language glyphs.
   
       '#154'          => {'tex' => 's',               'web' => "\x{161}"}, # small s-caron no ps.        '#154'          => {'tex' => 's',               'web' => "\x{161}"}, # small s-caron no ps.
       '#155'          => {'tex' => '>',               'web' => '\76'},     # >        '#155'          => {'tex' => '>',               'web' => '\76'},     # >
       '#156'          => {'tex' => '{/Text \372}',    'web' => "\x{153}"}, # oe ligature.        '#156'          => {'tex' => '{/Text \366}',    'web' => "\x{153}"}, # oe ligature.<FIX>
       '#159',         => {'tex' => 'Y',               'web' => "\x{178}"}, # Y-umlaut - can't print        '#159',         => {'tex' => 'Y',               'web' => "\x{178}"}, # Y-umlaut - can't print <FIX>
       '(nbsp|#160)'   => {'tex' => ' ',               'web' => ' '},       # non breaking space.        '(nbsp|#160)'   => {'tex' => ' ',               'web' => ' '},       # non breaking space.
       '(iexcl|#161)'  => {'tex' => '{/Text \241}',    'web' => "\x{a1}"},  # inverted !        '(iexcl|#161)'  => {'tex' => '{/Text \241}',    'web' => "\x{a1}"},  # inverted !
       '(cent|#162)'   => {'tex' => '{/Text \242}',    'web' => "\x{a2}"},  # Cent currency.        '(cent|#162)'   => {'tex' => '{/Text \242}',    'web' => "\x{a2}"},  # Cent currency.
       '(pound|#163}'  => {'tex' => '{/Text \243}',    'web' => "\x{a3}"},  # GB Pound currency.        '(pound|#163)'  => {'tex' => '{/Text \243}',    'web' => "\x{a3}"},  # GB Pound currency.
       '(curren|#164)' => {'tex' => '{/Text \250}',    'web' => "\x{a4}"},  # Generic currency symb.        '(curren|#164)' => {'tex' => '{/ZapfDingbats \161}','web' => "\x{a4}"},  # Generic currency symb. <FIX>
       '(yen|#165)'    => {'tex' => '{/Text \245}',    'web' => "\x{a5}"},  # Yen currency.        '(yen|#165)'    => {'tex' => '{/Text \245}',    'web' => "\x{a5}"},  # Yen currency.
       '(brvbar|#166)' => {'tex' => '{/Symbol \174}',  'web' => "\x{a6}"},  # Broken vert bar no print.        '(brvbar|#166)' => {'tex' => '{/Symbol \174}',  'web' => "\x{a6}"},  # Broken vert bar no print.
       '(sect|#167)'   => {'tex' => '{\247}',          'web' => "\x{a7}"},  # Section symbol.        '(sect|#167)'   => {'tex' => '{\247}',          'web' => "\x{a7}"},  # Section symbol.
Line 921  my %lookup = Line 928  my %lookup =
       '(ordf|#170)'   => {'tex' => '{/Text \343}',    'web' => "\x{aa}"},  # Feminine ordinal.        '(ordf|#170)'   => {'tex' => '{/Text \343}',    'web' => "\x{aa}"},  # Feminine ordinal.
       '(laquo|#171)'  => {'tex' => '{/Text \253}',    'web' => "\x{ab}"},  # << quotes.        '(laquo|#171)'  => {'tex' => '{/Text \253}',    'web' => "\x{ab}"},  # << quotes.
       '(not|#172)'    => {'tex' => '\254',            'web' => "\x{ac}"},  # Logical not.        '(not|#172)'    => {'tex' => '\254',            'web' => "\x{ac}"},  # Logical not.
       '(shy|#173)'    => {'tex' => '-',               'web' => "\x{ad}"},  # soft hyphen.        '(shy|#173)'    => {'tex' => '\255',               'web' => "\x{ad}"},  # soft hyphen.
       '(reg|#174)'    => {'tex' => '{/Symbol \342}',  'web' => "\x{ae}"},  # Registered tm.        '(reg|#174)'    => {'tex' => '{/Symbol \342}',  'web' => "\x{ae}"},  # Registered tm.
       '(macr|#175)'   => {'tex' => '^{-}',            'web' => "\x{af}"},  # 'naked' macron (overbar).        '(macr|#175)'   => {'tex' => '^{\255}',            'web' => "\x{af}"},  # 'naked' macron (overbar).
       '(deg|#176)'    => {'tex' => '{/Text \312}',    'web' => "\x{b0}"},  # Degree symbo..        '(deg|#176)'    => {'tex' => '{/Text \260}',    'web' => "\x{b0}"},  # Degree symbo..`
       '(plusmn|#177)' => {'tex' => '{/Symbol \261}',  'web' => "\x{b1}"},  # +/- symbol.        '(plusmn|#177)' => {'tex' => '{/Symbol \261}',  'web' => "\x{b1}"},  # +/- symbol.
       '(sup2|#178)'   => {'tex' => '^2',              'web' => "\x{b2}"},  # Superscript 2.        '(sup2|#178)'   => {'tex' => '^2',              'web' => "\x{b2}"},  # Superscript 2.
       '(sup3|#179)'   => {'tex' => '^3',              'web' => "\x{b3}"},  # Superscript 3.        '(sup3|#179)'   => {'tex' => '^3',              'web' => "\x{b3}"},  # Superscript 3.
       '(acute|#180)'  => {'tex' => '{/Text \302}',    'web' => "\x{b4}"},  # 'naked' acute accent.        '(acute|#180)'  => {'tex' => '{/Text \222}',    'web' => "\x{b4}"},  # 'naked' acute accent.
       '(micro|#181)'  => {'tex' => '{/Symbol \155}',  'web' => "\x{b5}"},  # Micro (small mu).        '(micro|#181)'  => {'tex' => '{/Symbol \155}',  'web' => "\x{b5}"},  # Micro (small mu).
       '(para|#182)'   => {'tex' => '{/Text \266}',    'web' => "\x{b6}"},  # Paragraph symbol.        '(para|#182)'   => {'tex' => '{/Text \266}',    'web' => "\x{b6}"},  # Paragraph symbol.
       '(middot|#183)' => {'tex' => '^.',              'web' => "\x{b7}"},  # middle dot (maybe text 267 is better)?        '(middot|#183)' => {'tex' => '\267',            'web' => "\x{b7}"},  # middle dot
       '(cedil|#184)'  => {'tex' => '\233',            'web' => "\x{b8}"},  # 'naked' cedilla.        '(cedil|#184)'  => {'tex' => '\233',            'web' => "\x{b8}"},  # 'naked' cedilla.
       '(sup1|#185)'   => {'tex' => '^1',              'web' => "\x{b9}"},  # superscript 1.        '(sup1|#185)'   => {'tex' => '^1',              'web' => "\x{b9}"},  # superscript 1.
       '(ordm|#186)'   => {'tex' => '\353',            'web' => "\x{ba}"},  # masculine ordinal.        '(ordm|#186)'   => {'tex' => '{\260}',          'web' => "\x{ba}"},  # masculine ordinal.
       '(raquo|#187)', => {'tex' => '\273',            'web' => "\x{bb}"},  # Right angle quotes.        '(raquo|#187)', => {'tex' => '\273',            'web' => "\x{bb}"},  # Right angle quotes.
       '(frac14|#188)' => {'tex' => '\274',            'web' => "\x{bc}"},  # 1/4.        '(frac14|#188)' => {'tex' => '\274',            'web' => "\x{bc}"},  # 1/4.
       '(frac12|#189)' => {'tex' => '\275',            'web' => "\x{bd}"},  # 1/2.        '(frac12|#189)' => {'tex' => '\275',            'web' => "\x{bd}"},  # 1/2.
Line 979  my %lookup = Line 986  my %lookup =
       '(auml|#228)'   => {'tex' => '\344',            'web' => "\x{e4}"},  # a umlaut        '(auml|#228)'   => {'tex' => '\344',            'web' => "\x{e4}"},  # a umlaut
       '(aring|#229)'  => {'tex' => '\345',            'web' => "\x{e5}"},  # a ring on top.        '(aring|#229)'  => {'tex' => '\345',            'web' => "\x{e5}"},  # a ring on top.
       '(aelig|#230)'  => {'tex' => '\346',            'web' => "\x{e6}"},  # ae ligature.        '(aelig|#230)'  => {'tex' => '\346',            'web' => "\x{e6}"},  # ae ligature.
       '{ccedil|#231)' => {'tex' => '\347',            'web' => "\x{e7}"},  # C cedilla        '(ccedil|#231)' => {'tex' => '\347',            'web' => "\x{e7}"},  # C cedilla
       '(egrave|#232)' => {'tex' => '\350',            'web' => "\x{e8}"},  # e accent grave.        '(egrave|#232)' => {'tex' => '\350',            'web' => "\x{e8}"},  # e accent grave.
       '(eacute|#233)' => {'tex' => '\351',            'web' => "\x{e9}"},  # e accent acute.        '(eacute|#233)' => {'tex' => '\351',            'web' => "\x{e9}"},  # e accent acute.
       '(ecirc|#234)'  => {'tex' => '\352',            'web' => "\x{ea}" }, # e circumflex.        '(ecirc|#234)'  => {'tex' => '\352',            'web' => "\x{ea}" }, # e circumflex.
       '(euml|#235)'   => {'tex' => '\353',            'web' => "\x{eb}"},  # e umlaut.        '(euml|#235)'   => {'tex' => '\353',            'web' => "\x{eb}"},  # e umlaut.
       '(igrave|#236)' => {'tex' => '\354',            'web' => "\x{ec}"},  # i grave.        '(igrave|#236)' => {'tex' => '\354',            'web' => "\x{ec}"},  # i grave.
       '(iacute|#237}' => {'tex' => '\355',            'web' => "\x{ed}"},  # i acute.        '(iacute|#237)' => {'tex' => '\355',            'web' => "\x{ed}"},  # i acute.
       '(icirc|#238}'  => {'tex' => '\356',            'web' => "\x{ee}"},  # i circumflex.        '(icirc|#238)'  => {'tex' => '\356',            'web' => "\x{ee}"},  # i circumflex.
       '(iuml|#239)'   => {'tex' => '\357',            'web' => "\x{ef}"},  # i umlaut.        '(iuml|#239)'   => {'tex' => '\357',            'web' => "\x{ef}"},  # i umlaut.
       '(eth|#240)'    => {'tex' => '\360',            'web' => "\x{f0}"},  # Icelandic eth.        '(eth|#240)'    => {'tex' => '\360',            'web' => "\x{f0}"},  # Icelandic eth.
       '(ntilde|#241)' => {'tex' => '\361',            'web' => "\x{f1}"},  # n tilde.        '(ntilde|#241)' => {'tex' => '\361',            'web' => "\x{f1}"},  # n tilde.
       '(ograve|#242)' => {'tex' => '\362',            'web' => "\x{f2}"},  # o grave.        '(ograve|#242)' => {'tex' => '\362',            'web' => "\x{f2}"},  # o grave.
       '(oacute|#243)' => {'tex' => '\363',            'web' => "\x{f3}"},  # o acute.        '(oacute|#243)' => {'tex' => '\363',            'web' => "\x{f3}"},  # o acute.
       '(ocirc'|#244)' => {'tex' => '\364',            'web' => "\x{f4}"},  # o circumflex.        '(ocirc|#244)'  => {'tex' => '\364',            'web' => "\x{f4}"},  # o circumflex.
       '(otilde|#245)' => {'tex' => '\365',            'web' => "\x{f5}"},  # o tilde.        '(otilde|#245)' => {'tex' => '\365',            'web' => "\x{f5}"},  # o tilde.
       '(ouml|#246)'   => {'tex' => '\366',            'web' => "\x{f6}"},  # o umlaut.        '(ouml|#246)'   => {'tex' => '\366',            'web' => "\x{f6}"},  # o umlaut.
       '(divide|#247)' => {'tex' => '\367',            'web' => "\x{f7}"},  # division symbol        '(divide|#247)' => {'tex' => '\367',            'web' => "\x{f7}"},  # division symbol
Line 1007  my %lookup = Line 1014  my %lookup =
               
       # Latin extended A entities:        # Latin extended A entities:
   
       '(OElig|#338)'  => {'tex' => '{/Text \352}',   'web' => "\x{152}"},  # OE ligature.        '(OElig|#338)'  => {'tex' => '{/Text \326}',   'web' => "\x{152}"},  # OE ligature.
       '(oelig|#339)'  => {'tex' => '{/Text \372}',   'web' => "\x{153}"},  # oe ligature.        '(oelig|#339)'  => {'tex' => '{/Text \366}',   'web' => "\x{153}"},  # oe ligature.
       '(Scaron|#352)' => {'tex' => 'S',              'web' => "\x{160}"},  # S caron no printable.        '(Scaron|#352)' => {'tex' => 'S',              'web' => "\x{160}"},  # S caron no printable.
       '(scaron|#353)' => {'tex' => 's',              'web' => "\x{161}"},  # s caron no printable.        '(scaron|#353)' => {'tex' => 's',              'web' => "\x{161}"},  # s caron no printable.
       '(Yuml|#376)'   => {'tex' => 'Y',              'web' => "\x{178}"},  # Y umlaut - no printable.        '(Yuml|#376)'   => {'tex' => 'Y',              'web' => "\x{178}"},  # Y umlaut - no printable.
   
       # Latin extended B.        # Latin extended B.
   
       '(fnof|#402)'  => {'tex' =>'{/Symbol 246}',    'web' => "\x{192}"},  # f with little hook.        '(fnof|#402)'  => {'tex' =>'{/Symbol \246}',    'web' => "\x{192}"},  # f with little hook.
   
       # Standalone accents:        # Standalone accents:
   
Line 1065  my %lookup = Line 1072  my %lookup =
   
       # Arrows  of various types and directions.        # Arrows  of various types and directions.
       '(larr|#8592)'    => {'tex' => '{/Symbol \254}', 'web' => "\x{2190}"}, # <--        '(larr|#8592)'    => {'tex' => '{/Symbol \254}', 'web' => "\x{2190}"}, # <--
       '(uarr|#8593}'    => {'tex' => '{/Symbol \255}', 'web' => "\x{2191}"}, # up arrow.        '(uarr|#8593)'    => {'tex' => '{/Symbol \255}', 'web' => "\x{2191}"}, # up arrow.
       '(rarr|#8594)'    => {'tex' => '{/Symbol \256}', 'web' => "\x{2192}"}, # -->        '(rarr|#8594)'    => {'tex' => '{/Symbol \256}', 'web' => "\x{2192}"}, # -->
       '(darr|#8595)'    => {'tex' => '{/Symbol \257}', 'web' => "\x{2193}"}, # down arrow.        '(darr|#8595)'    => {'tex' => '{/Symbol \257}', 'web' => "\x{2193}"}, # down arrow.
       '(harr|#8596)'    => {'tex' => '{/Symbol \253}', 'web' => "\x{2194}"}, # <-->        '(harr|#8596)'    => {'tex' => '{/Symbol \253}', 'web' => "\x{2194}"}, # <-->
Line 1101  my %lookup = Line 1108  my %lookup =
       '(there4|#8756)'  => {'tex' => '{/Symbol \134}',  'web' => "\x{2234}"}, # Therefore triple dots.        '(there4|#8756)'  => {'tex' => '{/Symbol \134}',  'web' => "\x{2234}"}, # Therefore triple dots.
       '(sim|#8764)'     => {'tex' => '~',               'web' => "\x{223c}"}, # Simlar to.        '(sim|#8764)'     => {'tex' => '~',               'web' => "\x{223c}"}, # Simlar to.
       '(cong|#8773)'    => {'tex' => '{/Symbol \100}',  'web' => "\x{2245}"}, # Congruent to/with.        '(cong|#8773)'    => {'tex' => '{/Symbol \100}',  'web' => "\x{2245}"}, # Congruent to/with.
               '(asymp|#8776)'   => {'tex' => '{/Symbol \278}',  'web' => "\x{2248}"}, # Asymptotic to.
         '(ne|#8800)'      => {'tex' => '{/Symbol \271}',  'web' => "\x{2260}"}, # not equal to.
         '(equiv|#8801)'   => {'tex' => '{/Symbol \272}',  'web' => "\x{2261}"}, # Equivalent to.
         '(le|8804)'       => {'tex' => '{/Symbol \243}',  'web' => "\x{2264}"}, # Less than or equal to.
         '(ge|8805)'       => {'tex' => '{/Symbol \263}',  'web' => "\x{2265}"}, # Greater than or equal to
         '(sub|8834)'      => {'tex' => '{/Symbol \314}',  'web' => "\x{2282}"}, # Subset of.
         '(sup|8835)'      => {'tex' => '{/Symbol \311}',  'web' => "\x{2283}"}, # Super set of.
         '(nsub|8836)'     => {'tex' => '{/Symbol \313}',  'web' => "\x{2284}"}, # not subset of.
         '(sube|8838)'     => {'tex' => '{/Symbol \315}',  'web' => "\x{2286}"}, # Subset or equal.
         '(supe|8839)'     => {'tex' => '{/Symbol \312}',  'web' => "\x{2287}"}, # Superset or equal
         '(oplus|8853)'    => {'tex' => '{/Symbol \305}',  'web' => "\x{2295}"}, # O with plus inside
         '(otimes|8855)'   => {'tex' => '{/Symbol \304}',  'web' => "\x{2297}"}, # O with times.
         '(perp|8869)'     => {'tex' => '{/Symbol \136}',  'web' => "\x{22a5}"}, # Perpendicular.
         '(sdot|8901)'     => {'tex' => '{/Symbol \227}',  'web' => "\x{22c5}"}, # Dot operator.
   
         # Misc. technical symbols:
   
         '(lceil|8698)'    => {'tex' => '{/Symbol \351}',  'web' => "\x{2308}"}, # Left ceiling.
         '(rceil|8969)'    => {'tex' => '{/Symbol \371}',  'web' => "\x{2309}"}, # Right ceiling.
         '(lfloor|8970)'   => {'tex' => '{/Symbol \353}',  'web' => "\x{230a}"}, # Left floor.
         '(rfloor|8971)'   => {'tex' => '{/Symbol \373}',  'web' => "\x{230b}"}, # Right floor.
         '(lang|9001)'     => {'tex' => '{/Symbol \341}',  'web' => "\x{2329}"}, # Left angle bracket.
         '(rang|9002)'     => {'tex' => '{/Symbol \361}',  'web' => "\x{232a}"}, # Right angle bracket.
   
         # Gemoetric shapes.
   
         '(loz|9674)'      => {'tex' => '{/Symbol \340}',  'web' => "\x{25ca}"}, # Lozenge.
   
         # Misc. symbols
   
         '(spades|9824)'   => {'tex' => '{/Symbol \252}', 'web' => "\x{2660}"}, 
         '(clubs|9827)'    => {'tex' => '{/Symbol \247}', 'web' => "\x{2663}"}, 
         '(hearts|9829)'   => {'tex' => '{/Symbol \251}', 'web' => "\x{2665}"}, 
         '(diams|9830)'    => {'tex' => '{/Symbol \250}', 'web' => "\x{2666}"}
   
     );      );
   
Line 1537  sub write_gnuplot_file { Line 1577  sub write_gnuplot_file {
  $gnuplot_input .= $fontsize;   $gnuplot_input .= $fontsize;
  $gnuplot_input .= "\nset output \"/home/httpd/perl/tmp/".   $gnuplot_input .= "\nset output \"/home/httpd/perl/tmp/".
     &unescape($filename).".eps\"\n";      &unescape($filename).".eps\"\n";
    $gnuplot_input .= "set encoding iso_8859_1\n"; # Get access to extended font.
   
     }      }
     # cartesian or polar plot?      # cartesian or polar plot?
     if (lc($Apache::lonplot::plot{'plottype'}) eq 'polar') {      if (lc($Apache::lonplot::plot{'plottype'}) eq 'polar') {

Removed from v.1.140  
changed lines
  Added in v.1.143


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>