diff options
Diffstat (limited to 'lib/sisu/v0/texpdf_format.rb')
| -rw-r--r-- | lib/sisu/v0/texpdf_format.rb | 95 | 
1 files changed, 63 insertions, 32 deletions
| diff --git a/lib/sisu/v0/texpdf_format.rb b/lib/sisu/v0/texpdf_format.rb index f7d2177a..9506e17b 100644 --- a/lib/sisu/v0/texpdf_format.rb +++ b/lib/sisu/v0/texpdf_format.rb @@ -64,8 +64,8 @@ module SiSU_TeX_Pdf    include SiSU_Viz    class Use_TeX      attr_accessor :url,:txt,:date -    def initialize(md,orientation='') -      @md,@orientation=md,orientation +    def initialize(md) +      @md=md        @vz=SiSU_Env::Get_init.instance.skin        @date=SiSU_Env::Info_date.new # #{@date.year}        @copymark='{\\begin{footnotesize}\\raisebox{1ex}{\\copyright}\\end{footnotesize}}' @@ -122,8 +122,8 @@ module SiSU_TeX_Pdf        "Contact Details for Original Promulgating Authority"      end      #BOOK standard dimensions - 229x156 -    def newpage -      case @orientation +    def newpage(orientation) +      case orientation        when /landscape/ # using longtable latex package  <<WOK  \\clearpage @@ -268,7 +268,7 @@ WOK      @@tex_backslash="\\\\"      @@tilde='\\\\\\~' #?? debug crazy      @@tex_pattern_margin_number="\\\\begin\\\{tiny\\\}~\\\\end\\\{tiny\\\}\\\{\\\\marginpar.+?\s+" -    @@tableheader=0 +    @@tableheader={ :p => 0, :l => 0 }      @@sys=SiSU_Env::System_call.new      @@flag_code=false      @@dp=nil @@ -298,12 +298,12 @@ WOK          else             @tx.a4.landscape.w     #default currently A4          end          textwidth=(tw.to_i/2) - 24 -        @@tableheader=1 if @string =~/<!Th/ -        @w=cols_width.split(/;\s*/) +        @@tableheader[:l]=1 if @string =~/<!Th/ +        w=cols_width.split(/;\s*/)          @@number_of_cols=no_of_cols          @colW=[]          @colW << '{' -        @w.each  do |x| +        w.each  do |x|            x.strip!            x=(x.to_i * textwidth)/100            col_w=x.to_s # x.gsub(/.+/,'l\|') #unless x.nil? @@ -319,14 +319,14 @@ WOK          @string.gsub!(/<!TZ!>/," #@end_table\n\\end{tiny}")        end        @string.gsub!(/<!¡/,'') -      if @@tableheader == 1 +      if @@tableheader[:l] == 1          if @string =~/¡\d+?¡(.+?)(?:¡|!)/            tablefoot=@string[/\<!f(.+?)!\>/,1]            @string.gsub!(/\<!f(.+?)!\>/,'')            @string.gsub!(/¡\d+?¡(.+?)(?:¡|!)/,'\bfseries \1&')            @string.gsub!(/&>\s*$/," #@row_break \\hline\\endhead #@row_break")            @string="#@string \\multicolumn{#{@@number_of_cols}}{l}{\\tiny #{tablefoot}} \\\\ \\hline\n\\endfoot\n\\hline\n" if tablefoot -          @@tableheader,@@number_of_cols=0,0 +          @@tableheader[:l],@@number_of_cols=0,0          end        else          if @string =~/¡\d+?¡(.+?)(?:¡|!)/ @@ -334,7 +334,9 @@ WOK            @string.gsub!(/&>\s*$/," #@row_break")          end        end -      @string="<~#{ocn}>" + @string +      @string=if ocn; "<~#{ocn}>" + @string +      else @string +      end      end      def longtable_portrait        @end_table='\end{longtable}' @@ -350,12 +352,12 @@ WOK          else             @tx.a4.portrait.w     #default currently A4          end          textwidth=tw.to_i - 20 -        @@tableheader=1 if @string =~/<!Th/ -        @w=cols_width.split(/;\s*/) +        @@tableheader[:p]=1 if @string =~/<!Th/ +        w=cols_width.split(/;\s*/)          @@number_of_cols=no_of_cols          @colW=[]          @colW << '{' -        @w.each  do |x| +        w.each  do |x|            x.strip!            x=(x.to_i * textwidth)/100            #x=(x.to_i/100.0 * 160) @@ -372,14 +374,14 @@ WOK          @string.gsub!(/<!TZ!>/," #@end_table\n\\end{tiny}")        end        @string.gsub!(/<!¡/,'') -      if @@tableheader == 1 +      if @@tableheader[:p] == 1          if @string =~/¡\d+?¡(.+?)(?:¡|!)/            tablefoot=@string[/\<!f(.+?)!\>/,1]            @string.gsub!(/\<!f(.+?)!\>/,'')            @string.gsub!(/¡\d+?¡(.+?)(?:¡|!)/,'\bfseries \1&')            @string.gsub!(/&>\s*$/," #@row_break \\hline\\endhead #@row_break")            @string="#@string \\multicolumn{#{@@number_of_cols}}{l}{\\tiny #{tablefoot}} \\\\ \\hline\n\\endfoot\n\\hline\n" if tablefoot -          @@tableheader,@@number_of_cols=0,0 +          @@tableheader[:p],@@number_of_cols=0,0          end        else          if @string =~/¡\d+?¡(.+?)(?:¡|!)/ @@ -387,7 +389,9 @@ WOK            @string.gsub!(/&>\s*$/," #@row_break")          end        end -      @string="<~#{ocn}>" + @string +      @string=if ocn; "<~#{ocn}>" + @string +      else @string +      end      end      def scopedtable        # some features related to headers have been incorporated in longtable that are not included yet here, @@ -799,7 +803,7 @@ WOK          @string.gsub!(/\\\{\S+\.(png|jpg|gif).+?\}(image|png)/,'') # fragile match operator\\ fragile !        end      end -    def http_word_mode(orientation='') +    def http_word_mode #(orientation='')        # clean up ! - work area, testing        dir=SiSU_Env::Info_env.new(@md.fns)        @words=[] @@ -831,16 +835,9 @@ WOK              when /a5/;     @tx.a5              else           @tx.a4              end -            width=if orientation =~/portrait/ #value is not currently passed -              width=if width.to_i > dm.portrait.img_px -                dm.portrait.img_px -              else width -              end -            else -              width=if width.to_i > dm.landscape.img_px -                dm.landscape.img_px -              else width -              end +            width=if width.to_i > dm.landscape.img_px +              dm.landscape.img_px +            else width              end              c=z[/``(.+?)''/m,1]              hsp="\n{\\color{mywhite} .}&~\n" # ~ character for hardspace @@ -887,9 +884,9 @@ WOK        @words=@words.join        @words      end -    def http(orientation) +    def http        wm=@string.dup.scan(/\\\{.+?\\\}(?:(?:https?|file|ftp):\S+|image)|\w+\s*|./m) -      @string=SiSU_TeX_Pdf::Format_text_object.new(@md,wm).http_word_mode(orientation) +      @string=SiSU_TeX_Pdf::Format_text_object.new(@md,wm).http_word_mode #(orientation)      end      def language        @lang=if @md.dc_language[:code] @@ -1000,6 +997,18 @@ WOK  \\setlength{\\marginparwidth}{#{d[:marginparwidth]}}  WOK      end +    def tex_head_paper_portrait_dvi(d) +      <<WOK +#{tex_head_info} +\\documentclass[#{d[:fontsize]},#{d[:papertype]},#{tex_head_lang},titlepage]{scrartcl}        %with titlepage +\\setlength{\\textheight}{#{d[:textheight]}mm}  \\setlength{\\textwidth}{#{d[:textwidth]}mm} +\\setlength{\\oddsidemargin}{#{d[:oddsidemargin]}}  \\setlength{\\evensidemargin}{#{d[:evensidemargin]}} +\\setlength{\\topmargin}{#{d[:topmargin]}}  \\setlength{\\headheight}{#{d[:headheight]}} +\\setlength{\\headsep}{#{d[:headsep]}} +\\setlength{\\marginparsep}{#{d[:marginparsep]}} +\\setlength{\\marginparwidth}{#{d[:marginparwidth]}} +WOK +    end      def tex_head_paper_dimensions        d={}        case @string @@ -1067,7 +1076,7 @@ WOK          tex_head_paper_landscape(tex_head_paper_dimensions)        end      end -    def tex_head_pdftex +    def tex_head_pdftex_dvi        color=case @string        when /portrait/        <<WOK @@ -1084,6 +1093,7 @@ WOK    linkcolor=myred,    % \\href{...} and \\pageref{...}  WOK        end +      if @string =~/portrait|landscape/        <<WOK  \\usepackage{url}  \\usepackage{alltt} @@ -1121,6 +1131,27 @@ WOK  \\definecolor{myblue}{rgb}{0,0,0.5}  \\definecolor{mywhite}{rgb}{1,1,1}  WOK +      elsif @string =~/dvi/ +      <<WOK +\\usepackage{url} +\\usepackage{alltt} +  #{color.strip} +  pageanchor=true, +  plainpages=true, +  pagebackref, +  bookmarks=true, +  bookmarksopen=true, +  plainpages=false, +] +{hyperref} +\\usepackage[usenames]{color} +\\definecolor{myblack}{rgb}{0,0,0} +\\definecolor{myred}{rgb}{0.75,0,0} +\\definecolor{mygreen}{rgb}{0,0.5,0} +\\definecolor{myblue}{rgb}{0,0,0.5} +\\definecolor{mywhite}{rgb}{1,1,1} +WOK +      end      end      def tex_head_misc        <<WOK @@ -1143,7 +1174,7 @@ WOK        <<WOK  #{tex_head_paper}  #{tex_head_encode} -#{tex_head_pdftex} +#{tex_head_pdftex_dvi}  #{tex_head_misc}  \\setcounter{secnumdepth}{2}  \\setcounter{tocdepth}{4} | 
