version 1.132, 2007/12/05 23:22:18
|
version 1.140, 2008/05/20 10:53:07
|
Line 91 BEGIN {
|
Line 91 BEGIN {
|
my $max_str_len = 50; # if a label, title, xlabel, or ylabel text |
my $max_str_len = 50; # if a label, title, xlabel, or ylabel text |
# is longer than this, it will be truncated. |
# is longer than this, it will be truncated. |
|
|
|
my %linetypes = |
|
( |
|
solid => 1, |
|
dashed => 0 |
|
); |
|
|
my %linestyles = |
my %linestyles = |
( |
( |
lines => 2, # Maybe this will be used in the future |
lines => 2, # Maybe this will be used in the future |
Line 385 my %label_defaults =
|
Line 391 my %label_defaults =
|
description => 'justification of the label text on the plot', |
description => 'justification of the label text on the plot', |
edit_type => 'choice', |
edit_type => 'choice', |
choices => ['left','right','center'] |
choices => ['left','right','center'] |
|
}, |
|
rotate => { |
|
default => 0, |
|
test => $real_test, |
|
description => 'Rotation of label (degrees)', |
|
edit_type => 'entry', |
|
size => '10', |
} |
} |
); |
); |
|
|
Line 490 my %axis_defaults =
|
Line 503 my %axis_defaults =
|
|
|
); |
); |
|
|
my @curve_edit_order = ('color','name','linestyle','linewidth','pointtype','pointsize','limit'); |
my @curve_edit_order = ('color','name','linestyle','linewidth','linetype','pointtype','pointsize','limit'); |
|
|
my %curve_defaults = |
my %curve_defaults = |
( |
( |
Line 511 my %curve_defaults =
|
Line 524 my %curve_defaults =
|
linestyle => { |
linestyle => { |
default => 'lines', |
default => 'lines', |
test => $linestyle_test, |
test => $linestyle_test, |
description => 'Line style', |
description => 'Plot with:', |
edit_type => 'choice', |
edit_type => 'choice', |
choices => [keys(%linestyles)] |
choices => [keys(%linestyles)] |
}, |
}, |
linewidth => { |
linewidth => { |
default => 1, |
default => 1, |
test => $int_test, |
test => $int_test, |
description => 'Line width (may not apply to all line styles)', |
description => 'Line width (may not apply to all plot styles)', |
edit_type => 'choice', |
edit_type => 'choice', |
choices => [1,2,3,4,5,6,7,8,9,10] |
choices => [1,2,3,4,5,6,7,8,9,10] |
}, |
}, |
|
linetype => { |
|
default => 'solid', |
|
test => sub {$_[0]=~/^(solid|dashed)$/}, |
|
description => 'Line type (may not apply to all plot styles)', |
|
edit_type => 'choice', |
|
choices => ['solid', 'dashed'] |
|
}, |
pointsize => { |
pointsize => { |
default => 1, |
default => 1, |
test => $pos_real_test, |
test => $pos_real_test, |
description => 'Point size (may not apply to all line styles)', |
description => 'Point size (may not apply to all plot styles)', |
edit_type => 'entry', |
edit_type => 'entry', |
size => '5' |
size => '5' |
}, |
}, |
pointtype => { |
pointtype => { |
default => 1, |
default => 1, |
test => $int_test, |
test => $int_test, |
description => 'Point type (may not apply to all line styles)', |
description => 'Point type (may not apply to all plot styles)', |
edit_type => 'choice', |
edit_type => 'choice', |
choices => [0,1,2,3,4,5,6] |
choices => [0,1,2,3,4,5,6] |
}, |
}, |
limit => { |
limit => { |
default => 'closed', |
default => 'closed', |
test => sub {$_[0]=~/^(closed|x1|x2|y1|y2)$/}, |
test => sub {$_[0]=~/^(above|below|closed|x1|x2|y1|y2)$/}, |
description => 'Point to fill -- for filledcurves', |
description => 'Point to fill -- for filledcurves', |
edit_type => 'choice', |
edit_type => 'choice', |
choices => ['closed','x1','x2','y1','y2'] |
choices => ['above', 'below', 'closed','x1','x2','y1','y2'] |
}, |
}, |
); |
); |
|
|
Line 801 sub parse_label {
|
Line 821 sub parse_label {
|
|
|
|
|
my %lookup = |
my %lookup = |
('(pi|#960)' => {'tex' => '{/Symbol p}', 'web' => "\x{3C0}"},); |
( # Greek alphabet: |
|
|
|
'(Alpha|#913)' => {'tex' => '{/Symbol A}', 'web' => "\x{391}"}, |
|
'(Beta|#914)' => {'tex' => '{/Symbol B}', 'web' => "\x{392}"}, |
|
'(Chi|#935)' => {'tex' => '{/Symbol C}', 'web' => "\x{3A7}"}, |
|
'(Delta|#916)' => {'tex' => '{/Symbol D}', 'web' => "\x{394}"}, |
|
'(Epsilon|#917)' => {'tex' => '{/Symbol E}', 'web' => "\x{395}"}, |
|
'(Phi|#934)' => {'tex' => '{/Symbol F}', 'web' => "\x{3A6}"}, |
|
'(Gamma|#915)' => {'tex' => '{/Symbol G}', 'web' => "\x{393}"}, |
|
'(Eta|#919)' => {'tex' => '{/Symbol H}', 'web' => "\x{397}"}, |
|
'(Iota|#921)' => {'tex' => '{/Symbol I}', 'web' => "\x{399}"}, |
|
'(Kappa|#922)' => {'tex' => '{/Symbol K}', 'web' => "\x{39A}"}, |
|
'(Lambda|#923)' => {'tex' => '{/Symbol L}', 'web' => "\x{39B}"}, |
|
'(Mu|#924)' => {'tex' => '{/Symbol M}', 'web' => "\x{39C}"}, |
|
'(Nu|#925)' => {'tex' => '{/Symbol N}', 'web' => "\x{39D}"}, |
|
'(Omicron|#927)' => {'tex' => '{/Symbol O}', 'web' => "\x{39F}"}, |
|
'(Pi|#928)' => {'tex' => '{/Symbol P}', 'web' => "\x{3A0}"}, |
|
'(Theta|#920)' => {'tex' => '{/Symbol Q}', 'web' => "\x{398}"}, |
|
'(Rho|#929)' => {'tex' => '{/Symbol R}', 'web' => "\x{3A1}"}, |
|
'(Sigma|#931)' => {'tex' => '{/Symbol S}', 'web' => "\x{3A3}"}, |
|
'(Tau|#932)' => {'tex' => '{/Symbol T}', 'web' => "\x{3A4}"}, |
|
'(Upsilon|#933)' => {'tex' => '{/Symbol U}', 'web' => "\x{3A5}"}, |
|
'(Omega|#937)' => {'tex' => '{/Symbol W}', 'web' => "\x{3A9}"}, |
|
'(Xi|#926)' => {'tex' => '{/Symbol X}', 'web' => "\x{39E}"}, |
|
'(Psi|#936)' => {'tex' => '{/Symbol Y}', 'web' => "\x{3A8}"}, |
|
'(Zeta|#918)' => {'tex' => '{/Symbol Z}', 'web' => "\x{396}"}, |
|
'(alpha|#945)' => {'tex' => '{/Symbol a}', 'web' => "\x{3B1}"}, |
|
'(beta|#946)' => {'tex' => '{/Symbol b}', 'web' => "\x{3B2}"}, |
|
'(chi|#967)' => {'tex' => '{/Symbol c}', 'web' => "\x{3C7}"}, |
|
'(delta|#948)' => {'tex' => '{/Symbol d}', 'web' => "\x{3B4}"}, |
|
'(epsilon|#949)' => {'tex' => '{/Symbol e}', 'web' => "\x{3B5}"}, |
|
'(phi|#966)' => {'tex' => '{/Symbol f}', 'web' => "\x{3C6}"}, |
|
'(gamma|#947)' => {'tex' => '{/Symbol g}', 'web' => "\x{3B3}"}, |
|
'(eta|#951)' => {'tex' => '{/Symbol h}', 'web' => "\x{3B7}"}, |
|
'(iota|#953)' => {'tex' => '{/Symbol i}', 'web' => "\x{3B9}"}, |
|
'(kappa|#954)' => {'tex' => '{/Symbol k}', 'web' => "\x{3BA}"}, |
|
'(lambda|#955)' => {'tex' => '{/Symbol k}', 'web' => "\x{3BB}"}, |
|
'(mu|#956)' => {'tex' => '{/Symbol m}', 'web' => "\x{3BC}"}, |
|
'(nu|#957)' => {'tex' => '{/Symbol n}', 'web' => "\x{3BD}"}, |
|
'(omicron|#959)' => {'tex' => '{/Symbol o}', 'web' => "\x{3BF}"}, |
|
'(pi|#960)' => {'tex' => '{/Symbol p}', 'web' => "\x{3C0}"}, |
|
'(theta|#952)' => {'tex' => '{/Symbol q}', 'web' => "\x{3B8}"}, |
|
'(rho|#961)' => {'tex' => '{/Symbol r}', 'web' => "\x{3C1}"}, |
|
'(sigma|#963)' => {'tex' => '{/Symbol s}', 'web' => "\x{3C3}"}, |
|
'(tau|#964)' => {'tex' => '{/Symbol t}', 'web' => "\x{3C4}"}, |
|
'(upsilon|#965)' => {'tex' => '{/Symbol u}', 'web' => "\x{3C5}"}, |
|
'(omega|#969)' => {'tex' => '{/Symbol w}', 'web' => "\x{3C9}"}, |
|
'(xi|#958)' => {'tex' => '{/Symbol x}', 'web' => "\x{3BE}"}, |
|
'(psi|#968)' => {'tex' => '{/Symbol y}', 'web' => "\x{3C8}"}, |
|
'(zeta|#950)' => {'tex' => '{/Symbol z}', 'web' => "\x{3B6}"}, |
|
'(thetasym|#977)' => {'tex' => '{/Symbol \165}', 'web' => "\x{3d1}"}, |
|
'(upsih|#978)' => {'tex' => '{/Symbol \241}', 'web' => "\x{3d2}"}, |
|
'(piv|#982)' => {'tex' => '{/Symbol \166}', 'web' => "\x{3d6}"}, |
|
|
|
|
|
# Punctuation: |
|
|
|
'(quot|#034)' => {'tex' => '\42', 'web' => '\42'}, |
|
'(amp|#038)' => {'tex' => '\46', 'web' => '\46'}, |
|
'(lt|#060)' => {'tex' => '\74', 'web' => '\74'}, |
|
'(gt|#062)' => {'tex' => '\76', 'web' => '\76'}, |
|
'#131' => {'tex' => '{/Symbol \246}', 'web' => "\x{192}"}, |
|
'#132' => {'tex' => '{/Text \271}', 'web' => "\x{201e}"}, |
|
'#133' => {'tex' => '{/Symbol \274}', 'web'=> "\x{2026}"}, |
|
'#134' => {'tex' => '{/Text \262}', 'web' => "\x{2020}"}, |
|
'#135' => {'tex' => '{/Text \263}', 'web' => "\x{2021}"}, |
|
'#136' => {'tex' => '\\\\^', 'web' => '\\\\^'}, |
|
'#137' => {'tex' => '{/Text \275}', 'web' => "\x{2030}"}, |
|
'#138' => {'tex' => 'S', 'web' => "\x{160}"}, # no S-caron in ps fonts. |
|
'#139' => {'tex' => '<', 'web' => '<'}, |
|
'#140' => {'tex' => '{/Text \352}', 'web' => "\x{152}"}, |
|
'#145' => {'tex' => '\140', 'web' => "\x{2018}"}, |
|
'#146' => {'tex' => '\47', 'web' => "\x{2019}"}, |
|
'#147' => {'tex' => '{/Text \252}', 'web' => "\x{201c}"}, |
|
'#148' => {'tex' => '{/Text \315}', 'web' => '\\"'}, |
|
'#149' => {'tex' => '{/Symbol \267}', 'web' => "\x{2022}"}, |
|
'#150' => {'tex' => '{/Text \55}', 'web' => "\x{2013}"}, #Untested here en dash |
|
'#151' => {'tex' => '{/Symbol \55}', 'web' => "\x{2014}"}, # em dash |
|
'#152' => {'tex' => '~', 'web' => '~'}, |
|
'#153' => {'tex' => '{/Text \324}', 'web' => "\x{2122}"}, # trademark |
|
|
|
# Accented letters, and other furreign language glyphs. |
|
|
|
'#154' => {'tex' => 's', 'web' => "\x{161}"}, # small s-caron no ps. |
|
'#155' => {'tex' => '>', 'web' => '\76'}, # > |
|
'#156' => {'tex' => '{/Text \372}', 'web' => "\x{153}"}, # oe ligature. |
|
'#159', => {'tex' => 'Y', 'web' => "\x{178}"}, # Y-umlaut - can't print |
|
'(nbsp|#160)' => {'tex' => ' ', 'web' => ' '}, # non breaking space. |
|
'(iexcl|#161)' => {'tex' => '{/Text \241}', 'web' => "\x{a1}"}, # inverted ! |
|
'(cent|#162)' => {'tex' => '{/Text \242}', 'web' => "\x{a2}"}, # Cent currency. |
|
'(pound|#163}' => {'tex' => '{/Text \243}', 'web' => "\x{a3}"}, # GB Pound currency. |
|
'(curren|#164)' => {'tex' => '{/Text \250}', 'web' => "\x{a4}"}, # Generic currency symb. |
|
'(yen|#165)' => {'tex' => '{/Text \245}', 'web' => "\x{a5}"}, # Yen currency. |
|
'(brvbar|#166)' => {'tex' => '{/Symbol \174}', 'web' => "\x{a6}"}, # Broken vert bar no print. |
|
'(sect|#167)' => {'tex' => '{\247}', 'web' => "\x{a7}"}, # Section symbol. |
|
'(uml|#168)' => {'tex' => '{\250}', 'web' => "\x{a8}"}, # 'naked' umlaut. |
|
'(copy|#169)' => {'tex' => '{/Symbol \343}', 'web' => "\x{a9}"}, # Copyright symbol. |
|
'(ordf|#170)' => {'tex' => '{/Text \343}', 'web' => "\x{aa}"}, # Feminine ordinal. |
|
'(laquo|#171)' => {'tex' => '{/Text \253}', 'web' => "\x{ab}"}, # << quotes. |
|
'(not|#172)' => {'tex' => '\254', 'web' => "\x{ac}"}, # Logical not. |
|
'(shy|#173)' => {'tex' => '-', 'web' => "\x{ad}"}, # soft hyphen. |
|
'(reg|#174)' => {'tex' => '{/Symbol \342}', 'web' => "\x{ae}"}, # Registered tm. |
|
'(macr|#175)' => {'tex' => '^{-}', 'web' => "\x{af}"}, # 'naked' macron (overbar). |
|
'(deg|#176)' => {'tex' => '{/Text \312}', 'web' => "\x{b0}"}, # Degree symbo.. |
|
'(plusmn|#177)' => {'tex' => '{/Symbol \261}', 'web' => "\x{b1}"}, # +/- symbol. |
|
'(sup2|#178)' => {'tex' => '^2', 'web' => "\x{b2}"}, # Superscript 2. |
|
'(sup3|#179)' => {'tex' => '^3', 'web' => "\x{b3}"}, # Superscript 3. |
|
'(acute|#180)' => {'tex' => '{/Text \302}', 'web' => "\x{b4}"}, # 'naked' acute accent. |
|
'(micro|#181)' => {'tex' => '{/Symbol \155}', 'web' => "\x{b5}"}, # Micro (small mu). |
|
'(para|#182)' => {'tex' => '{/Text \266}', 'web' => "\x{b6}"}, # Paragraph symbol. |
|
'(middot|#183)' => {'tex' => '^.', 'web' => "\x{b7}"}, # middle dot (maybe text 267 is better)? |
|
'(cedil|#184)' => {'tex' => '\233', 'web' => "\x{b8}"}, # 'naked' cedilla. |
|
'(sup1|#185)' => {'tex' => '^1', 'web' => "\x{b9}"}, # superscript 1. |
|
'(ordm|#186)' => {'tex' => '\353', 'web' => "\x{ba}"}, # masculine ordinal. |
|
'(raquo|#187)', => {'tex' => '\273', 'web' => "\x{bb}"}, # Right angle quotes. |
|
'(frac14|#188)' => {'tex' => '\274', 'web' => "\x{bc}"}, # 1/4. |
|
'(frac12|#189)' => {'tex' => '\275', 'web' => "\x{bd}"}, # 1/2. |
|
'(frac34|#190)' => {'tex' => '\276', 'web' => "\x{be}"}, # 3/4 |
|
'(iquest|#191)' => {'tex' => '{/Text \277}', 'web' => "\x{bf}"}, # Inverted ? |
|
'(Agrave|#192)' => {'tex' => '\300', 'web' => "\x{c0}"}, # A Grave. |
|
'(Aacute|#193)' => {'tex' => '\301', 'web' => "\x{c1}"}, # A Acute. |
|
'(Acirc|#194)' => {'tex' => '\302', 'web' => "\x{c2}"}, # A Circumflex. |
|
'(Atilde|#195)' => {'tex' => '\303', 'web' => "\x{c3}"}, # A tilde. |
|
'(Auml|#196)' => {'tex' => '\304', 'web' => "\x{c4}"}, # A umlaut. |
|
'(Aring|#197)' => {'tex' => '\305', 'web' => "\x{c5}"}, # A ring. |
|
'(AElig|#198)' => {'tex' => '\306', 'web' => "\x{c6}"}, # AE ligature. |
|
'(Ccedil|#199)' => {'tex' => '\307', 'web' => "\x{c7}"}, # C cedilla |
|
'(Egrave|#200)' => {'tex' => '\310', 'web' => "\x{c8}"}, # E Accent grave. |
|
'(Eacute|#201)' => {'tex' => '\311', 'web' => "\x{c9}"}, # E acute accent. |
|
'(Ecirc|#202)' => {'tex' => '\312', 'web' => "\x{ca}"}, # E Circumflex. |
|
'(Euml|#203)' => {'tex' => '\313', 'web' => "\x{cb}"}, # E umlaut. |
|
'(Igrave|#204)' => {'tex' => '\314', 'web' => "\x{cc}"}, # I grave accent. |
|
'(Iacute|#205)' => {'tex' => '\315', 'web' => "\x{cd}"}, # I acute accent. |
|
'(Icirc|#206)' => {'tex' => '\316', 'web' => "\x{ce}"}, # I circumflex. |
|
'(Iuml|#207)' => {'tex' => '\317', 'web' => "\x{cf}"}, # I umlaut. |
|
'(ETH|#208)' => {'tex' => '\320', 'web' => "\x{d0}"}, # Icelandic Cap eth. |
|
'(Ntilde|#209)' => {'tex' => '\321', 'web' => "\x{d1}"}, # Ntilde (enyan). |
|
'(Ograve|#210)' => {'tex' => '\322', 'web' => "\x{d2}"}, # O accent grave. |
|
'(Oacute|#211)' => {'tex' => '\323', 'web' => "\x{d3}"}, # O accent acute. |
|
'(Ocirc|#212)' => {'tex' => '\324', 'web' => "\x{d4}"}, # O circumflex. |
|
'(Otilde|#213)' => {'tex' => '\325', 'web' => "\x{d5}"}, # O tilde. |
|
'(Ouml|#214)' => {'tex' => '\326', 'web' => "\x{d6}"}, # O umlaut. |
|
'(times|#215)' => {'tex' => '\327', 'web' => "\x{d7}"}, # Times symbol. |
|
'(Oslash|#216)' => {'tex' => '\330', 'web' => "\x{d8}"}, # O slash. |
|
'(Ugrave|#217)' => {'tex' => '\331', 'web' => "\x{d9}"}, # U accent grave. |
|
'(Uacute|#218)' => {'tex' => '\332', 'web' => "\x{da}"}, # U accent acute. |
|
'(Ucirc|#219)' => {'tex' => '\333', 'web' => "\x{db}"}, # U circumflex. |
|
'(Uuml|#220)' => {'tex' => '\334', 'web' => "\x{dc}"}, # U umlaut. |
|
'(Yacute|#221)' => {'tex' => '\335', 'web' => "\x{dd}"}, # Y accent acute. |
|
'(THORN|#222)' => {'tex' => '\336', 'web' => "\x{de}"}, # Icelandic thorn. |
|
'(szlig|#223)' => {'tex' => '\337', 'web' => "\x{df}"}, # German sharfes s. |
|
'(agrave|#224)' => {'tex' => '\340', 'web' => "\x{e0}"}, # a accent grave. |
|
'(aacute|#225)' => {'tex' => '\341', 'web' => "\x{e1}"}, # a grave. |
|
'(acirc|#226)' => {'tex' => '\342', 'web' => "\x{e2}"}, # a circumflex. |
|
'(atilde|#227)' => {'tex' => '\343', 'web' => "\x{e3}"}, # a tilde. |
|
'(auml|#228)' => {'tex' => '\344', 'web' => "\x{e4}"}, # a umlaut |
|
'(aring|#229)' => {'tex' => '\345', 'web' => "\x{e5}"}, # a ring on top. |
|
'(aelig|#230)' => {'tex' => '\346', 'web' => "\x{e6}"}, # ae ligature. |
|
'{ccedil|#231)' => {'tex' => '\347', 'web' => "\x{e7}"}, # C cedilla |
|
'(egrave|#232)' => {'tex' => '\350', 'web' => "\x{e8}"}, # e accent grave. |
|
'(eacute|#233)' => {'tex' => '\351', 'web' => "\x{e9}"}, # e accent acute. |
|
'(ecirc|#234)' => {'tex' => '\352', 'web' => "\x{ea}" }, # e circumflex. |
|
'(euml|#235)' => {'tex' => '\353', 'web' => "\x{eb}"}, # e umlaut. |
|
'(igrave|#236)' => {'tex' => '\354', 'web' => "\x{ec}"}, # i grave. |
|
'(iacute|#237}' => {'tex' => '\355', 'web' => "\x{ed}"}, # i acute. |
|
'(icirc|#238}' => {'tex' => '\356', 'web' => "\x{ee}"}, # i circumflex. |
|
'(iuml|#239)' => {'tex' => '\357', 'web' => "\x{ef}"}, # i umlaut. |
|
'(eth|#240)' => {'tex' => '\360', 'web' => "\x{f0}"}, # Icelandic eth. |
|
'(ntilde|#241)' => {'tex' => '\361', 'web' => "\x{f1}"}, # n tilde. |
|
'(ograve|#242)' => {'tex' => '\362', 'web' => "\x{f2}"}, # o grave. |
|
'(oacute|#243)' => {'tex' => '\363', 'web' => "\x{f3}"}, # o acute. |
|
'(ocirc'|#244)' => {'tex' => '\364', 'web' => "\x{f4}"}, # o circumflex. |
|
'(otilde|#245)' => {'tex' => '\365', 'web' => "\x{f5}"}, # o tilde. |
|
'(ouml|#246)' => {'tex' => '\366', 'web' => "\x{f6}"}, # o umlaut. |
|
'(divide|#247)' => {'tex' => '\367', 'web' => "\x{f7}"}, # division symbol |
|
'(oslash|#248)' => {'tex' => '\370', 'web' => "\x{f8}"}, # o slashed. |
|
'(ugrave|#249)' => {'tex' => '\371', 'web' => "\x{f9}"}, # u accent grave. |
|
'(uacute|#250)' => {'tex' => '\372', 'web' => "\x{fa}"}, # u acute. |
|
'(ucirc|#251)' => {'tex' => '\373', 'web' => "\x{fb}"}, # u circumflex. |
|
'(uuml|#252)' => {'tex' => '\374', 'web' => "\x{fc}"}, # u umlaut. |
|
'(yacute|#253)' => {'tex' => '\375', 'web' => "\x{fd}"}, # y acute accent. |
|
'(thorn|#254)' => {'tex' => '\376', 'web' => "\x{fe}"}, # small thorn (icelandic). |
|
'(yuml|#255)' => {'tex' => '\377', 'web' => "\x{ff}"}, # y umlaut. |
|
|
|
# Latin extended A entities: |
|
|
|
'(OElig|#338)' => {'tex' => '{/Text \352}', 'web' => "\x{152}"}, # OE ligature. |
|
'(oelig|#339)' => {'tex' => '{/Text \372}', 'web' => "\x{153}"}, # oe ligature. |
|
'(Scaron|#352)' => {'tex' => 'S', 'web' => "\x{160}"}, # 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. |
|
|
|
# Latin extended B. |
|
|
|
'(fnof|#402)' => {'tex' =>'{/Symbol 246}', 'web' => "\x{192}"}, # f with little hook. |
|
|
|
# Standalone accents: |
|
|
|
'(circ|#710)' => {'tex' => '^', 'web' => '^'}, # circumflex. |
|
'(tilde|#732)' => {'tex' => '~', 'web' => '~'}, # tilde. |
|
|
|
# General punctuation. We're not able to make a distinction between |
|
# the various length spacings in the print version. (e.g. en/em/thin). |
|
# the various joiners will be empty strings in the print version too. |
|
|
|
|
|
'(ensp|#8194)' => {'tex' => ' ', 'web' => "\x{2002}"}, # en space. |
|
'(emsp|#8195)' => {'tex' => ' ', 'web' => "\x{2003}"}, # em space. |
|
'(thinsp|#8201)' => {'tex' => ' ', 'web' => "\x{2009}"}, # thin space. |
|
'(zwnj|#8204)' => {'tex' => '', 'web' => "\x{200c}"}, # Zero width non joiner. |
|
'(zwj|#8205)' => {'tex' => '', 'web' => "\x{200d}"}, # Zero width joiner. |
|
'(lrm|#8206)' => {'tex' => '', 'web' => "\x{200e}"}, # Left to right mark |
|
'(rlm|#8207)' => {'tex' => '', 'web' => "\x{200f}"}, # right to left mark. |
|
'(ndash|#8211)' => {'tex' => '{/Text \55}', 'web' => "\x{2013}"}, # en dash. |
|
'(mdash|#8212)' => {'tex' => '{/Symbol \55}', 'web' => "\x{2014}"}, # em dash. |
|
'(lsquo|#8216)' => {'tex' => '{/Text \140}', 'web' => "\x{2018}"}, # Left single quote. |
|
'(rsquo|#8217)' => {'tex' => '{/Symbol \242}', 'web' => "\x{2019}"}, # Right single quote. |
|
'(sbquo|#8218)' => {'tex' => ',', 'web' => "\x{201a}"}, # Single low-9 quote. |
|
'(ldquo|#8220)' => {'tex' => '{/Text \252}', 'web' => "\x{201c}"}, # Left double quote. |
|
'(rdquo|#8221)' => {'tex' => '{/Text \272}', 'web' => "\x{201d}"}, # Right double quote. |
|
'(bdquo|#8222)' => {'tex' => '{/Text \271}', 'web' => "\x{201e}"}, # Double low-9 quote. |
|
'(dagger|#8224)' => {'tex' => '{/Text \262}', 'web' => "\x{2020}"}, # Is this a dagger I see before me now? |
|
'(Dagger|#8225)' => {'tex' => '{/Text \263}', 'web' => "\x{2021}"}, # it's handle pointing towards my heart? |
|
'(bull|#8226)' => {'tex' => '\267', 'web' => "\x{2022}"}, # Bullet. |
|
'(hellep|#8230)' => {'tex' => '{/Text \274}', 'web' => "\x{2026}"}, # Ellipses. |
|
'(permil|#8240)' => {'tex' => '{/Text \275}', 'web' => "\x{2031}"}, # Per mille. |
|
'(prime|#8242)' => {'tex' => '\264', 'web' => "\x{2032}"}, # Prime. |
|
'(Prime|#8243)' => {'tex' => '{/Symbol \262}', 'web' => "\x{2033}"}, # double prime. |
|
'(lsaquo|#8249)' => {'tex' => '{/Text \254}', 'web' => "\x{2039}"}, # < quote. |
|
'(rsaquo|#8250)' => {'tex' => '{/Text \255}', 'web' => "\x{2040}"}, # > quote. |
|
'(oline|#8254)' => {'tex' => '{/Symbol \140}', 'web' => "\x{203e}"}, # Overline. |
|
'(frasl|#8260)' => {'tex' => '/', 'web' => "\x{2044}"}, # Fraction slash. |
|
'(euro|#8364)' => {'tex' => '{/Symbol \240}', 'web' => "\x{20a0}"}, # Euro currency. |
|
|
|
# Letter like symbols. |
|
|
|
'(weierp|#8472)' => {'tex' => '{/Symbol \303}', 'web' => "\x{2118}"}, # Power set symbol |
|
'(image|#8465)' => {'tex' => '{/Symbol \301}', 'web' => "\x{2111}"}, # Imaginary part |
|
'(real|#8476)' => {'tex' => '{/Symbol \302}', 'web' => "\x{211c}"}, # Real part. |
|
'(trade|#8482)' => {'tex' => '{/Symbol \344}', 'web' => "\x{2122}"}, # trademark symbol. |
|
'(alefsym|#8501)' => {'tex' => '{/Symbol \300}', 'web' => "\x{2135}"}, # Hebrew alef. |
|
|
|
# Arrows of various types and directions. |
|
'(larr|#8592)' => {'tex' => '{/Symbol \254}', 'web' => "\x{2190}"}, # <-- |
|
'(uarr|#8593}' => {'tex' => '{/Symbol \255}', 'web' => "\x{2191}"}, # up arrow. |
|
'(rarr|#8594)' => {'tex' => '{/Symbol \256}', 'web' => "\x{2192}"}, # --> |
|
'(darr|#8595)' => {'tex' => '{/Symbol \257}', 'web' => "\x{2193}"}, # down arrow. |
|
'(harr|#8596)' => {'tex' => '{/Symbol \253}', 'web' => "\x{2194}"}, # <--> |
|
'(crarr|#8629)' => {'tex' => '{/Symbol \277}', 'web' => "\x{21b5}"}, # corner arrow down and right. |
|
'(lArr|#8656)' => {'tex' => '{/Symbol \334}', 'web' => "\x{21d0}"}, # <== |
|
'(uArr|#8657)' => {'tex' => '{/Symbol \335}', 'web' => "\x{21d1}"}, # Up double arrow. |
|
'(rArr|#8658)' => {'tex' => '{/Symbol \336}', 'web' => "\x{21d2}"}, # ==> |
|
'(dArr|#8659)' => {'tex' => '{/Symbol \337}', 'web' => "\x{21d3}"}, # Down double arrow. |
|
'(hArr|#8660)' => {'tex' => '{/Symbol \333}', 'web' => "\x{21d4}"}, # <==> |
|
|
|
# Mathematical operators. For some of these we do the best we can in printing. |
|
|
|
'(forall|#8704)' => {'tex' => '{/Symbol \42}', 'web' => "\x{2200}"}, # For all. |
|
'(part|#8706)' => {'tex' => '{/Symbol d}', 'web' => "\x{2202}"}, # partial derivative |
|
'(exist|#8707)' => {'tex' => '{/Symbol \44}', 'web' => "\x{2203}"}, # There exists. |
|
'(empty|#8709)' => {'tex' => '{/Symbol \306}', 'web' => "\x{2205}"}, # Null set. |
|
'(nabla|#8711)' => {'tex' => '{/Symbol \321}', 'web' => "\x{2207}"}, # Gradient e.g. |
|
'(isin|#8712)' => {'tex' => '{/Symbol \316}', 'web' => "\x{2208}"}, # Element of the set. |
|
'(ni|#8715)' => {'tex' => '{/Symbol \47}', 'web' => "\x{220b}"}, # Contains as a member |
|
'(prod|#8719)' => {'tex' => '{/Symbol \325}', 'web' => "\x{220f}"}, # Product |
|
'(sum|#8721)' => {'tex' => '{/Symbol \345}', 'web' => "\x{2211}"}, # Sum of. |
|
'(minus|#8722)' => {'tex' => '-', 'web' => "\x{2212}"}, # - sign. |
|
'(lowast|#8727)' => {'tex' => '*', 'web' => "\x{2217}"}, # * |
|
'(radic|#8730)' => {'tex' => '{/Symbol \326}', 'web' => "\x{221a}"}, # Square root. |
|
'(prop|#8733)' => {'tex' => '{/Symbol \265}', 'web' => "\x{221d}"}, # Proportional to. |
|
'(infin|#8734)' => {'tex' => '{/Symbol \245}', 'web' => "\x{221e}"}, # Infinity. |
|
'(ang|#8736)' => {'tex' => '{/Symbol \320}', 'web' => "\x{2220}"}, # Angle . |
|
'(and|#8743)' => {'tex' => '{/Symbol \331}', 'web' => "\x{2227}"}, # Logical and. |
|
'(or|#8744)' => {'tex' => '{/Symbol \332}', 'web' => "\x{2228}"}, # Logical or. |
|
'(cap|#8745)' => {'tex' => '{/Symbol \307}', 'web' => "\x{2229}"}, # Set intersection. |
|
'(cup|#8746)' => {'tex' => '{/Symbol \310}', 'web' => "\x{222a}"}, # Set union. |
|
'(int|8747)' => {'tex' => '{/Symbol \362}', 'web' => "\x{222b}"}, # Integral. |
|
'(there4|#8756)' => {'tex' => '{/Symbol \134}', 'web' => "\x{2234}"}, # Therefore triple dots. |
|
'(sim|#8764)' => {'tex' => '~', 'web' => "\x{223c}"}, # Simlar to. |
|
'(cong|#8773)' => {'tex' => '{/Symbol \100}', 'web' => "\x{2245}"}, # Congruent to/with. |
|
|
|
|
|
); |
|
|
|
|
sub replace_entities { |
sub replace_entities { |
my ($target,$text) = @_; |
my ($target,$text) = @_; |
$text =~ s{([_^~\{\}]|\\\\)}{\\\\$1}g; |
$text =~ s{([_^~\{\}]|\\\\)}{\\\\$1}g; |
while (my ($re, $replace) = each(%lookup)) { |
while (my ($re, $replace) = each(%lookup)) { |
|
my $repl = $replace->{$target}; |
$text =~ s/&$re;/$replace->{$target}/g; |
$text =~ s/&$re;/$replace->{$target}/g; |
} |
} |
$text =~ s{(&)}{\\\\$1}g; |
$text =~ s{(&)}{\\\\$1}g; |
Line 1369 sub write_gnuplot_file {
|
Line 1673 sub write_gnuplot_file {
|
my $label; |
my $label; |
foreach $label (@labels) { |
foreach $label (@labels) { |
$gnuplot_input .= 'set label "'.$label->{'text'}.'" at '. |
$gnuplot_input .= 'set label "'.$label->{'text'}.'" at '. |
$label->{'xpos'}.','.$label->{'ypos'}.' '.$label->{'justify'}; |
$label->{'xpos'}.','.$label->{'ypos'}; |
|
if ($label->{'rotate'} ne '') { |
|
$gnuplot_input .= ' rotate by '.$label->{'rotate'}; |
|
} |
|
$gnuplot_input .= ' '.$label->{'justify'}; |
|
|
if ($target eq 'tex') { |
if ($target eq 'tex') { |
$gnuplot_input .=' font "'.$font_properties->{'printname'}.','.$fontsize.'pt"' ; |
$gnuplot_input .=' font "'.$font_properties->{'printname'}.','.$fontsize.'pt"' ; |
} |
} |
Line 1403 sub write_gnuplot_file {
|
Line 1712 sub write_gnuplot_file {
|
$gnuplot_input.=' pointsize '.$curve->{'pointsize'}; |
$gnuplot_input.=' pointsize '.$curve->{'pointsize'}; |
} elsif ($curve->{'linestyle'} eq 'filledcurves') { |
} elsif ($curve->{'linestyle'} eq 'filledcurves') { |
$gnuplot_input.= ' '.$curve->{'limit'}; |
$gnuplot_input.= ' '.$curve->{'limit'}; |
|
} elsif ($curve->{'linetype'} ne '' && |
|
$curve->{'linestyle'} eq 'lines') { |
|
$gnuplot_input.= ' linetype '; |
|
$gnuplot_input.= $linetypes{$curve->{'linetype'}}; |
|
$gnuplot_input.= ' linecolor rgb "'; |
|
# convert color from xaaaaaa to #aaaaaa |
|
$curve->{'color'} =~ s/^x/#/; |
|
$gnuplot_input.= $curve->{'color'}.'"'; |
} |
} |
$gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; |
$gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; |
|
|
Line 1439 sub write_gnuplot_file {
|
Line 1756 sub write_gnuplot_file {
|
$gnuplot_input.=' pointsize '.$curve->{'pointsize'}; |
$gnuplot_input.=' pointsize '.$curve->{'pointsize'}; |
} elsif ($curve->{'linestyle'} eq 'filledcurves') { |
} elsif ($curve->{'linestyle'} eq 'filledcurves') { |
$gnuplot_input.= ' '.$curve->{'limit'}; |
$gnuplot_input.= ' '.$curve->{'limit'}; |
|
} elsif ($curve->{'linetype'} ne '' && |
|
$curve->{'linestyle'} eq 'lines') { |
|
$gnuplot_input.= ' linetype '; |
|
$gnuplot_input.= $linetypes{$curve->{'linetype'}}; |
|
$gnuplot_input.= ' linecolor rgb "'; |
|
# convert color from xaaaaaa to #aaaaaa |
|
$curve->{'color'} =~ s/^x/#/; |
|
$gnuplot_input.= $curve->{'color'}.'"'; |
} |
} |
$gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; |
$gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; |
} |
} |
} |
} |
# Write the output to a file. |
# Write the output to a file. |