aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v0/texpdf.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v0/texpdf.rb')
-rw-r--r--lib/sisu/v0/texpdf.rb51
1 files changed, 33 insertions, 18 deletions
diff --git a/lib/sisu/v0/texpdf.rb b/lib/sisu/v0/texpdf.rb
index 8d951dfb..885643cf 100644
--- a/lib/sisu/v0/texpdf.rb
+++ b/lib/sisu/v0/texpdf.rb
@@ -72,7 +72,7 @@ module SiSU_TeX
@@tabular="{tabular}"
@@column_instruct=@@squigle_close=@@tex_line_mode=@@tex_word_mode=@@line_mode=''
@@tex_debug_counter=@@table_pagebreak_counter=@@tex_footnote_call_counter=@@tex_table_flag=@@tex_counter=@@tex_column=@@tex_columns=@@tex_columns=@@counting=0
- @@tex_pattern_margin_number=/\\\\begin\\\{tiny\\\}~\\\\end\\\{tiny\\\}\\\{\\\\marginpar.+?\s+/
+ @@tex_pattern_margin_number=/\\\\begin\\\{tiny\\\}\\\\hspace\\\{0mm\\\}\\\\end\\\{tiny\\\}\\\{\\\\marginpar.+?\s+/
#@@tex_pattern_margin_number="\\\\marginpar.+?\s+"
@@n=@@tableheader=@@rights=nil
@@date ||=SiSU_Env::Info_date.new
@@ -344,6 +344,7 @@ module SiSU_TeX
# DEBUG 2003w16 this is a kludge, because i could not get parameters
# from param, Sort out ... revert to more elegant solution
# even more of a kludge as had to insert newlines where code is used not satisfactory, think about
+ para='' if para =~/#{Mx[:lv_o]}\d+:.*?#{Mx[:lv_c]}.+?#{Mx[:pa_non_object_dummy_heading]}/
para=if para =~/#{Mx[:br_nl]}|\n/; para.split(/#{Mx[:br_nl]}|\n/)
else para
end
@@ -382,8 +383,10 @@ module SiSU_TeX
@md.papersize_array.each do |ps|
@@tableheader={ ps => { :p => 0, :l => 0 }}
para,para_p=@para.dup,@para.dup #visit
- format_l=SiSU_TeX_Pdf::Format_text_object.new(md,para,ps)
- format_p=SiSU_TeX_Pdf::Format_text_object.new(md,para_p,ps)
+ txt_obj={:txt =>para,:paper_size =>ps}
+ format_l=SiSU_TeX_Pdf::Format_text_object.new(md,txt_obj)
+ txt_obj={:txt =>para_p,:paper_size =>ps}
+ format_p=SiSU_TeX_Pdf::Format_text_object.new(md,txt_obj)
@block[ps]={
:l => format_l.longtable_landscape,
:p => format_p.longtable_portrait
@@ -411,7 +414,8 @@ module SiSU_TeX
end
def markup_common(para)
tex_f=nil
- mono=SiSU_TeX_Pdf::Format_text_object.new(@md,para)
+ txt_obj={:txt =>para}
+ mono=SiSU_TeX_Pdf::Format_text_object.new(@md,txt_obj)
if para =~/#{Mx[:gr_o]}(?:code|alt|verse|group)#{Mx[:gr_c]}/ \
or @@flag_alt
if para =~/#{Mx[:gr_o]}(?:code|alt|verse|group)#{Mx[:gr_c]}/
@@ -435,8 +439,9 @@ module SiSU_TeX
end
elsif x =~/code/; @@flag_alt,@@flag_code=true,true
elsif @@flag_alt
- if para =~ /\}(?:https?|file|ftp)/m
- para=SiSU_TeX_Pdf::Format_text_object.new(@md,para,'a4').http
+ if para =~ /(?:https?|file|ftp)/m
+ txt_obj={:txt =>para,:paper_size =>'a4'}
+ para=SiSU_TeX_Pdf::Format_text_object.new(@md,txt_obj).http
end
@group_collect << para #<< "\n\n"
end
@@ -485,7 +490,7 @@ module SiSU_TeX
when /^#{Mx[:pa_o]}:i([1-9])#{Mx[:pa_c]}/; mono.indent($1)
when /<:=/; mono.symbol_graphic #watch
when /^\s*<:image\s+/; mono.image
- when /\}image/; mono.png
+ when /#{Mx[:lnk_c]}image/; mono.png
else
para.strip!
para=enclose(para) unless para =~/^$/
@@ -499,13 +504,15 @@ module SiSU_TeX
end
para
end
- if para =~ /\}(?:https?|file|ftp)/
+ if para =~ /(?:https?|file|ftp)/
para=if para !~/\.(?:png|jpg|gif)/
- SiSU_TeX_Pdf::Format_text_object.new(@md,para,'a4').http
+ txt_obj={:txt =>para,:paper_size =>'a4'}
+ SiSU_TeX_Pdf::Format_text_object.new(@md,txt_obj).http
else
@block={}
@md.papersize_array.each do |ps|
- image=SiSU_TeX_Pdf::Format_text_object.new(@md,para,ps).http
+ txt_obj={:txt =>para,:paper_size =>ps}
+ image=SiSU_TeX_Pdf::Format_text_object.new(@md,txt_obj).http
@block[ps]={
:l => image,
:p => image
@@ -524,16 +531,21 @@ module SiSU_TeX
title=@md.title.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}|#{Mx[:br_paragraph]}|\\\\/,' - ') #no line splitting in heading neither html nor latex
subtitle=@md.subtitle.gsub(/#{Mx[:br_line]}|#{Mx[:br_nl]}|#{Mx[:br_paragraph]}|\\\\/,' - ') if @md.subtitle #no line splitting in heading neither html nor latex
@md.papersize_array.each do |ps|
- orient_portrait=SiSU_TeX_Pdf::Format_head.new(@md,ps,'portrait',"#{home}: - #{title} #{subtitle}")
- orient_landscape=SiSU_TeX_Pdf::Format_head.new(@md,ps,'landscape',"#{home}: - #{title} #{subtitle}")
+ txt_obj={:txt =>"#{home}: - #{title} #{subtitle}",:paper_size =>ps,:orientation =>'portrait'}
+ orient_portrait=SiSU_TeX_Pdf::Format_head.new(@md,txt_obj)
+ txt_obj={:txt =>"#{home}: - #{title} #{subtitle}",:paper_size =>ps,:orientation =>'landscape'}
+ orient_landscape=SiSU_TeX_Pdf::Format_head.new(@md,txt_obj)
@@tex_head[ps][:p]=orient_portrait.document_head_with_orientation
@@tex_head[ps][:l]=orient_landscape.document_head_with_orientation
end
@tex_file <<<<WOK
#{@tex.header}#{@tex.footer}
-\\tolerance=500
+\\tolerance=300
+\\clubpenalty=300
+\\widowpenalty=300
\\makeatother
\\makeatother
+% \\sloppy
\\begin{document}
WOK
sisu_rc_footnote=if @md.sc_info; @tex.doc_sc_info_footnote_full
@@ -544,8 +556,9 @@ WOK
#end
@copymark='' #check and remove as now is superflous
x={}
- x[:l]=SiSU_TeX_Pdf::Format_text_object.new(@md,@md.title,@md.subtitle).title_landscape
- x[:p]=SiSU_TeX_Pdf::Format_text_object.new(@md,@md.title,@md.subtitle).title_portrait
+ txt_obj={:title =>@md.title,:subtitle =>@md.subtitle}
+ x[:l]=SiSU_TeX_Pdf::Format_text_object.new(@md,txt_obj).title_landscape
+ x[:p]=SiSU_TeX_Pdf::Format_text_object.new(@md,txt_obj).title_portrait
@tex_file << x
x=nil
if @md.dc_creator
@@ -640,12 +653,12 @@ WOK
s_lnk.gsub!(/\s*(#{Mx[:br_line]}|#{Mx[:br_nl]}|#{Mx[:br_paragraph]})\s*/,' \\\\\\\\ ')
s_lnk.gsub!(/(?:\\)*([$&~%_#}{^])/,"\\\\\\1") #latex special chars
if url !~/^\.(\.)?\//
- s_lnk_url=%<\\begin{scriptsize}\\href{#{url}}{#{url}}\\end{scriptsize}> # note this bit of dereferencing magic
+ s_lnk_url=%<\\begin{scriptsize}\\url{#{url}}\\end{scriptsize}> # note this bit of dereferencing magic
else
url.gsub!(/\.\.\//,'')
s_lnk_url="(#{@tex.site}) \\\\\n" + ' ' +
"\\begin{scriptsize}" +
- %<\\href\{#{@vz.url_root_http}/#{url}\}\{#{@vz.url_root_http}/#{url}\}> + # note this bit of dereferencing magic
+ %<\\url\{#{@vz.url_root_http}/#{url}\}> + # note this bit of dereferencing magic
"\\end{scriptsize}"
end
@tex_file << " #{s_lnk} \\\\\n #{s_lnk_url} \n" unless @md.doc_skin =~/skin_mail/
@@ -680,7 +693,9 @@ WOK
paranum=if ocn; para[m,2]
else ''
end
- do_duo=SiSU_TeX_Pdf::Format_text_object.new(@md,parablock,paranum)
+ paranum = '' if paranum.to_i == 0
+ txt_obj={:txt =>parablock,:ocn =>paranum}
+ do_duo=SiSU_TeX_Pdf::Format_text_object.new(@md,txt_obj)
para=do_duo.para_num if parablock
elsif para =~/^#{Mx[:id_o]}~\d+;(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ #2005 this is added for tables, rationalise
m=/#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/m